sp_change_users_login (Transact-SQL)

Aplica-se a: SQL Server (todas as versões com suporte)

Mapeia um usuário de banco de dados existente para um logon SQL Server.

Importante

Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam. Em vez disso , use ALTER USER .

Topic link iconConvenções de sintaxe do Transact-SQL

Sintaxe

  
sp_change_users_login [ @Action = ] 'action'   
    [ , [ @UserNamePattern = ] 'user' ]   
    [ , [ @LoginName = ] 'login' ]   
    [ , [ @Password = ] 'password' ]  
[;]  

Argumentos

[ @Action= ] 'action'
Descreve a ação a ser executada pelo procedimento. ação é varchar(10). A ação pode ter um dos seguintes valores.

Valor Descrição
Auto_Fix Vincula uma entrada de usuário na exibição do catálogo do sistema sys.database_principals no banco de dados atual a um logon SQL Server de mesmo nome. Se ainda não existir um logon com o mesmo nome, ele será criado. Examine o resultado da instrução Auto_Fix para confirmar se o link correto foi de fato feito. Evite usar Auto_Fix em situações sensíveis à segurança.

Ao usar Auto_Fix, você deverá especificar o usuário e a senha se o logon ainda não existir, caso contrário, você deverá especificar o usuário , mas a senha será ignorada. O logon deve ser NULL. o usuário deve ser um usuário válido no banco de dados atual. Não pode haver outro usuário mapeado para o logon.
Report Lista os usuários e o SID (identificador de segurança) correspondentes no banco de dados atual que não estão vinculados a nenhum logon. usuário, logon e senha devem ser NULL ou não especificados.

Para substituir a opção de relatório por uma consulta usando as tabelas do sistema, compare as entradas em sys.server_prinicpals com as entradas no sys.database_principals.
Update_One Vincula o usuário especificado no banco de dados atual a um logon SQL Server existente. usuário e logon devem ser especificados. a senha deve ser NULL ou não especificada.

[ @UserNamePattern= ] 'user'
É o nome de um usuário no banco de dados atual. o usuário é sysname, com um padrão de NULL.

[ @LoginName= ] 'login'
É o nome de um logon SQL Server. login é sysname, com um padrão de NULL.

[ @Password= ] 'password'
É a senha atribuída a um novo logon SQL Server que é criado especificando Auto_Fix. Se já existir um logon correspondente, o usuário e o logon serão mapeados e a senha será ignorada. Se um logon correspondente não existir, sp_change_users_login criará um novo logon SQL Server e atribuirá a senha como a senha para o novo logon. senha é sysname e não deve ser NULL.

Importante

Sempre use uma senha forte!

Valores do código de retorno

0 (êxito) ou 1 (falha)

Conjuntos de resultados

Nome da coluna Tipo de dados Descrição
UserName sysname Nome do usuário do banco de dados.
UserSID varbinary(85) O identificador de segurança do usuário.

Comentários

Use sp_change_users_login para vincular um usuário de banco de dados ao banco de dados atual com um logon SQL Server. Se o logon do usuário for alterado, use sp_change_users_login para vinculá-lo ao novo logon sem perder as permissões de usuário. O novo logon não pode ser sa e o usuário não pode ser dbo, convidado ou um usuário INFORMATION_SCHEMA.

Não é possível usar sp_change_users_login para mapear os usuários do banco de dados para entidades do nível do Windows, certificados ou chaves assimétricas.

sp_change_users_login não pode ser usado com um logon SQL Server criado a partir de uma entidade de segurança do Windows ou com um usuário criado usando CREATE USER WITHOUT LOGIN.

Não é possível executar sp_change_users_login em uma transação definida pelo usuário.

Permissões

Requer associação na função de banco de dados fixa db_owner. Somente membros da função de servidor fixa sysadmin podem especificar a opção Auto_Fix .

Exemplos

a. Mostrando um relatório do usuário atual para mapeamentos de logon

O exemplo a seguir produz um relatório dos usuários do banco de dados atual e seus identificadores de segurança (SIDs).

EXEC sp_change_users_login 'Report';  

B. Mapeando um usuário de banco de dados para um novo logon do SQL Server

No exemplo a seguir, um usuário de banco de dados está associado a um novo logon SQL Server. O usuário de banco de dados MB-Sales, que inicialmente está mapeado para outro logon, é remapeado para o logon MaryB.

--Create the new login.  
CREATE LOGIN MaryB WITH PASSWORD = '982734snfdHHkjj3';  
GO  
--Map database user MB-Sales to login MaryB.  
USE AdventureWorks2012;  
GO  
EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';  
GO  

C. Mapeando automaticamente um usuário para um logon, criando um novo logon se necessário

O exemplo a seguir mostra como usar Auto_Fix para mapear um usuário existente para um logon com o mesmo nome ou para criar o logon Mary SQL Server que tem a senha B3r12-3x$098f6 se o logon Mary não existir.

USE AdventureWorks2012;  
GO  
EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-3x$098f6';  
GO  

Consulte Também

Procedimentos armazenados de segurança (Transact-SQL)
CREATE LOGIN (Transact-SQL)
sp_adduser (Transact-SQL)
sp_helplogins (Transact-SQL)
Procedimentos armazenados do sistema (Transact-SQL)
sys.database_principals (Transact-SQL)