none
Stored Procedure schon vorhanden, wird aber nicht angezeigt RRS feed

  • Frage

  • Hallo,

    wenn ich eine Stored Procedure mit Create anlegen will, sagt mir die Fehlermeldung dass die SP schon vorhanden ist. Ich kann diese SP aber beim besten Willen im DB Explorer nicht finden. Auch klicken auf Refresh beim Zweig Stored Procedures hilft nichts. Meine Desktop App die per DAL auf diese SP zugreifen will, wirft auch eine Exception mit der Meldung "SP nicht vorhanden". Ich habe schon versucht, mittels DROP die SP zu löschen. Es kommt "Command completed sucessfully". Das darauf folgende CREATE wirft aber Msg 2714, Level 16, State 3, Procedure GetUsersWhere, Line 26
    There is already an object named 'GetUsersWhere' in the database.

    Was mache ich falsch?

    lg
    florian
    Mittwoch, 24. Juni 2009 10:02

Antworten

  • Vielen Dank für die Hilfe, ich hab mein Problem gelöst. Ich hatte die Scripts immer per Doppelklick auf das *.sql file gestartet (im Windows Explorer), dann Connected, dann Execute --> er hats in die MASTER Tabelle reingeschrieben...

    Lösung: ich hab vor den CREATE Commands einfach ein USE 'myDB' GO eingefügt, jetzt funkts auch wieder...

    Danke für die Hilfe anyway!
    Mittwoch, 24. Juni 2009 16:00

Alle Antworten

  • Sofern du keinen Schemanamen für die Prozedur angibst, erstellt SQL Server die Prozedur im Standardschema des jeweiligen Benutzers, der den CREATE PROCEDURE Befehl ausführt. Wahrscheinlich ist dieses Schema ein anderes als Dein DAL verwendet.

    Schau mal im Objektexplorer unter Security->Schema ob es da "unerwünschte" Einträge gibt und erstelle die Prozedur mit expliziter Schemaname.Objectname Konvention. Deine DAL sollte ebenfalls diese Konvention verwenden.

    Dies hilft Dir vielleicht weiter: http://msdn.microsoft.com/en-us/library/ms190387(SQL.90).aspx


    -- Frank Kalis Microsoft SQL Server MVP Webmaster: http://www.insidesql.org
    Mittwoch, 24. Juni 2009 10:33

  • Danke für deine Antwort - noch bevor ich das ausprobiere - würde das auch damit zusammenpassen, dass ich im MSSQL Server Management Studio diese SP's nicht sehen kann?
    Mittwoch, 24. Juni 2009 10:49

  • Die Stored Procedure erstelle ich mit dem Schema dbo, also z.b.

     CREATE Procedure [dbo].[securityGetUsersWhere]

    diese Konvention wird auch im DAL verwendet...


    Aber warum sehe ich die SP's nicht im DB Explorer?
    Mittwoch, 24. Juni 2009 10:56
  • Evtl. weil der Name irrtümlich für ein anderes Objekt (Tabelle, Sicht o. ä.) verwendet wurde,
    denn solche Namen müssen eindeutig sein. Probiere mal

    SELECT * FROM sys.all_objects WHERE name = N'securityGetUsersWhere';
    

    Anhand der type Spalte kannst Du den Typ des Objekts ermitteln.
    Siehst Du das Objekt immer noch nicht, so kann es daran liegen, dass Du zu wenig
    Rechte hast, siehe Konfigurieren der Sichtbarkeit von Metadaten

    Gruß Elmar

    Mittwoch, 24. Juni 2009 12:56
    Beantworter
  • Vielen Dank für die Hilfe, ich hab mein Problem gelöst. Ich hatte die Scripts immer per Doppelklick auf das *.sql file gestartet (im Windows Explorer), dann Connected, dann Execute --> er hats in die MASTER Tabelle reingeschrieben...

    Lösung: ich hab vor den CREATE Commands einfach ein USE 'myDB' GO eingefügt, jetzt funkts auch wieder...

    Danke für die Hilfe anyway!
    Mittwoch, 24. Juni 2009 16:00