Die Verknüpfung ALLEN Benutzern das Einloggen nach der Wiederherstellung einer SQL Server 2005 Datenbank
(Hinweis: diese Frage fragt nach der Verknüpfung ALLE Benutzer, im Gegensatz zu den mögliche Duplikate, die Sie fragt, um die Verknüpfung für einen einzelnen Benutzer)
Möchte ich, um eine Datenbank zwischen zwei Servern habe ich gesichert, die Datenbank vom ersten server und fertig ein Datenbank-restore auf dem 2. server, soweit so gut.
Jedoch unsere Anwendung macht Gebrauch von einer Menge von Datenbank-Benutzer, die in der Datenbank definiert sind. Diese müssen verknüpft werden, um logins, die definiert sind in der master-Datenbank. Den server habe ich wiederhergestellt, die Datenbank hat alle logins definiert ist, jedoch haben Sie unterschiedliche sids.
Bin ich kein T-SQL Experte....
Ich denke sp_change_users_login
ist Teil der Lösung, aber ich kann nicht herausfinden, wie man es automatisch ein link alle Benutzer in der wiederhergestellten Datenbank, um den login mit dem gleichen Namen.
Erstellen der Datenbank-Skripte verwenden wir für unsere Anwendung erstellen-Benutzer und-Anmeldungen, aber es tut nicht angeben, wird die SID bei der Erstellung der Anmeldung, daher dieses problem. Wenn ich jetzt eine Zeit-Maschine...
(Wenn ich das Google, bekomme ich viele Treffer, aber Sie sind meist Websites, die nicht zulassen, werden Sie sehen, die Antwort, die zimmerreserviereung, ohne das Sie sich auf der Website registrieren ersten.)
- Siehe auch diese Frage stackoverflow.com/questions/229883/...
- Möglich, Duplikat der so schließen Sie eine vorhandene SQL Server-Anmeldung zu einer vorhandenen SQL Server-Datenbank Benutzer-name
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kam ich mit den folgenden. Es funktioniert gut, weil es zeigt:
Andere Lösungen erfordern, zu wissen, die verwaiste Benutzernamen, bevor die hand, um zu beheben.
Den folgenden code laufen konnte in einem sproc, das heißt nach der Wiederherstellung einer Datenbank auf einen anderen server.
Skript:
Ergebnis:
*Hinweis: Die 4 wurden nicht behoben (in meinem Beispiel-screenshot oben) nicht über einen entsprechenden Benutzer auf dem Ziel-Server, der die Datenbank wiederhergestellt wurde.
']; Drop table users;
ist eine gültige SQL-Benutzername, der verwendet werden könnte zum bösen. Edit: vermutlich ist das DBA würde abgeholt haben dieses oben, aber ich habe gesehen, genug apps, mit denen Nutzer Ihre eigenen DB-Benutzer-name.Ja, Sie können dies tun, indem Sie Folgendes ausführen:
Aber wenn deine Frage war kann ich das beheben automatisch alle Benutzer und dies nicht tun.
sp_change_users_login
ist jetzt deprecated.Wenn:
Tust, nicht funktioniert, versuchen Sie dies:
Ich es hier gefunden:
http://dbadiaries.com/using-sp_change_users_login-to-fix-sql-server-orphaned-users
Habe ich ein nettes Skript, das Sie verwenden können, um Anmeldungen aus der Datenbank Benutzer,die stieß ich auf der Suche nach diesem Thema in diesem Skript wird mithilfe einer gespeicherten Prozedur. finden Sie einige andere nützliche scripts auch hier auf dieser url
http://www.sqlserveroptimizer.com/2011/08/how-to-script-logins-from-user-database-in-sql-server-20052008-r2/
Fand ich das folgende Skript aus Microsoft KB918992 - ausführen auf der ursprüngliche server und es wird das erstellen einer gespeicherten Prozedur namens "sp_help_revlogin", die erzeugt ein weiteres Skript auf dem Zielserver auszuführen, erstellen alle Benutzerkonten mit den selben Passwörtern und sids. Wirkte Wunder für unsere upgrade SQL2000 2008.