Supportnet / Forum / Datenbanken
MS Sql Rechte auf Tabellen
Frage
Hallo.
Folgendes Problem:
einige Tabellen einer MS SQL DB haben als Besitzer nicht den dbo.
Deswegen gibt es Probleme mit dem Zugriff.
Wie kann ich die Rechte auf den Tabellen wieder dem dbo zuteilen?
Antwort 1 von abc123
GRANT SELECT, INSERT, UPDATE, DELETE, ALTER
TO dbo
WITH GRANT OPTION
TO dbo
WITH GRANT OPTION
Antwort 2 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!
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!
Antwort 3 von RealName
Danke für schnelle Antwort. Hat funktioniert.