Benutzer mit den meisten Antworten
Rechte beim anlegen von Prozeduren

Frage
-
Hallo NG,
ich habe eine SETUP.EXE programmiert die seit Jahren nahezu perfekt alle Installations- und Update-Aufgaben erledigt. Alles sehr freundlich für User mit geringen Kentnissen zum SQL-Server.
Jetzt ist, beim anlegen von Prozeduren, folgendes passiert.
gewünscht war
dbo.clear_logfile
anlegt wurde
HD\weber.clear_logfile
Kann so etwas passieren, wenn die SETUP unter Admin-Rechten gelaufen ist?
Wie kann ich so etwas in Zukunft dauerhaft verhindern?
Ich sehe die Kunden-Server in den allermeisten Fällen niemals, meine Routine müsste also programmatisch erkennen das das Anlegen nicht als dbo erfolgt.
Ich bedanke mich für jeden Tipp.
mfG
Uli Münch
Antworten
-
Hallo Uli,
gewünscht war
dbo.clear_logfileanlegt wurde
HD\weber.clear_logfilewarum gibtst Du nicht einfach dbo.clear_logfile an? Dann wird auch das richtige Schema verwendet.
Ich denke mal, dass das dann passiert, wenn der Benutzer ein eigenes Schema in der Datenbank hat bzw. ihm ein anderes Default Schema zugewiesen ist. In Fall würde CREATE PROCEDURE Abc dann im Schema des Users die Proc Abc anlegen und nicht in dbo.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Olaf HelperMVP Freitag, 5. November 2010 07:59
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 18. November 2010 18:09
-
Ich sehe die Kunden-Server in den allermeisten Fällen niemals, meine Routine müsste also programmatisch erkennen das das Anlegen nicht als dbo erfolgt.
Hallo Uli,
so kann man erkennen ob default Schema auf 'dbo' gesetzt ist:
if ( select dbp.default_schema_name from sys.server_principals sp inner join sys.database_principals dbp on sp.sid= dbp.sid where sp.name = system_user ) != 'dbo' begin raiserror('default_schema_name ist ungleich dbo',16,1) end
Gruß Yury- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 18. November 2010 18:09
Alle Antworten
-
Hallo Uli,
gewünscht war
dbo.clear_logfileanlegt wurde
HD\weber.clear_logfilewarum gibtst Du nicht einfach dbo.clear_logfile an? Dann wird auch das richtige Schema verwendet.
Ich denke mal, dass das dann passiert, wenn der Benutzer ein eigenes Schema in der Datenbank hat bzw. ihm ein anderes Default Schema zugewiesen ist. In Fall würde CREATE PROCEDURE Abc dann im Schema des Users die Proc Abc anlegen und nicht in dbo.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Olaf HelperMVP Freitag, 5. November 2010 07:59
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 18. November 2010 18:09
-
Ich sehe die Kunden-Server in den allermeisten Fällen niemals, meine Routine müsste also programmatisch erkennen das das Anlegen nicht als dbo erfolgt.
Hallo Uli,
so kann man erkennen ob default Schema auf 'dbo' gesetzt ist:
if ( select dbp.default_schema_name from sys.server_principals sp inner join sys.database_principals dbp on sp.sid= dbp.sid where sp.name = system_user ) != 'dbo' begin raiserror('default_schema_name ist ungleich dbo',16,1) end
Gruß Yury- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 18. November 2010 18:09