2009-08-27 8 views
10

Vor einiger Zeit habe ich eine Datenbank unter SQL Server 2008 namens myDB in Windows XP, dann unter Logins unter dem Server, ich klickte Eigenschaften auf meinem Computer Login-Namen COMP23/Andrew und zugeordnet myDB Datenbank zu diesem mit dbowner als seine Rechte.Login User Mapping Problem in SQL Server 2008

Dann klonte ich diese XP-Installation als Backup, installierte Visa, erkannte, dass ich nicht wollte, dass Vista ich meine ursprüngliche XP-Kopie auf dem gleichen Rechner neu abgebildet. Allerdings ist das DB-Mapping wirklich durcheinander geraten! Grundsätzlich heißt es unter dem Server login COMP23 \ Andrew, es ist myDB zugeordnet, aber wenn ich auf myDB klicke und auf seine Benutzer schaue ist es nicht da. Ich denke, es hat sein SID-Mapping verloren, weil es eine neue Maschine denkt.

Unter dem Server login COMP23 \ Andrew Ich kann nicht die Zuordnung zu myDB deaktivieren, als wenn ich es sagt, kann nicht den Benutzer dbo fallen lassen. Ich kann den dbo Benutzer auch nicht ändern - es lässt mich nicht. Aber ich kann den Benutzer auch nicht unter myDB-Benutzern erscheinen lassen! Das bedeutet, dass ich mich nicht über meine Website-Einstellungen (asp.net web.config) anmelden kann! Wenn ich mich anmelde, sagt es nur: Kann die Datenbank "myDB", die vom Login angefordert wurde, nicht öffnen. Die Anmeldung ist fehlgeschlagen. Anmeldung fehlgeschlagen für Benutzer 'COMP23 \ ASPNET'

Irgendwelche Ideen? Wie kann ich das richtig umstellen? Ich habe sogar versucht, SQL Server 2008 neu zu installieren, aber der Computername ist immer noch dort der Datenbank zugeordnet.

Antwort

14

Da dbo ist der Eigentümer der Datenbank, deren Abbildung durch Änderung der Eigentümer der Datenbank geändert werden muss:

ALTER AUTHORIZATION ON database::[<yourdb>] TO [sa]; 
+0

Diese Lösung funktioniert für mich. Danke, Remus! Ich hatte diese Situation: Domain \ oldusr funktioniert nicht mehr in unserer Firma. Domäne \ oldusr als "dbo" (siehe unter Benutzerzuordnungen) für mehrere DBs zugeordnet. Dies führte zu Problemen, als ich versuchte, den Assistenten "Tasks> Datenbank kopieren" zu verwenden, um die Datenbank von einem Rechner auf einen anderen zu kopieren. Ich habe diesen Fehler erhalten: Kann den Principal 'domain \ oldusr' nicht finden, weil er nicht existiert oder Sie keine Berechtigung haben. Beim Ausführen der obigen Abfrage wurde die Benutzerzuordnung (als dbo) von dieser DB gelöscht. Am Ende konnte ich die Datenbank mit den Aufgaben> Datenbank kopieren kopieren. – firepol

0

Da Sie die SID-Zuordnungsproblem erwähnt, haben Sie sp_change_users_login mit ausprobiert? Verwenden Sie die Autofix-Option, um Ihre Anmeldung der Datenbank neu zuzuordnen.

Für Ihre obigen Beispiel befindet sich die folgende, während mit der Datenbank verbunden

EXEC `sp_change_users_login` @Action = 'autofix', @LoginName = 'COMP23\ASPNET' 
2

Zunächst einmal ausgeführt werden soll, können Sie keine Anführungszeichen rund um das gespeicherte Prozedur Namen haben. Zweitens ist es nicht Autofix sondern Auto_fix.

Schließlich, wenn diese Korrekturen vorgenommen werden, diese Fehlermeldung erhalten:

Msg 15600, Level 15, State 1, Procedure sp_change_users_login, Line 181 An invalid parameter or option was specified for procedure 'sys.sp_change_users_login'.

, wenn Sie diesen Befehl ausführen:

EXEC sp_change_users_login @Action = 'auto_fix', @LoginName = '<your username>' 
0
USE [Database] 
GO 

ALTER USER [dbo] WITH NAME=[username] 
GO 

sp_changedbowner 'sa' 
GO 
+0

Während dieses Code-Snippet die Frage lösen kann, [hilft eine Erklärung] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-results) wirklich, um die Qualität Ihres zu verbessern Post. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. –