sp_change_users_login (Transact-SQL)
Aplica-se: 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 desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam. Em vez disso, use ALTER USER .
Convenções de sintaxe de Transact-SQL
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 do catálogo do sys.database_principals sistema 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 Auto_Fix declaração 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 o , você deve especificar @UserNamePattern e @Password se o logon ainda não existir, 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 logon não pode ter outro usuário mapeado para ele. |
Report |
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. @UserNamePattern, @LoginName e @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 com sys.server_prinicpals as entradas no sys.database_principals . |
Update_One |
Vincula o @UserNamePattern especificado no banco de dados atual a um @LoginName existente do SQL Server. @UserNamePattern e @LoginName devem ser especificados. @Password deve ser NULL ou não especificado. |
@UserNamePattern [ = ] N'Padrão de nome de usuário'
O nome de um usuário no banco de dados atual. @UserNamePattern é sysname, com um padrão de NULL
.
@LoginName [ = ] N'Nome de login'
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 criado especificando Auto_Fix
. @Password é sysname e não pode ser NULL
. Se já existir um logon correspondente, o usuário e o logon 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.
Importante
Sempre use uma senha forte.
Valores do código de retorno
0
(sucesso) ou 1
(falha).
Conjunto 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 no banco de dados atual a um logon do SQL Server. Se o logon de um usuário for alterado, use sp_change_users_login
para vincular o usuário ao novo logon sem perder as permissões do usuário. O novo @LoginName não pode ser sa
, e o @UserNamePattern não pode ser dbo
, guest
, ou um INFORMATION_SCHEMA
usuário.
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 de segurança do Windows ou com um usuário criado usando CREATE USER WITHOUT LOGIN
o .
sp_change_users_login
não pode ser executado 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 Auto_Fix
opção.
Exemplos
Os exemplos de código do Transact-SQL deste artigo usa o banco de dados de exemplo AdventureWorks2022
ou AdventureWorksDW2022
, que pode ser baixado da home page Microsoft SQL Server Samples and Community Projects.
R. Mostrar um relatório do usuário atual para mapeamentos de login
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. 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 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 AdventureWorks2022;
GO
EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';
GO
C. Mapeie automaticamente um usuário para um logon e crie um novo logon, se necessário
O exemplo a seguir mostra como usar Auto_Fix
o mapeamento de um usuário existente para um logon com o mesmo nome ou para criar o logon Mary
do SQL Server que é a senha B3r12-3x$098f6
se o logon Mary
não existir.
USE AdventureWorks2022;
GO
EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-3x$098f6';
GO