sp_migrate_user_to_contained (Transact-SQL)sp_migrate_user_to_contained (Transact-SQL)

DIESES THEMA GILT FÜR: jaSQL Server (ab 2012)neinAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2012)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Konvertiert einen Datenbankbenutzer, der mit einem SQL ServerSQL Server-Anmeldenamen verknüpft ist, in den Benutzer einer enthaltenen Datenbank mit Kennwort.Converts a database user that is mapped to a SQL ServerSQL Server login, to a contained database user with password. In einer eigenständigen Datenbank können Sie mit diesem Verfahren Abhängigkeiten für die Instanz von SQL ServerSQL Server entfernen, in der die Datenbank installiert ist.In a contained database, use this procedure to remove dependencies on the instance of SQL ServerSQL Server where the database is installed. Sp_migrate_user_to_contained trennt den Benutzer aus der ursprünglichen SQL ServerSQL Server Anmeldenamen, damit Einstellungen wie Kennwort und Standardsprache für die eigenständige Datenbank separat verwaltet werden können.sp_migrate_user_to_contained separates the user from the original SQL ServerSQL Server login, so that settings such as password and default language can be administered separately for the contained database. Sp_migrate_user_to_contained kann verwendet werden, vor dem Wechsel von der eigenständigen Datenbank in eine andere Instanz von der SQL Server-DatenbankmodulSQL Server Database Engine , mit dem aktuellen Abhängigkeiten zu beseitigen SQL ServerSQL Server Anmeldungen-Instanz.sp_migrate_user_to_contained can be used before moving the contained database to a different instance of the SQL Server-DatenbankmodulSQL Server Database Engine to eliminate dependencies on the current SQL ServerSQL Server instance logins.

Hinweis diese Prozedur wird nur in einer eigenständigen Datenbank verwendet.Note This procedure is only used in a contained database. Weitere Informationen finden Sie unter Contained Databases.For more information, see Contained Databases.

SyntaxSyntax


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' }   

ArgumenteArguments

[ @username = ] N'Benutzer"[@username = ] N'user'
Der Name eines Benutzers in der aktuellen eigenständigen Datenbank, der mit einem authentifizierten SQL ServerSQL Server-Anmeldenamen verknüpft ist.Name of a user in the current contained database that is mapped to a SQL ServerSQL Server authenticated login. Der Wert ist Sysname, hat den Standardwert NULL.The value is sysname, with a default of NULL.

[ @rename = ] N'Copy_login_name" | N' Keep_name"[@rename = ] N'copy_login_name' | N'keep_name'
Wenn ein Datenbankbenutzer auf Basis eines Anmeldenamens einen anderen Benutzernamen als den Anmeldenamen enthält, mithilfe von Keep_name den Datenbankbenutzernamen während der Migration beibehalten werden sollen.When a database user based on a login has a different user name than the login name, use keep_name to retain the database user name during the migration. Verwendung Copy_login_name neue eigenständige Datenbankbenutzer mit dem Namen der Anmeldung, anstelle des Benutzers zu erstellen.Use copy_login_name to create the new contained database user with the name of the login, instead of the user. Wenn der Benutzername eines Datenbankbenutzers dem Anmeldenamen entspricht, wird mit beiden Optionen der Benutzer der enthaltenen Datenbank erstellt, ohne den Namen zu ändern.When a database user based on a login has the same user name as the login name, both options create the contained database user without changing the name.

[ @disablelogin = ] N'Disable_login" | N' Do_not_disable_login"[@disablelogin = ] N'disable_login' | N'do_not_disable_login'
Disable_login deaktiviert die Anmeldung in der master-Datenbank.disable_login disables the login in the master database. Um eine Verbindung herzustellen, wenn die Anmeldung deaktiviert ist, muss die Verbindung angeben, den Namen der eigenständigen Datenbank als die Anfangskatalog als Teil der Verbindungszeichenfolge.To connect when the login is disabled, the connection must provide the contained database name as the initial catalog as part of the connection string.

RückgabecodewerteReturn Code Values

0 (Erfolg) oder 1 (Fehler)0 (success) or 1 (failure)

HinweiseRemarks

