Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Mapeia um usuário de banco de dados existente para um logon do SQL Server.
Importante
Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso. Em vez disso, use ALTER USER.
Transact-SQL convenções de sintaxe
Sintaxe
sp_change_users_login
[ @Action = ] 'Action'
[ , [ @UserNamePattern = ] N'UserNamePattern' ]
[ , [ @LoginName = ] N'LoginName' ]
[ , [ @Password = ] N'Password' ]
[ ; ]
Argumentos
[ @Action = ] «Ação»
Descreve a ação a ser executada pelo procedimento armazenado. @Action é varchar(10), sem padrão, e pode ter um dos seguintes valores.
| Valor | Descrição |
|---|---|
Auto_Fix |
Vincula uma entrada de usuário na exibição de catálogo do sistema sys.database_principals no banco de dados atual a um logon do SQL Server com o mesmo nome. Se não existir um login com o mesmo nome, um será criado. Examine o resultado da declaração Auto_Fix, para confirmar que o link correto foi de fato feito. Evite usar Auto_Fix em situações sensíveis à segurança.Quando você usa Auto_Fix, você deve especificar @UserNamePattern e @Password se o login ainda não existe, caso contrário, você deve especificar @UserNamePattern mas @Password é ignorado.
@LoginName deve ser NULL.
@UserNamePattern deve ser um usuário válido no banco de dados atual. O login não pode ter outro usuário mapeado para ele. |
Report |
Lista os usuários e os identificadores de segurança (SID) correspondentes no banco de dados atual que não estão vinculados a nenhum login.
@UserNamePattern, @LoginNamee @Password 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_principals com as entradas em sys.database_principals. |
Update_One |
Vincula o @UserNamePattern especificado no banco de dados atual a um SQL Server existente @LoginName.
@UserNamePattern e @LoginName devem ser especificados.
@Password deve ser NULL ou não especificado. |
@UserNamePattern [ = ] N'UserNamePattern'
O nome de um usuário no banco de dados atual.
@UserNamePattern é sysname, com um padrão de NULL.
@LoginName [ = ] N'LoginName'
O nome de um logon do SQL Server.
@LoginName é sysname, com um padrão de NULL.
@Password [ = ] N'Senha'
A senha atribuída a um novo logon do SQL Server que é criado especificando Auto_Fix.
@Password é sysnamee não pode ser NULL. Se já existir um login correspondente, o usuário e o login serão mapeados e @Password será ignorado. Se não existir um logon correspondente, sp_change_users_login criará um novo logon do SQL Server e atribuirá @Password como a senha para o novo logon.
Valores de código de retorno
0 (sucesso) ou 1 (fracasso).
Conjunto de resultados
| Nome da coluna | Tipo de dados | Descrição |
|---|---|---|
UserName |
sysname | Nome de usuário do banco de dados. |
UserSID |
Varbinário(85) | Identificador de segurança do utilizador. |
Comentários
Use sp_change_users_login para vincular um usuário de banco de dados no banco de dados atual a um logon do SQL Server. Se o login de um usuário for alterado, use sp_change_users_login para vincular o usuário ao novo login sem perder as permissões do usuário. O novo @LoginName não pode ser sae o @UserNamePattern não pode ser dbo, guestou um usuário INFORMATION_SCHEMA.
sp_change_users_login não pode ser usado para mapear usuários de banco de dados para entidades de segurança, certificados ou chaves assimétricas no nível do Windows.
sp_change_users_login não pode ser usado com um logon do SQL Server criado a partir de uma entidade do Windows ou com um usuário criado usando CREATE USER WITHOUT LOGIN.
sp_change_users_login não pode ser executado dentro de uma transação definida pelo usuário.
Permissões
Requer associação à função de banco de dados fixa db_owner. Somente os membros da função de servidor fixa sysadmin podem especificar a opção Auto_Fix.
Exemplos
Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que pode ser descarregado da página inicial de Exemplos e Projetos da Comunidade do Microsoft SQL Server.
Um. Mostrar um relatório do usuário atual para mapeamentos de login
O exemplo a seguir produz um relatório dos usuários no banco de dados atual e seus identificadores de segurança (SIDs).
EXECUTE sp_change_users_login 'Report';
B. Mapear 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 do SQL Server. O MB-Salesdo usuário do banco de dados, que a princípio é mapeado para outro login, é remapeado para fazer login MaryB. Substitua <password> por uma senha forte.
--Create the new login.
CREATE LOGIN MaryB WITH PASSWORD = '<password>';
GO
--Map database user MB-Sales to login MaryB.
USE AdventureWorks2022;
GO
EXECUTE sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';
GO
C. Mapeie automaticamente um usuário para um login e crie um novo login, 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 do SQL Server com uma senha se o logon Mary não existir. Substitua <password> por uma senha forte.
USE AdventureWorks2022;
GO
EXECUTE sp_change_users_login 'Auto_Fix', 'Mary', NULL, '<password>';
GO