Ich verschiebe gelegentlich eine Datenbank (SQL Express 2012) mithilfe der Datenbanksicherung und -wiederherstellung in SQL Server Management Studio von einem Entwicklungscomputer auf einen Server oder umgekehrt.
In jedem Fall können die Anwendungen auf dem Zielcomputer erst dann auf die Datenbank zugreifen, wenn ich den von ihnen verwendeten Benutzer "George" von den Datenbankbenutzern (Datenbank, Sicherheit, Benutzer in SQL Server Management Studio) lösche und ihn erneut als hinzufüge Besitzer unter Sicherheit, Logins, George / Eigenschaften, Benutzerzuordnung.
Gibt es einen besseren Weg, dies zu tun? Es scheint ein wenig verworren zu sein.
sql-server
backup
xpda
quelle
quelle
CREATE LOGIN
Anweisung manuell an .Antworten:
Dies ist der Unterschied zwischen Anmeldungen und Benutzern und wie sie sich zueinander verhalten:
Was bei SQL-authentifizierten Anmeldungen und Datenbankbenutzern bei einer Wiederherstellung häufig vorkommt, ist, dass die SIDS nicht mehr synchron sind, wodurch die Beziehung unterbrochen wird. Diese Beziehung muss repariert werden, bevor Sie mit diesem Login eine Verbindung zur Datenbank herstellen können, da diese Principals in den Augen von SQL Server nicht mehr verbunden sind. Sie können dies mit folgendem SQL beheben:
Sie können die folgende Abfrage im Kontext Ihrer Datenbank verwenden, um nach Waisen zu suchen:
quelle
Sie könnten versuchen, die Datenbank in eine enthaltene Datenbank umzuwandeln . Enthaltene Datenbankbenutzer werden von der Datenbank authentifiziert, nicht auf Instanzebene durch Anmeldung. Das Verschieben der Datenbank in eine andere Instanz wird vereinfacht.
Andernfalls können Sie die Anmeldeinformationen mit sp_help_revlogin-Skripts sichern, die in dieser Microsoft-Support-KB bereitgestellt werden . Führen Sie das Ausgabeskript auf der neuen Instanz aus.
quelle
Ich verwende das folgende Skript, um die Benutzerkonten und Anmeldungen zu migrieren / zu erstellen. Führen Sie es von dem Server aus, auf dem Sie die Datenbank wiederhergestellt haben, und geben Sie den ursprünglichen Servernamen als Parameter für die Prozedur an.
Ich kann das Verfahren nicht gutschreiben, da ich es von einer anderen Stelle erhalten habe, aber es funktioniert einwandfrei.
quelle
Hier ist eine Lösung, die für mich funktioniert hat. Was es tut, ist:
EXEC sp_change_users_login 'REPORT'
EXEC sp_change_users_login 'UPDATE_ONE','<userName>','<userName>'
quelle
Sie können jederzeit versuchen, alle Benutzer in der Datenbank erneut mit ähnlich benannten Anmeldungen auf dem Datenbankserver zu verknüpfen.
quelle
Ich dachte, es lohnt sich, auf dieses einfache Problem mit der Behebung von Postern hinzuweisen. Dies ist das Skript, das ich unter SQL Server 2008 ausführe, wenn ich eine Produktionsdatenbank von einem Server auf eine Entwicklungs- / Testdatenbank auf einem anderen Server zurückschreibe, WENN der Benutzername unter Sicherheit> Benutzer der Datenbank angegeben ist, ABER in der
'login name'
Eigenschaft users auf fehlt Registerkarte "Allgemein":MSDN-Verweis hier Beachten Sie, dass der Artikel die Verwendung von ALTER USER für neuere Versionen von SQL empfiehlt.
quelle