Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Konvertiert einen Datenbankbenutzer, der einer SQL Server-Anmeldung zugeordnet ist, in einen enthaltenen Datenbankbenutzer mit Kennwort. Verwenden Sie in einer enthaltenen Datenbank dieses Verfahren, um Abhängigkeiten von der Instanz von SQL Server zu entfernen, in der die Datenbank installiert ist.
sp_migrate_user_to_contained trennt den Benutzer von der ursprünglichen SQL Server-Anmeldung, sodass Einstellungen wie Kennwort und Standardsprache separat für die enthaltene Datenbank verwaltet werden können.
sp_migrate_user_to_containedkann verwendet werden, bevor die enthaltene Datenbank in eine andere Instanz der SQL Server-Datenbank-Engine verschoben werden kann, um Abhängigkeiten von den aktuellen SQL Server-Instanzenanmeldungen zu beseitigen.
Achtung
Achten Sie bei der Verwendung sp_migrate_user_to_containeddarauf, da Sie den Effekt nicht umkehren können. Dieses Verfahren wird nur in einer enthaltenen Datenbank verwendet. Weitere Informationen finden Sie unter Contained Databases.
Syntax
sp_migrate_user_to_contained [ @username = ] N'user' ,
[ @rename = ] { N'copy_login_name' | N'keep_name' } ,
[ @disablelogin = ] { N'disable_login' | N'do_not_disable_login' }
[ ; ]
Argumente
Wichtig
Argumente für erweiterte gespeicherte Prozeduren müssen in der spezifischen Reihenfolge eingegeben werden, wie im Abschnitt Syntax beschrieben. Wenn die Parameter außerhalb der Reihenfolge eingegeben werden, tritt eine Fehlermeldung auf.
[ @username = ] N'Benutzername'
Name eines Benutzers in der aktuellen enthaltenen Datenbank, die einer authentifizierten SQL Server-Anmeldung zugeordnet ist. Der Wert ist "sysname" mit einem Standardwert von NULL.
[ @rename = ] N'copy_login_name' | N'keep_name'
Wenn ein Datenbankbenutzer, der auf einer Anmeldung basiert, über einen anderen Benutzernamen als den Anmeldenamen verfügt, verwenden Sie keep_name die Verwendung, um den Datenbankbenutzernamen während der Migration beizubehalten. Dient copy_login_name zum Erstellen des neuen enthaltenen Datenbankbenutzers mit dem Namen der Anmeldung anstelle des Benutzers. Wenn der Benutzername eines Datenbankbenutzers dem Anmeldenamen entspricht, wird mit beiden Optionen der Benutzer der enthaltenen Datenbank erstellt, ohne den Namen zu ändern.
[ @disablelogin = ] N'disable_login' | N'do_not_disable_login'
Wird verwendet, um die Anmeldung in der master Datenbank zu deaktivieren. Um eine Verbindung herzustellen, wenn die Anmeldung deaktiviert ist, muss die Verbindung den enthaltenen Datenbanknamen als initial catalog Teil der Verbindungszeichenfolge angeben.
Rückgabecodewerte
0 (erfolgreich) oder 1 Fehler.
Hinweise
sp_migrate_user_to_contained erstellt den enthaltenen Datenbankbenutzer mit Kennwort, unabhängig von den Eigenschaften oder Berechtigungen der Anmeldung. Die Prozedur kann beispielsweise erfolgreich ausgeführt werden, wenn die Anmeldung deaktiviert ist oder der Benutzer die CONNECT Berechtigung für die Datenbank verweigert.
sp_migrate_user_to_contained hat die folgenden Einschränkungen.
- Der Benutzername kann nicht bereits in der Datenbank vorhanden sein.
- Integrierte Benutzer, z . B. Dbo und Gast, können nicht konvertiert werden.
- Der Benutzer kann in der
EXECUTE ASKlausel einer signierten gespeicherten Prozedur nicht angegeben werden. - Der Benutzer kann keine gespeicherte Prozedur besitzen, die die
EXECUTE AS OWNERKlausel enthält. -
sp_migrate_user_to_containedkann nicht in einer Systemdatenbank verwendet werden.
Sicherheit
Achten Sie beim Migrieren von Benutzern darauf, alle Administratoranmeldungen nicht aus der SQL Server-Instanz zu deaktivieren oder zu löschen. Wenn alle Anmeldungen gelöscht werden, lesen Sie die Verbindung mit SQL Server, wenn Systemadministratoren gesperrt sind.
Wenn die BUILTIN\Administrators Anmeldung vorhanden ist, können Administratoren eine Verbindung herstellen, indem sie ihre Anwendung mit der Option "Als Administrator ausführen" starten.
Berechtigungen
Erfordert die CONTROL SERVER-Berechtigung.
Beispiele
A. Migrieren eines einzelnen Benutzers
Im folgenden Beispiel wird eine SQL Server-Anmeldung mit dem Namen Barryzu einem enthaltenen Datenbankbenutzer mit Kennwort migriert. Das Beispiel ändert den Benutzernamen nicht und behält die Anmeldung als aktiviert bei.
EXECUTE sp_migrate_user_to_contained
@username = N'Barry',
@rename = N'keep_name',
@disablelogin = N'do_not_disable_login';
B. Migrieren aller Datenbankbenutzer mit Anmeldungen zu enthaltenen Datenbankbenutzern ohne Anmeldungen
Im folgenden Beispiel werden alle Benutzer, die auf SQL Server-Anmeldungen basieren, in Benutzer enthaltener Datenbanken mit Kennwörtern migriert. Das Beispiel schließt Anmeldeinformationen aus, die nicht aktiviert sind. Das Beispiel muss in der enthaltenen Datenbank ausgeführt werden.
DECLARE @username AS SYSNAME;
DECLARE user_cursor CURSOR
FOR SELECT dp.name
FROM sys.database_principals AS dp
INNER JOIN sys.server_principals AS sp
ON dp.sid = sp.sid
WHERE dp.authentication_type = 1
AND sp.is_disabled = 0;
OPEN user_cursor;
FETCH NEXT FROM user_cursor INTO @username;
WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE sp_migrate_user_to_contained
@username = @username,
@rename = N'keep_name',
@disablelogin = N'disable_login';
FETCH NEXT FROM user_cursor INTO @username;
END
CLOSE user_cursor;
DEALLOCATE user_cursor;