none
Rechte beim anlegen von Prozeduren RRS feed

  • 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

     

     

     

    Donnerstag, 4. November 2010 19:35

Antworten

  • Hallo Uli,

    gewünscht war
    dbo.clear_logfile

    anlegt wurde
    HD\weber.clear_logfile

    warum 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
    Donnerstag, 4. November 2010 20:03
    Moderator
  • 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

    Donnerstag, 4. November 2010 21:43

Alle Antworten

  • Hallo Uli,

    gewünscht war
    dbo.clear_logfile

    anlegt wurde
    HD\weber.clear_logfile

    warum 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
    Donnerstag, 4. November 2010 20:03
    Moderator
  • 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

    Donnerstag, 4. November 2010 21:43
  • Hallo ,

    besten Dank für die schnelle Hilfe.

    mfG

    Uli Münch

    Freitag, 5. November 2010 08:31