Benutzer mit den meisten Antworten
Übersiedelung Datenbank und SQL-Authentifizierungs-Benutzer auf einen anderen Server

Frage
-
Hallo
Ich habe bei einem Kunden eine Datenbank eingerichtet, mit SQL-Benutzer (SQL-Server-Authentifizierung) - das ganze auf einem SQL-Server 2014
Nun soll diese Datenbank mit all den Benutzern und Einstellungen auf einen neue Server umziehen. Für die Datenbank sehe ich da kein Problem (Backup und Restore) - - aber wie mache ich das am besten mit all den Benutzer-Konten?
Von mir "einfach gedachte" - im SQL-Server-Management-Studio auf Security/Logins gehen; alle aktiven Logins im Bereich des Object-Explorer-Details auswählen, und via rechter Maustaste "Script Login as -> create to ...." - und dieses generierte SQL-Skript auf dem neue Server ausführen, bevor die Applikations-Datenbank via "Restore" eingespielt wird.
Ist dies so möglich ?? Oder habe ich hier zu einfach gedachte.....
Vielen Dank schon mal für Eure Unterstützung & schönen Gruß
Michael
Michael Erlinger
Antworten
-
Hallo Michael,
so ist es (fast) Möglich. Problem ist nur, das mit dem erstellten Skript dann auf dem Zielserver die SQL Logins mit neuen (anderen) SID's angelegt werden, als auf dem Quellserver und wie es in der Datenbank gespeichert ist. Das führt das, das auf dem Zielserver die vorhandenen Datenbank Benutzer dann "verwaist" (orphaned) sind, den das Mapping Server Login <=> Datenbank Benutzer erfolgt über die SID und nicht etwa über den Namen. Das kann man zwar leicht korrigieren lassen, siehe Troubleshoot Orphaned Users (SQL Server), aber wenn Du die Datenbank vielleicht mehrfach übertragen müsst, ist das lästig.
Microsoft hat ein Skript veröffentlich, mit dem man alle Logins mit original SID und dem Hash fürs Passwort (bei SQL Login) aus skripten und so übertragen kann: How to transfer logins and passwords between instances of SQL Server
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort markiert M.Erlinger Montag, 15. Dezember 2014 16:53
-
Hallo Michael,
man kann die verwaisten Benutzer entfernen und neu anlegen, nur gehen dann evtl. individuell vergebene Berechtigungen verloren, die müssen dann nachgepflegt werden.
Du kannst die SID des Datenbankbenutzers auch mit der Stored Procedure sys.sp_change_users_login aktualisieren lassen, siehe auch Secure Orphaned User AutoFix
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort vorgeschlagen Andreas.WolterMicrosoft employee Montag, 15. Dezember 2014 11:12
- Als Antwort markiert M.Erlinger Montag, 15. Dezember 2014 16:54
Alle Antworten
-
Hallo Michael,
so ist es (fast) Möglich. Problem ist nur, das mit dem erstellten Skript dann auf dem Zielserver die SQL Logins mit neuen (anderen) SID's angelegt werden, als auf dem Quellserver und wie es in der Datenbank gespeichert ist. Das führt das, das auf dem Zielserver die vorhandenen Datenbank Benutzer dann "verwaist" (orphaned) sind, den das Mapping Server Login <=> Datenbank Benutzer erfolgt über die SID und nicht etwa über den Namen. Das kann man zwar leicht korrigieren lassen, siehe Troubleshoot Orphaned Users (SQL Server), aber wenn Du die Datenbank vielleicht mehrfach übertragen müsst, ist das lästig.
Microsoft hat ein Skript veröffentlich, mit dem man alle Logins mit original SID und dem Hash fürs Passwort (bei SQL Login) aus skripten und so übertragen kann: How to transfer logins and passwords between instances of SQL Server
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort markiert M.Erlinger Montag, 15. Dezember 2014 16:53
-
Hallo Olaf
vielen Dank für Deine Rückmeldung.
Wenn ich es via dem genannte Scrip machen würde -> kann ich dann nach der Anlage der Logins auf dem SQL-Server nicht via diesem Script die Zuordnung der Benutzer in der Datenbank bzw. die Logins für die Applikations-Datenbank durchführen:
zuerst löschen (nach dem Restore der Datenbank)
Use [MyDatabase] Drop user [testUser] GO
dann neu erstellen und Login zuordnen / und ggf. Rolle(n) zuordnen:
USE [MyDatabase] GO CREATE USER [testUser] FOR LOGIN [testUser] GO USE [MyDatabase] GO
ALTER ROLE [db_owner] ADD MEMBER [testUser]
GO
...wäre auch möglich ?
Danke
Michael
Michael Erlinger
-
Hallo Michael,
man kann die verwaisten Benutzer entfernen und neu anlegen, nur gehen dann evtl. individuell vergebene Berechtigungen verloren, die müssen dann nachgepflegt werden.
Du kannst die SID des Datenbankbenutzers auch mit der Stored Procedure sys.sp_change_users_login aktualisieren lassen, siehe auch Secure Orphaned User AutoFix
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort vorgeschlagen Andreas.WolterMicrosoft employee Montag, 15. Dezember 2014 11:12
- Als Antwort markiert M.Erlinger Montag, 15. Dezember 2014 16:54