2009-01-20 13 views
9

Ich habe eine MS SQL Server 2005-Datenbank auf einem neuen Server gesichert und wiederhergestellt.Wiederherstellen einer Sicherung auf einem anderen Server - Benutzerberechtigungen

Wie können Login, Benutzer und Benutzerberechtigungen am besten wiederhergestellt werden?

In Enterprise Manager von SQL Server 2000 war ich in der Lage, die Logins zu scripten, die Benutzer zu scripten und die Benutzerberechtigungen separat zu schreiben. Ich konnte dann nacheinander ausführen und der einzige verbleibende manuelle Schritt war das Login-Passwort (die aus Sicherheitsgründen nicht skripten)

Dies scheint nicht möglich in Management Studio von SQL Server 2005, so dass alles sehr fummelig und Zeitaufwendig. (Am Ende muss ich die gesamte Datenbank scripten, alle Logins und Benutzer aus der neuen Datenbank löschen, das Skript ausführen und dann durch eine Mischung von Fehlermeldungen scannen, um zu sehen, was funktioniert hat und was nicht.)

hat jemand irgendwelche Erfahrungen und Empfehlungen dazu?

Antwort

14

Der einfachste Weg, dies zu tun ist mit Microsoft sp_help_revlogin, eine gespeicherte Prozedur, die alle SQL Server Logins, Standardeinstellungen und Passwörter scriptet und behält die gleichen SIDs.

Sie können es in diesem Knowledge Base-Artikel finden:

http://support.microsoft.com/kb/918992

+0

Scheint nicht, die Benutzerberechtigungen zu tun. (Wie GRANT EXECUTE und GRANT SELECT usw.) – MatBailie

+0

Richtig, weil das in jeder einzelnen Datenbank enthalten ist, nicht auf der Server-Ebene. Wenn Sie eine Datenbank sichern, führen Sie sp_help_revlogin auf dem alten Server aus, verwenden Sie das generierte T-SQL auf dem neuen Server, und führen Sie die Wiederherstellungen durch, dann sind Sie fertig. –

+0

Die "Benutzer" in der wiederhergestellten Datenbank scheinen weiterhin von ihren "Logins" verwaist zu sein. – MatBailie

0

Ich verwende das SQL Compare-Produkt von Red Gate (http://www.red-gate.com/products/SQL_Compare/index.htm). Es gibt andere ähnliche Produkte, aber ich hatte keinen Grund, nach einem zu suchen, da SQL Compare mich nie im Stich gelassen hat.

Sie werden finden, dass es für viel mehr als Ihre aktuelle Anforderung nützlich ist, da es hilft, alle Arten von Datenbankobjekt zu synchronisieren, nicht nur Login und Berechtigungen.

+0

Wir haben ein ähnliches "Datenbank-Differential" -Tool. Leider ist unser Client nicht ... – MatBailie

2

Run this:

EXEC sp_change_users_login 'Report' 

Diese Liste aller verwaisten Benutzer zeigen, zum Beispiel:

enter image description here

Jetzt Führen Sie dieses Skript hier für jeden Benutzer aus, zum Beispiel

exec sp_change_users_login 'Update_One', 'UserNameExample', 'UserNameExample' 

Dies behoben mein Problem.