Frage SQL Server-Datenbank wiederhergestellt. Fehler beim Anmelden fehlgeschlagen


Ich habe eine Datenbank zurück auf meinen SQL-Server wiederhergestellt. Ich habe ein ASP-Programm, das auf die db zugreift. Wenn ich das ausführe, erhalte ich eine Fehleranmeldung, die für diesen Benutzer fehlgeschlagen ist. Was genau muss ich dafür tun?


5
2018-01-27 00:38


Ursprung


Antworten:


Es ist wahrscheinlich, dass die Anmeldung, auch wenn sie auf dem neuen Server vorhanden ist, nicht identisch ist. Logins-Informationen werden mit einer SID gespeichert, die (normalerweise) für jeden Server eindeutig ist. Es gibt Möglichkeiten, die Login-SIDS bei Bedarf zu übertragen, aber Sie können auch einfach einem neuen Login / Benutzer auf dem neuen Server Berechtigungen für die Objekte in Ihrer Datenbank erteilen.

Hier ist ein Link zum Übertragen von Logins. http://support.microsoft.com/kb/246133


3
2018-01-27 00:56



Eine Datenbank Benutzer unterscheidet sich von einem SQL Server Anmeldung.  EIN Anmeldung hat Zugriff auf den Server und ist in fast allen Fällen auch mit Benutzerkonten verbunden, die bestimmte Berechtigungen für eine oder mehrere Datenbanken haben. Was in Ihrem Fall passiert ist, dass der Benutzer immer noch in der Datenbank vorhanden ist (weil er dort war, als Sie die Datenbank wiederhergestellt haben), aber nicht existiert - als Login - auf dem Server. Das bedeutet, dass ihnen keine Anmeldung zugeordnet ist, da es sich um Logins handelt nicht mit einer DB-Wiederherstellung wiederhergestellt.

Wenn ich eine Datenbank auf einen neuen Server verschiebe, lasse ich den Benutzer normalerweise einfach aus der wiederhergestellten Datenbank fallen und erstelle dann eine Anmeldung. Zu diesem Zweck erstellen Sie zuerst Ihr Login auf der Registerkarte "Sicherheit" auf DB-Ebene. Als nächstes verwenden Sie einfach die Seite "Benutzerzuordnung" im Dialogfeld "Anmeldeeinstellungen", um automatisch ein zugehöriges Benutzerkonto in jeder Datenbank zu erstellen, für die es geeignet ist. Hier können Sie auch bestimmte Rechte vergeben.

jedochEs gibt einen Haken: Sie können den Benutzer möglicherweise nicht aus der Datenbank löschen. Dies geschieht, wenn der Benutzer ein Schema oder andere Objekte in der Datenbank "besitzt". In diesem Fall müssen Sie entweder den Link von Palehorse für weitere Anweisungen verwenden (ich vergesse die Befehle aus dem Kopf) oder Sie müssen das Schema / die Objekte zurücksetzen, um stattdessen dbo zu verwenden.


3
2018-01-27 01:09



Wenn es sich um eine SQL Server-basierte Anmeldung handelt und Sie die Datenbank auf einem UNTERSCHIEDLICHEN SQL-Server wiederhergestellt haben, als dort, wo sie ursprünglich war, dann ist die Antwort von Palehorse die Art, Logins zu übertragen. Wenn der ursprüngliche SQL Server nicht verfügbar ist, können Sie auf dem neuen SQL Server eine SQL Server-Anmeldung erstellen und sp_change_users_login verwenden, um die Anmeldung und den Benutzer zu synchronisieren. In der Onlinedokumentation erfahren Sie, wie Sie dies tun.

Wenn die Anmeldung ein Windows-Domänenkonto war und Sie SQL Server geändert haben, sollten Sie in der Lage sein, einfach die Anmeldung dem neuen SQL Server hinzuzufügen und die Anmeldung und der Benutzer werden synchronisiert. Die SID in SQL Server für eine Windows-basierte Anmeldung stammt von der SID des Kontos auf Server- oder Domänenebene.

Wenn Sie die Wiederherstellung auf demselben SQL Server durchgeführt haben, überprüfen Sie, ob die Standarddatenbank für die Anmeldung gültig ist. Die Anmeldung wird in der Master-Datenbank gespeichert, so dass die Wiederherstellung der Datenbank für die Anwendung dies nicht beeinflusst haben sollte. Das ist, es sei denn, Sie haben die zuletzt verwendete Verbindung geändert.

Wenn Sie darüber hinaus mehr darüber berichten könnten, wie Sie sich bei SQL Server anmelden, und die genaue Fehlermeldung, kann dies helfen, das Problem zu diagnostizieren.


1
2018-01-27 03:12



Das hat für mich funktioniert:

ALTER USER *userName* WITH LOGIN = *loginName*
ALTER USER *userName* WITH DEFALT_SCHEMA = *schemaName*

(Ersetzen Sie 'UserName' und 'LoginName' durch die entsprechenden Werte für Ihre Einrichtung.)

Das ist das gleiche wie sp_change_users_login, denke ich, aber die dox Erwähnung sp_change_users_login wird aus zukünftigen Versionen von SQL Server entfernt und stattdessen ALTER USER verwendet


1
2017-11-07 20:10



VON http://justgeeks.blogspot.com/2010/02/get-login-failed-for-user-after.html

Wenn Sie erhalten, dass die Anmeldung für den Benutzer "oldUser" fehlgeschlagen ist. Da konnte die explizit angegebene Datenbank nicht geöffnet werden.

Führe das einfach aus sp_change_users_login 'Update_One', 'oldUser', 'oldUser' und Voila! :)


1
2017-10-27 21:07



Überprüfe dein Verbindungszeichenfolge. (Wenn ASP.NET das web.config sollte dies haben). Überprüfen Sie, ob die Anmeldung (Benutzername / Benutzer-ID) auf dem SQL-Server existiert und hat entsprechende Berechtigungen auf der Datenbank.


0
2018-01-27 00:52



Wenn Sie Ihre Antworten auf die obigen Kommentare sehen, bedeutet dies, dass Sie diese von einem anderen Server wiederhergestellt haben. Das sagte, wie bnkdev sagte, überprüfen Sie Ihre Verbindungszeichenfolge. Wahrscheinlich haben Sie entweder die falsche Benutzer-ID / Kennwort-Kombination und / oder den falschen Instanznamen ... vorausgesetzt, sie wurden für jeden Server unterschiedlich benannt.


0
2018-01-27 00:56



Überprüfen Sie zunächst, ob verwaiste Benutzer mit der folgenden gespeicherten Prozedur verwaist sind:

exec sp_change_users_login @Action='Report'

Dann können Sie die Benutzer mit folgenden Benutzernamen neu zuordnen:

exec sp_change_users_login @Action='update_one', @UserNamePattern='UserName', @LoginName='LoginName'

(Ersetzen Sie 'UserName' und 'LoginName' durch die entsprechenden Werte für Ihre Einrichtung).


0
2018-05-08 20:20