Forums Neueste Beiträge
 

nocht dbo-Besitzer verhindert Zugriff

25/11/2007 - 17:12 von Andy Dorwald | Report spam
Hallo NG,

ich habe folgendes Problem.

Per Trigger werden, sobald ein Benutzer in "Tabelle A" einen Eintrag
vorgenommen hat, eine neue Tabelle erzeugt. Wenn nun der Benutzer der "SA"
Benutzer ist, hat die Tabelle als Besitzer ganz korrekt "dbo". Wenn aber ein
anderer Benutzer angemeldet ist und den Eintrag vornimmt, dann wird zwar
ebenfalls eine neue Tabelle erzeugt, aber dieses Mal mit dem Besitzer
"UserX". Nun kann ich aber nicht mehr ohne Weiteres Abfragen ausführen, ohne
vorangestellten Besitzernamen (die ich teils aber nicht kenne, da ja
verschiedene Benutzer Tabellen anlegen können).

Hier ein Beispiel:

Fall 1:
Benutzer "SA" macht einen Eintrag in "tblTabellen" und erzeugt dank Trigger
die Tabelle "tblTest". Diese wurde nun als "dbo.tblTest" angelegt

Fall 2:
Benutzer "UserA" macht einen Eintrag in "tblTabellen" und erzeugt dank
Trigger die Tabelle "tblTest". Diese wurde nun als "UserA.tblTest" angelegt

Wenn ich nun als "SA" das "SELECT * FROM tblTest" ausführe, erhalte ich bei
"Fall 1" meine Daten, bei "Fall 2" jedoch die Fehlermeldung "Server:
Nachr.-Nr. 208, Schweregrad 16, Status 1, Zeile 1 Ungültiger Objektname
'tblTest'.". Wenn ich aber "SELECT * FROM UserA.tblTest" ausführe, erhalte
die Daten - doch das kann ja nicht die Lösung sein, denn so müsste ich ja
immer wissen, WER der Besitzer ist!!!???!!!

Jetzt meine zwei Fragen. Kann ich dem Script meines Triggers das Recht
geben, das dieses (da es ja auf dem Server liegt) sich selbststàndig als
"SA" ausführt und somit die Tabelle als "dbo" erzeugt? Oder anders gefragt
WIE sorge ich dafür, dass Tabellen, die ich "per Script" erzeuge, für ALLE
Benutzer zugànglich sind - ohne das ich im SQL-Statement den Besitzernamen
voranstellen muss???

Herzlichen dank für jeden Tipp!
Andy
 

Lesen sie die antworten

#1 Olaf Pietsch
25/11/2007 - 17:52 | Warnen spam
Hallo Andy,

"Andy Dorwald" schrieb im Newsbeitrag
news:fic6tm$ct2$02$

Per Trigger werden, sobald ein Benutzer in "Tabelle A" einen Eintrag
vorgenommen hat, eine neue Tabelle erzeugt. Wenn nun der Benutzer der "SA"
Benutzer ist, hat die Tabelle als Besitzer ganz korrekt "dbo". Wenn aber
ein anderer Benutzer angemeldet ist und den Eintrag vornimmt, dann wird
zwar ebenfalls eine neue Tabelle erzeugt, aber dieses Mal mit dem Besitzer
"UserX". Nun kann ich aber nicht mehr ohne Weiteres Abfragen ausführen,
ohne vorangestellten Besitzernamen (die ich teils aber nicht kenne, da ja
verschiedene Benutzer Tabellen anlegen können).



Wenn man beim Create Table den Eigentümer / das Schema nicht angibt, dann
wird der Benutzer verwendet.
http://msdn2.microsoft.com/en-us/li...74979.aspx

Also man muss in Deinem Fall das Schema beim CREATE TABLE mit angeben.
CREATE TABLE schema_name. table_name ...

Haben alle User das Recht Tabellen zu erstellen? Welchen Hintergrund hat
Dein Vorgehen, dass jeder User Tabellen in der Datenbank erstellen darf ?

Gruß Olaf
Ich unterstütze PASS Deutschland e.V. (http://www.sqlpass.de)
Blog (http://www.sqlpass.de/PASSUserBlogs...x?BlogID=3)
Regionalgruppe Köln/Bonn/Düsseldorf
(http://www.sqlpass.de/Regionalgrupp...fault.aspx)

Ähnliche fragen