SQL Server – DB User Login nach Restore in anderem SQL Server korrigieren (sp_change_users_login)

Wenn man von einem anderen SQL Server ein Backup bekommt und das in seinem SQL Server einspielen will, dann heißt der SQL Login vielleicht gleich, aber die internen IDs stimmen nicht und man kann sich mit dem Benutzer nicht anmelden. Den Benutzer in der Datenbank unter Sicherheit/Benutzer zu löschen geht meist auch nicht, wenn der Benutzer z.B. Owner des Schemas ist. Also wie bekommt man den Benutzer aus dem Backup auf den gleichnamigen Benutzer des eigenen SQL Servers gemappt?

Zunächst schickt man eine Abfrage gegen die Datenbank, die einem die Benutzer auflistet, die aktuell nicht mit einem Anmeldenamen verknüpft sind:

EXEC sp_change_users_login 'REPORT'

Der Befehlt listet den Benutzernamen und die BenutzerSID auf. Mit dem gleichen Befehl, aber mit anderen Parametern kann man nun den „losen“ Benutzer der Datenbank gegen den Benutzer des SQL Servers mappen. Voraussetzung für diesen Befehl ist, die Namen sind gleich:

EXEC sp_change_users_login 'Auto_Fix', 'Username', NULL, 'Passwort'

Weitere Infos zu diesem SQL Server Command sind bei Microsoft zu finden unter: https://docs.microsoft.com/de-de/sql/relational-databases/system-stored-procedures/sp-change-users-login-transact-sql?view=sql-server-2017