DetailPage-MSS-KB

Knowledge Base

Artikel-ID: 240872 - Geändert am: Montag, 16. Mai 2011 - Version: 8.0

Dieser Artikel wurde zuvor veröffentlicht unter D240872
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
240872  (http://support.microsoft.com/kb/240872/EN-US/ ) How to resolve permission issues when you move a database between servers that are running SQL Server
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.

Auf dieser Seite

Zusammenfassung

Dieser Artikel beschreibt, wie Sie beim Verschieben einer Datenbank auf einen anderen SQL-Server Standardlogins und integrierte Logins zur Behebung von Berechtigungsproblemen zuordnen.

Weitere Informationen

Wenn Sie eine Datenbank von einem SQL Server-Server auf einen anderen SQL Server-Server verschieben, kann es sein, dass ein Konflikt zwischen den Sicherheits-IDs (SIDs) der Benutzernamen in der master-Datenbank und den Benutzern in der Benutzerdatenbank auftritt. Standardmäßig beinhalten SQL Server 7.0, SQL Server 2000 und SQL Server 2005 die systemeigene gespeicherte Prozedur sp_change_users_login, um diese konfliktierenden Benutzerinformationen zuzuordnen. Die einzige Einschränkung liegt darin, dass sp_change_users_login nur dabei hilft, Standardbenutzernamen in SQL Server zuzuordnen und dass die Zuordnung für jeden Benutzer einzeln erfolgen muss. Weitere Informationen zu sp_change_users_login finden Sie unter dem Thema "sp_change_users_login" in der Onlinedokumentation zu SQL Server 7.0, SQL Server 2000 und SQL Server 2005.

Ab SQL Server 7.0 erfolgt die Zuordnung von Benutzernamen in der master-Datenbank und Benutzern in der Benutzerdatenbank mithilfe von SIDs. Diese Zuordnung ist entscheidend dafür, dass die richtigen Berechtigungen für die Benutzernamen in der Benutzerdatenbank erhalten bleiben. Geht diese Zuordnung verloren, so treten bei der Anmeldung unter anderem folgende Probleme mit Berechtigungen auf:
  • Existiert der SQL Server-Benutzername nicht auf dem neuen Server und versucht der Benutzer sich anzumelden, so wird dem Benutzer möglicherweise folgende Fehlermeldung angezeigt:
    Server: Nachr.-Nr. 18456, Schweregrad 16, Status 1
    Fehler bei der Anmeldung für den Benutzer X!
  • Existiert der SQL Server-Benutzername auf dem neuen Server, aber stimmt die SID in der master-Datenbank nicht mit der SID in der Benutzerdatenbank überein, kann sich der Benutzer zwar erfolgreich in SQL Server anmelden, erhält jedoch beim Zugriff auf diese Datenbank eventuell die folgende Fehlermeldung:
    Server: Nachr.-Nr. 916, Schweregrad 14, Status 1, Zeile 1
    Der Serverbenutzer X ist kein gültiger Benutzer in der Y-Datenbank.
    Hinweis In SQL Server 2005 wird dem Benutzer möglicherweise folgende Fehlermeldung angezeigt:

    Der Serverbenutzer X ist kein gültiger Benutzer in der Y-Datenbank. Fügen Sie zunächst das Benutzerkonto zur Datenbank hinzu.
Weitere Informationen zum Sicherheitsmodell von SQL Server 7.0 finden Sie im "Microsoft SQL Server 7.0 Security"-Whitepaper. Sie finden dieses White Paper auf der folgenden Website von Microsoft:
http://msdn2.microsoft.com/en-us/library/Aa226173(SQL.70).aspx (http://msdn2.microsoft.com/en-us/library/Aa226173(SQL.70).aspx)
Weitere Informationen zum Sicherheitsmodell von SQL Server 2000 finden Sie im folgenden Artikel der Microsoft Knowledge Base:
322712  (http://support.microsoft.com/kb/322712/DE/ ) Microsoft SQL Server 2000 SP3 Security Features und Empfehlung

Einschränkungen

  • Wenn es Benutzer ohne Präfix des Computer- bzw. Domänennamens aber mit Objekten in der Tabelle sysusers gibt und diese Objekte in Anwendungen mit dem zweiteiligen Namen Benutzername.Objektname referenziert sind, kann die Anwendung abstürzen, da die Prozedur sp_sidmap diese Benutzer mit dem Präfix des Computer- bzw. Domänennamens so umbenennt, wie sie in der Tabelle sysxlogins erscheinen. Benennen Sie die in sysusers betroffenen Benutzer in ihre alten Namen um, nachdem die Prozedur sp_sidmap ausgeführt wurde, um dieses Problem zu umgehen. Alternativ können Sie sich auch an Ihren Support wenden.
  • Bei diesem Artikel wurden Aliase nicht berücksichtigt. Um diese müssen Sie sich von Hand kümmern.
  • Wenn auf dem neuen SQL Server-Server kein standardmäßiger SQL Server-Login besteht, muss der Login mit einem NULL-Kennwort hinzugefügt werden. Gegebenenfalls müssen Sie die Kennwörter für diese Logins entsprechend ändern.
  • Wurde ein Benutzer in der Benutzerdatenbank unter einem völlig anderen Namen angelegt als derjenige, der in der Tabelle sysxlogins erscheint, so ist es unmöglich, den entsprechenden Namen für diesen Benutzer herauszufinden. Bevor Sie also die gespeicherte Prozedur sp_sidmap ausführen:
    1. Übernehmen Sie alle Objekte, die dieser Benutzer besitzt, in eine Staging-Datenbank.
    2. Löschen Sie den Benutzer, fügen Sie den Benutzer mit dem richtigen Namen hinzu, und übertragen Sie dann alle Daten für diesen Benutzer zurück.
  • Hat ein Benutzer keinen entsprechenden Benutzernamen und auch kein Präfix für entweder den lokalen Computernamen oder den Domänennamen, so wird eine Meldung für diesen Benutzer ausgegeben, dass das Präfix erst auf Windows-Ebene und dann in SQL Server als Login hinzugefügt werden muss. Anschließend ist die Prozedur sp_sidmap erneut auszuführen.
  • Wenn ein Benutzer ein Präfix für entweder den Domänennamen oder den lokalen Windows NT-Servernamen hat, dieser aber nicht in der Tabelle sysxlogins existiert, versucht die Prozedur dies als neuen Benutzernamen für SQL Server hinzufügen. Existiert der Windows-Benutzer nicht, wird im Ergebnisfenster eine Meldung ausgegeben und anschließend wird der Benutzer erstellt, nachdem erst der Windows-Benutzer hinzugefügt wurde.
  • Gibt es mehr als nur einen Benutzernamen für einen Benutzer in der Tabelle sysusers, so wird Ihnen eine Meldung in der Ergebnisdatei angezeigt, in der alle Logins mit dem gleichen Benutzernamen aufgeführt sind. Nun müssen Sie von Hand eingreifen, um sicherzustellen, dass dem Benutzer nur ein Benutzername zugeordnet ist.

    Beispiel Wenn es in der Tabelle sysusers einen Benutzer namens "SusiSorglos" und in sysxlogins Logins mit Namen wie "Test\SusiSorglos" und "Test2\SusiSorglos" gibt, so wird Ihnen nach Ausführung der Prozedur eine Meldung angezeigt, die Sie darauf aufmerksam macht, dass es für einen der Benutzer mehrere Logins gibt und dass sich der Systemadministrator für einen dieser Logins entscheiden muss. Dies ist der einzige Fall, bei dem die Ausführung der zweiten gespeicherten Prozedur sp_prefix_sysusersname erforderlich ist, die in diesem Artikel beschrieben wird. Diese Situation wird auch in der später erwähnten Datei Readme.txt detailliert beschrieben.

Zuordnen von Standardlogins und integrierten Logins

Nachdem eine Datenbank von einem SQL Server-Server auf einen anderen SQL Server-Server verschoben wurde, sollten Sie die folgenden Schritte ausführen, um möglichst wenig eingreifen zu müssen:
  1. Stellen Sie sicher, dass es für jeden Benutzer in der Tabelle sysusers der Datenbank einen Login in der Tabelle sysxlogins der master-Datenbank gibt.

    Hinweis Wie Sie einen Standardlogin für SQL Server hinzufügen finden Sie unter dem Thema "sp_addlogin" in der Onlinedokumentation zu SQL Server. Wie Sie einen integrierten Login für SQL Server hinzufügen finden Sie unter dem Thema "sp_grantlogin" in der Onlinedokumentation zu SQL Server.
  2. Laden Sie sich die Datei MapSids.exe wie im nächsten Abschnitt beschrieben herunter, und extrahieren Sie die Dateien sp_sidmap.sql und Readme.txt.
  3. Melden Sie sich als Systemadministrator am SQL Server-Server an, und führen Sie anschließend die Datei sp_sidmap.sql in der Benutzerdatenbank aus. Das Ausführen der Datei sp_sidmap.sql erzeugt die beiden gespeicherten Prozeduren sp_sidmap und sp_prefix_sysusersname.
  4. Stellen Sie sicher, dass ausschließlich der Benutzer auf die Datenbank zugreift, der die Prozeduren ausführt.
  5. Stellen Sie sicher, dass Ergebnisse im Fenster des Query Analyzer als Text und nicht als Raster dargestellt werden. Damit die Ergebnisse als Text dargestellt werden, drücken Sie entweder die Tastenkombination CTRL^T oder klicken Sie auf Abfrage und anschließend auf Ergebnisse in Text. Das ist sehr wichtig, damit Sie die Ergebnisse und die zusätzlichen Informationen in einem Fenster anzeigen können und die Ausgabe in einer Textdatei speichern können. Diese Datei wird unter Umständen später benötigt, um einige der Zuordnungen aufzulösen.
  6. Da es keine Möglichkeit gibt, um die korrekte Übergabe der Parameter zu überprüfen, sollten Sie sicherstellen, dass die Parameter richtig an die Prozedur sp_sidmap übergeben werden.Ersetzen Sie die Werte für die alten und die neuen Domänen- und Servernamen entsprechend.
  7. Speichern Sie die Ergebnisse in einer Datei. Befolgen Sie die Anweisungen aus der Readme-Datei.

    Hinweis Bedenken Sie dabei, dass beim Ausführen der vorherigen Schritte lediglich die Tabelle sysusers in der Datenbank verändert wird. Wenn Sie zur Ausgangssituation zurückkehren möchten, stellen Sie die Datenbank von der Sicherungskopie wieder her oder hängen Sie sie erneut an.

Informationsquellen

Weitere Informationen finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
274188  (http://support.microsoft.com/kb/274188/DE/ ) Problemthema "Behandlung" bei verwaisten Benutzern in Online-Dokumentation befindet sich Unvollständig
246133  (http://support.microsoft.com/kb/246133/DE/ ) Übertragen von Benutzernamen und Kennwörtern zwischen Instanzen von SQL-Server
168001  (http://support.microsoft.com/kb/168001/DE/ ) Fehler bei Benutzeranmeldung und/oder Berechtigung nach Wiederherstellen von Sicherung
298897  (http://support.microsoft.com/kb/298897/DE/ ) BEISPIEL: Mapsids.exe zeigt die Hilfe Zuordnung SIDs zwischen Benutzer und Master-Datenbank an, wenn Datenbank verschoben wird

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-Bit Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Keywords: 
kbsqlssis kbhowtomaster KB240872
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Freigeben
Weitere Supportoptionen
Microsoft Community-Supportforen
Kontaktieren Sie uns direkt
Zertifizierten Partner finden
Microsoft Store