Das Problem ist, dass die Wiederherstellung die Datenbankbenutzer von der ursprünglichen Serverinstanz zurückbringt, die neue Instanz jedoch normalerweise nichts von diesen Benutzeranmeldungen weiß. Sie werden unter Sicherheit auf Datenbankebene angezeigt, haben jedoch keine entsprechenden Anmeldungen auf Serverebene.
Sie müssen die Datenbankbenutzer mit Serveranmeldungen auf der Instanz, auf der Sie die Datenbank wiederhergestellt haben, erneut zuordnen.
Es gibt mehrere Möglichkeiten, dies zu tun:
Erstellen Sie für sie neue Anmeldungen auf der neuen Instanz. Anschließend müssen Sie sie als Datenbankbenutzer auf der neuen Instanz entfernen und ihre neuen Anmeldungen hinzufügen. Dies erscheint seltsam, da Sie dieselben Anmeldenamen erstellen können, die SIDs (Sicherheitskennungen) jedoch unterschiedlich sind und SQL diese für die Benutzeridentifikation verwendet. Dies ist einfach genug für ein oder zwei Anmeldungen.
Wenn Sie dieselben Benutzer und dieselben SIDs für alle Instanzen beibehalten möchten, verwenden Sie die gespeicherte Prozedur sp_help_revlogin . Kopieren Sie den Code aus dem Link, der die erforderlichen gespeicherten Prozeduren erstellt, und führen Sie ihn auf dem Server aus, von dem Sie Benutzer kopieren möchten. Es wird ein SQL-Skript generiert, das Sie auf Ihrem Zielserver ausführen können, um dieselben Benutzer zu erstellen, die SIDs, Kennwörter und alles mit sich führen. Dies ist der richtige Weg, wenn Sie viele Datenbankbenutzer haben, die Sie erneut auf der Zielinstanz verbinden müssen, oder wenn Sie keine Kennwörter für ein oder mehrere SQL-Anmeldungen auf der Quellinstanz kennen.
EXEC sp_change_users_login 'Auto_Fix', 'User', NULL, 'password';
statt. :)Hier ist was ich gefunden habe.
Wie squillman ausführte, werden die Benutzer mit der Datenbank kopiert, die Anmeldungen jedoch nicht. Es gibt eine Store-Prozedur namens sp_change_users_login, mit der Sie das Problem beheben können. Die Schritte dazu sind in diesem Artikel beschrieben . Einzelheiten zur Verwendung des Store-Verfahrens finden Sie auf dieser Seite .
quelle
Ab SQL Server 2012 gibt es einen T-SQL-Befehl, mit dem vorhandene Benutzer neuen Anmeldungen zugewiesen werden können. Erstellen Sie die Anmeldung, aber versuchen Sie nicht, Benutzerzuordnungen vorzunehmen (dies würde fehlschlagen). Dann führen Sie aus:
Dadurch wird das vorhandene Login dem neuen Benutzer zugeordnet. SQL-Dokumentation hier: https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-user-transact-sql?view=sql-server-2017
quelle