Compartilhar via


sp_change_users_login (Transact-SQL)

Mapeia um usuário de banco de dados existente para um logon do SQL Server. 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.

Ícone de vínculo de tópico Convenções da sintaxe 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. action é varchar(10). action 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 SQL Server logon 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 que o vínculo correto foi realmente estabelecido. Evite usar Auto_Fix em situações confidenciais de segurança.

    Ao usar Auto_Fix, especifique user e password se o logon ainda não existir; caso contrário, especifique user, mas password será ignorado. login deve ser NULL. user 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. user, login 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 em sys.server_prinicpals com as entradas em sys.database_principals.

    Update_One

    Vincula o user especificado no banco de dados atual a um SQL Server login existente. user e login devem ser especificados. password deve ser NULL ou não especificada.

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

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

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

    Observação sobre segurançaObservação sobre segurança

    Use uma senha forte. Para obter mais informações, consulte Senhas fortes.

Valores de 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 do banco de dados atual a um logon do 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 login não pode ser sa, e o user não pode ser um usuário do dbo, guest um usuário de INFORMATION_SCHEMA.

sp_change_users_login não pode ser usado para mapear usuários do banco de dados para entidades no nível do Windows, certificados ou chaves assimétricas.

sp_change_users_login não pode ser usado com um logon do SQL Server criado em uma entidade do Windows ou com um usuário criado por meio de CREATE USER WITHOUT LOGIN.

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. Apenas os 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 é 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 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 como criar o logon do SQL Server Mary com 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

Referência

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)