sp_change_users_login (języka Transact-SQL)

Mapuje istniejącego użytkownika bazy danych do SQL Server logowania.Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Należy unikać stosowania tej funkcji w nowych projektach oraz zaplanować modyfikację aplikacji, w których obecnie jest używana ta funkcja.Użycie ALTER USER zamiast.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

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

Argumenty

  • [ @Action= ] 'action'
    Opisuje akcja do wykonania w procedurze.actionis varchar(10).actionmoże mieć jedną z następujących wartości.

    Wartość

    Opis

    Auto_Fix

    Łączy wpisu użytkownika w sys.database_principals system wykazu widoku bieżącej bazy danych do SQL Server logowania o tej samej nazwie.Jeśli logowanie o tej samej nazwie nie istnieje, zostanie utworzony jeden.Sprawdź wynik z Auto_Fix instrukcja potwierdzić, że prawidłowe łącze w fakt dokonane.Należy unikać Auto_Fix w sytuacji uwzględniających zabezpieczenia.

    Podczas korzystania z Auto_Fix, należy określić user i password logowania nie istnieje, w przeciwnym razie należy określić user , ale password zostanie zignorowane.loginmusi mieć wartość NULL.usermusi być prawidłowym użytkownikiem w bieżącej bazie danych.Identyfikator logowania nie może mieć inny użytkownik mapowane.

    Report

    Wyświetla użytkowników i odpowiadające im identyfikatory zabezpieczeń (SID) w bieżącej bazie danych nie są połączone z dowolnym logowania.user, login, i password musi mieć wartość NULL lub nie określono.

    Update_One

    Łączy określonego user z bieżącej bazy danych do istniejącego SQL Server login.useri login musi być określony.password musi mieć wartość NULL lub nie określono.

  • [ @UserNamePattern= ] 'user'
    Jest nazwą użytkownika w bieżącej bazie danych.userjest sysname, domyślna wartość NULL.

  • [ @LoginName= ] 'login'
    Jest to nazwa SQL Server logowania.login jest sysname, domyślna wartość NULL.

  • [ @Password= ] 'password'
    To hasło przypisane do nowej SQL Server logowania utworzona poprzez określenie Auto_Fix.Jeśli istnieje już pasujące logowania, użytkownika i logowania są mapowane i password jest ignorowana.Jeśli pasujące logowania nie istnieje, sp_change_users_login tworzy nowy SQL Server logowania i przypisuje password jako hasło dla nowego logowania.passwordjest sysname, i nie może być NULL.

    Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

    Należy używać silnego hasła.Aby uzyskać więcej informacji, zobacz Silne hasła.

Wartości kodów powrotnych

0 (sukces) lub 1 (błąd)

Zestawy wyników

Nazwa kolumny

Typ danych

Opis

UserName

sysname

Nazwa użytkownika bazy danych.

UserSID

varbinary(85)

Użytkownika identyfikator zabezpieczeń.

Uwagi

Użycie sp_change_users_login połączyć użytkownika bazy danych w bieżącej bazie danych z SQL Server logowania.Jeśli zmienił logowania dla użytkownika za pomocą sp_change_users_login do łączenia użytkownikowi nowe logowanie bez utraty uprawnienia użytkownika.Nowy login nie może być saoraz user* *nie może być dbo, guest, lub INFORMATION_SCHEMA użytkownika.

sp_change_users_loginnie może być używany do mapowania użytkowników bazy danych systemu Windows -poziom podmiotów, certyfikaty lub klucze asymetryczne.

sp_change_users_loginnie można używać z SQL Server logowania utworzonych z głównej systemu Windows lub z użytkownikiem, utworzone za pomocą utworzyć użytkownika bez logowania.

sp_change_users_loginnie można wykonać w ramach transakcji zdefiniowanej przez użytkownika.

Uprawnienia

Wymaga członkostwa w db_owner rola bazy danychstałej.Tylko członkowie sysadminmożna określićstała rola serwera Auto_Fix opcji.

Przykłady

A.Wyświetlanie raportu bieżącego użytkownika do mapowania identyfikatora logowania

Poniższy przykład tworzy raport użytkowników w bieżącej bazie danych i ich identyfikatory zabezpieczeń (SID).

EXEC sp_change_users_login 'Report';

B.Mapowanie użytkownika bazy danych do nowego logowania serwera SQL

W poniższym przykładzie użytkownik bazy danych jest skojarzony z nowym SQL Server logowania.Użytkownik bazy danych MB-Sales, który na początku jest mapowany do innego identyfikatora logowania jest ponownie mapowany do identyfikatora logowania MaryB.

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

C.Automatycznie mapowania użytkownika do logowania, tworzenie nowego logowania, jeśli jest wymagane

Poniższy przykład pokazuje sposób używania Auto_Fix Mapowanie istniejącego użytkownika do logowania o tej samej nazwie lub utworzyć SQL Server logowania Mary ma hasło B3r12-3x$098f6 Jeśli logowania Mary nie istnieje.

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