Compartilhar via


Solução de problemas de usuários órfãos (SQL Server)

Para fazer logon em uma instância do Microsoft SQL Server, uma entidade de segurança deve ter um logon SQL Server válido. Esse logon é usado no processo de autenticação que verifica se a entidade de segurança tem permissão para se conectar à instância do SQL Server. Os logons SQL Server em uma instância de servidor são visíveis na exibição de catálogo sys.server_principals e na exibição de compatibilidade sys.syslogins.

SQL Server logons acessam bancos de dados individuais usando um usuário de banco de dados mapeado para o logon do SQL Server. Há duas exceções a essa regra:

  • A conta Convidado.

    Essa é uma conta que, quando habilitada no banco de dados, habilita SQL Server logons que não são mapeados para um usuário de banco de dados para inserir o banco de dados como o usuário convidado.

  • Associação de grupo do Microsoft Windows.

    Um logon do SQL Server criado a partir de um usuário do Windows poderá acessar um banco de dados se esse usuário for membro de um grupo do Windows que também seja um usuário no banco de dados.

Informações sobre o mapeamento de um logon do SQL Server para um usuário do banco de dados são armazenadas no banco de dados. Isso inclui o nome do usuário do banco de dados e o SID do logon do SQL Server correspondente. As permissões desse usuário de banco de dados são usadas para autorização no banco de dados.

Um usuário de banco de dados para o qual o logon de SQL Server correspondente é indefinido ou está definido incorretamente em uma instância do servidor não pode fazer logon na instância. Esse usuário é um usuário órfão do banco de dados nessa instância do servidor. Um usuário de banco de dados poderá ficar órfão se o logon de SQL Server correspondente for removido. Além disso, um usuário de banco de dados pode ficar órfão depois que um banco de dados é restaurado ou anexado a uma instância diferente de SQL Server. A condição de órfão pode ocorrer se o usuário do banco de dados for mapeado para um SID que não esteja presente na nova instância do servidor.

Observação

Um logon SQL Server não pode acessar um banco de dados no qual ele não tem um usuário de banco de dados correspondente, a menos que o convidado esteja habilitado nesse banco de dados. Para obter informações sobre como criar uma conta de usuário de banco de dados, consulte CREATE USER (Transact-SQL).

Para detectar usuários órfãos

Para detectar usuários órfãos, execute as seguintes instruções Transact-SQL:

USE <database_name>;  
GO;   
sp_change_users_login @Action='Report';  
GO;  

A saída lista os usuários e os SID (identificadores de segurança) correspondentes no banco de dados atual que não estão vinculados a nenhum logon SQL Server. Para obter mais informações, consulte sp_change_users_login (Transact-SQL).

Observação

sp_change_users_login não podem ser usados com logons SQL Server criados a partir do Windows.

Para resolver um usuário órfão

Para resolver um usuário órfão, use o seguinte procedimento:

  1. O comando a seguir revincula a conta de logon do servidor especificada por <login_name> com o usuário de banco de dados especificado por <database_user>.

    USE <database_name>;  
    GO  
    sp_change_users_login @Action='update_one', @UserNamePattern='<database_user>', @LoginName='<login_name>';  
    GO  
    
    

    Para obter mais informações, consulte sp_change_users_login (Transact-SQL).

  2. Depois que você executar o código na etapa anterior, o usuário poderá acessar o banco de dados. Em seguida, o usuário pode alterar a senha da conta de <logon do login_name> usando o procedimento armazenado sp_password, da seguinte maneira:

    USE master   
    GO  
    sp_password @old=NULL, @new='password', @loginame='<login_name>';  
    GO  
    

    Importante

    Somente logons com a permissão ALTER ANY LOGIN podem alterar a senha do logon de outro usuário. Porém, somente membros da função sysadmin podem modificar senhas de membros da função sysadmin .

    Observação

    sp_password não pode ser usado para contas do Microsoft Windows. Os usuários que se conectam a uma instância de SQL Server por meio de sua conta de rede do Windows são autenticados pelo Windows; portanto, suas senhas só podem ser alteradas no Windows.

    Para obter mais informações, consulte sp_password (Transact-SQL).

Consulte Também

CREATE USER (Transact-SQL)
CREATE LOGIN (Transact-SQL)
sp_change_users_login (Transact-SQL)
sp_addlogin (Transact-SQL)
sp_grantlogin (Transact-SQL)
sp_password (Transact-SQL)
sys.sysusers (Transact-SQL)
sys.syslogins (Transact-SQL)