Como atualizar uma senha de usuário de banco de dados no servidor SQL 2012

Preciso de actualizar a senha de um dos utilizadores na pasta de segurança da base de dados no servidor SQL 2012. Infelizmente, não temos uma ADB interna e, consequentemente, precisamos de alguma ajuda. Disseram-me que tenho privilégios do sysadmin neste servidor SQL, mas não consigo encontrar onde actualizar a senha de um utilizador na base de dados. Quando pesquisei isto no Google, o msdn mostra-me como actualizar uma autenticação no servidor SQL 2012, mas este utilizador não está listado na pasta Security\Logins neste servidor mas este Utilizador está apenas sob a pasta database\Security\Users.

eu tinha tentado o comando {[[0]} mas só consegui este erro:

Msg 15151, Nível 16, Estado 1, Linha 2

não pode alterar o login 'ATM', porque ele não existe ou você não tem permissão.

qualquer ajuda / direcção seria apreciada. Obrigado.

Author: billinkc, 2013-11-05

1 answers

Esta é a diferença entre logins eutilizadores e como se relacionam entre si:

  • Logins-Instance level principals that allow an entity to connect to the SQL Server instance. Não concedem, pela sua natureza, qualquer acesso a bases de dados sobre a instância. A exceção a isso é um login com os direitos do sysadmin pode usar um banco de dados porque eles são o sysadmin, mas por causa das permissões de nível do sysadmin.
  • ([11]}utilizadores-princípios de Base de dados que permitem que uma entidade se conecte a um banco de dados do servidor SQL. Os usuários são associados com logins via SIDs, criando uma relação entre os dois e permitindo um login para se conectar à instância e, em seguida, usar o usuário associado para se conectar à base de dados.

O que normalmente acontece com as logins autenticadas SQL e os usuários de banco de dados em uma restauração é que o SIDS estará fora de sincronia ou um login não existirá para um usuário na base de dados, quebrando assim a relação. Relacao deve ser reparado antes que você possa se conectar à base de dados usando esse login, porque aos olhos do servidor SQL esses principals não estão mais conectados. Se o login não existir, você terá que primeiro criá-lo de modo a associá-lo ao utilizador:

--Windows login (Active Directory pass through)
CREATE LOGIN [DOMAIN\foo] FROM WINDOWS;

--SQL Authenticated 
CREATE LOGIN [foo] WITH PASSWORD='5+r0ngP@55w0rd';

Assim que o utilizador existir, associe-o ao utilizador:

ALTER USER [foo] WITH LOGIN=[foo]

Você pode usar a seguinte consulta no contexto da sua base de dados para verificar se há órfãos:

select
    dp.name [user_name]
    ,dp.type_desc [user_type]
    ,isnull(sp.name,'Orhphaned!') [login_name]
    ,sp.type_desc [login_type]
from   
    sys.database_principals dp
    left join sys.server_principals sp on (dp.sid = sp.sid)
where
    dp.type in ('S','U','G')
    and dp.principal_id >4
order by sp.name
 11
Author: Mike Fal, 2013-11-05 19:46:16