Sp_migrate_user_to_contained Benutzer der eigenständigen Datenbank mit Kennwort, unabhängig von der Eigenschaften oder Berechtigungen der Anmeldung erstellt.sp_migrate_user_to_contained creates the contained database user with password, regardless of the properties or permissions of the login. Die Prozedur kann z. B. erfolgreich, wenn die Anmeldung deaktiviert ist oder wenn der Benutzer abgelehnt wird die verbinden Berechtigung für die Datenbank.For example, the procedure can succeed if the login is disabled or if the user is denied the CONNECT permission to the database.

Sp_migrate_user_to_contained gelten folgende Einschränkungen.sp_migrate_user_to_contained has the following restrictions.

  • Der Benutzername darf nicht bereits in der Datenbank vorhanden sein.The user name cannot already exist in the database.

  • Integrierte Benutzer wie dbo und guest, können nicht konvertiert werden.Built-in users, for example dbo and guest, cannot be converted.

  • Der Benutzer kann nicht angegeben werden, der EXECUTE AS -Klausel einer signierten gespeicherten Prozedur.The user cannot be specified in the EXECUTE AS clause of a signed stored procedure.

  • Der Benutzer kann nicht Besitzer eine gespeicherte Prozedur, die enthält die EXECUTE AS OWNER Klausel.The user cannot own a stored procedure that includes the EXECUTE AS OWNER clause.

  • Sp_migrate_user_to_contained kann nicht in einer Systemdatenbank verwendet werden.sp_migrate_user_to_contained cannot be used in a system database.

SicherheitSecurity

Achten Sie beim Migrieren von Benutzern darauf, dass nicht alle Administratoranmeldungen von der Instanz von SQL ServerSQL Server gelöscht werden.When migrating users, be careful not to disable or delete all the administrator logins from the instance of SQL ServerSQL Server. Wenn alle Anmeldungen gelöscht werden, finden Sie unter Herstellen einer Verbindung mit SQL Server beim System Systemadministratoren gesperrt sind.If all logins are deleted, see Connect to SQL Server When System Administrators Are Locked Out.

Wenn die "BUILTIN\Administrators" Anmeldung vorhanden ist, können Administratoren durch Starten ihre Anwendung mit Verbinden der als Administrator ausführen Option.If the BUILTIN\Administrators login is present, administrators can connect by starting their application using the Run as Administrator option.

BerechtigungenPermissions

Erfordert die CONTROL SERVER -Berechtigung.Requires the CONTROL SERVER permission.

BeispieleExamples

A.A. Migrieren eines einzelnen BenutzersMigrating a single user

Im folgenden Beispiel wird der SQL ServerSQL Server-Anmeldename Barry in den Benutzer einer enthaltenen Datenbankbenutzer mit Kennwort migriert.The following example migrates a SQL ServerSQL Server login named Barry, to a contained database user with password. Der Benutzername wird im Beispiel nicht geändert, und der Anmeldename ist weiterhin aktiviert.The example retains the does not change the user name, and retains the login as enabled.

sp_migrate_user_to_contained   
@username = N'Barry',  
@rename = N'keep_name',  
@disablelogin = N'do_not_disable_login' ;  

B.B. Migrieren aller Datenbankbenutzer mit Anmeldenamen zu Benutzern in eigenständigen Datenbanken ohne AnmeldenamenMigrating all database users with logins to contained database users without logins

Im folgenden Beispiel werden alle Benutzer, die auf SQL ServerSQL Server -Anmeldungen basieren, in Benutzer enthaltener Datenbanken mit Kennwörtern migriert.The following example migrates all users that are based on SQL ServerSQL Server logins to contained database users with passwords. Nicht berücksichtigt werden Anmeldungen, die nicht aktiviert sind.The example excludes logins that are not enabled. Das Beispiel muss in der enthaltenen Datenbank ausgeführt werden.The example must be executed in the contained database.

DECLARE @username sysname ;  
DECLARE user_cursor CURSOR  
    FOR   
        SELECT dp.name   
        FROM sys.database_principals AS dp  
        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 ;  

Siehe auchSee Also

Migrate to a Partially Contained Database Migrate to a Partially Contained Database
Eigenständige DatenbankenContained Databases