Supportnet / Forum / Datenbanken
Rechte von Objekten in einer MS SQL Datenbank ändern
Frage
Hallo lieber Leser!
Mein Problem ist folgendes:
Habe in MS SQL7 eine Sicherung einer DB erstellt und diese Sicherung in MS SQL2000 wieder hergestellt. Es gibt aber Probleme mit einigen Objekten (Sichten). Da ich mich auf SQL2000 als sa einlogge habe ich auf einige Sichten kein zugriff, da sa nicht der Besitzer dieser Sicht ist. Ein select funktioniert nicht.
Wie kann man den Benutzer auf dbo zurückstellen? Als Benutzer auf die Sichten ist nicht der dbo eingestellt.
Wie kann man die DB von SQL7 nach SQL2000 besser exportieren?
Danke schonmal im voraus.
Chris
Antwort 1 von Tronje
Hi Chris,
hast du die Datei "System.mdb" mal bearbeitet, bzw. ersetzt?
Immerhin sind darin die Benutzerdaten gespeichert (sofern ich mich daran noch erinnern kann).
Gruss,
Tronje
hast du die Datei "System.mdb" mal bearbeitet, bzw. ersetzt?
Immerhin sind darin die Benutzerdaten gespeichert (sofern ich mich daran noch erinnern kann).
Gruss,
Tronje
Antwort 2 von otto
hahaaha das schaffst du nie!!!!!!!!!
Antwort 3 von hendrikw
Mit MS SQL habe ich sowas noch nicht gemacht; aber bei anderen SQL-Servern gehe ich da wie folgt vor: Ich selectiere mir die Logins und User aus der alten master/system-Datenbank und lege sie in der gleichen Reihenfolge (und Anzahl), d.h., mit den gleichen IDs auf dem neuen System an. Dann passt das zu den User-IDs, die in den einzelnen Datenbanken gespeichert sind und es gibt kein Chaos.
mfg
Hendrik
mfg
Hendrik
Antwort 4 von Christian Puckrandt
Der Besitzer eines Datenbankobjektes kann relativ einfach geändert werden:
Beispiel: Die Tabelle Tabelle1 hat den Besitzer Peter und soll dem Besitzer dbo zugeordnet werden.
Den Sql Query Analyzer starten und die betreffende Datenbank auswählen (einfach mit der Pfeiltaste von Master in die richtige Datenbank umwechseln).
In o.g. Beispiel wird folgender Code eingegeben:sp_changeobjectowner "Peter\Tabelle1","dbo"
Wichtig: Das Zeichen " ist jeweils durch das einfache Anführungszeichen ( Shift+#) zu ersetzen. Leider wird dieses Zeichen beim Absendebefehl unterdrückt, weswegen ich den Ausweg mit dem " gewählt habe, damit klar ist, was gemeint ist!
Den SQL-Code mit der grünen Pfeiltaste starten, fertig!
Achtung! VORHER im Enterprisemanager via Extras einen SQL-Script dieser Datenbank über ALLE Objekte erzeugen. Im SQL Analyzer als Suchbegriff den fehlerhaften Besitzer (in diesem Fall Peter) eintragen und das Suchprogramm starten. Taucht diese Tabelle in einer gespeicherten Prozedur auf, so MUSS der Eintrag Peter.Tabelle1 duch Tabelle1 ersetzt und die Prozedur neu gespeichert werden, anderenfalls ist die Prozedur nicht mehr ausführbar!
Mit o. g. Sysztemprozedur kannman den Besitzer in ALLEN Objekten einer Datenbank (also auch Sichten) ändern.
Überprüfen Sie VORHER unbedingt die Abhängigkeiten!
Beispiel: Die Tabelle Tabelle1 hat den Besitzer Peter und soll dem Besitzer dbo zugeordnet werden.
Den Sql Query Analyzer starten und die betreffende Datenbank auswählen (einfach mit der Pfeiltaste von Master in die richtige Datenbank umwechseln).
In o.g. Beispiel wird folgender Code eingegeben:sp_changeobjectowner "Peter\Tabelle1","dbo"
Wichtig: Das Zeichen " ist jeweils durch das einfache Anführungszeichen ( Shift+#) zu ersetzen. Leider wird dieses Zeichen beim Absendebefehl unterdrückt, weswegen ich den Ausweg mit dem " gewählt habe, damit klar ist, was gemeint ist!
Den SQL-Code mit der grünen Pfeiltaste starten, fertig!
Achtung! VORHER im Enterprisemanager via Extras einen SQL-Script dieser Datenbank über ALLE Objekte erzeugen. Im SQL Analyzer als Suchbegriff den fehlerhaften Besitzer (in diesem Fall Peter) eintragen und das Suchprogramm starten. Taucht diese Tabelle in einer gespeicherten Prozedur auf, so MUSS der Eintrag Peter.Tabelle1 duch Tabelle1 ersetzt und die Prozedur neu gespeichert werden, anderenfalls ist die Prozedur nicht mehr ausführbar!
Mit o. g. Sysztemprozedur kannman den Besitzer in ALLEN Objekten einer Datenbank (also auch Sichten) ändern.
Überprüfen Sie VORHER unbedingt die Abhängigkeiten!

