Microsoft SQL Server - Wer hat eine Stored Procedure erstellt?

8

Gibt es eine gute Möglichkeit zu sagen, wer eine gespeicherte Prozedur in SQL Server 2005 erstellt hat (das funktioniert auch in 2008)? In SQL Management Studio kann ich rechte Maus / Eigenschaften auf einem Proc, um das erstellte Datum / Uhrzeit zu bekommen, aber wie finde ich den Ersteller?

    
BuddyJoe 03.03.2009, 23:50
quelle

5 Antworten

6

Es ist vielleicht zu spät für Sie, aber Sie können die DDL-Aktivität verfolgen.

Wir haben eine Tabelle in unserer Verwaltungsdatenbank, in die alle Aktivitäten eingefügt werden. Es verwendet einen DDL-Trigger, neu bis 2005. Diese Skripte erstellen eine Tabelle in Ihrer Admin-DB (SQL_DBA für mich), erstellen einen Trigger für die Modell-DB, erstellen Trigger für vorhandene Datenbanken. Ich habe auch eine sp_msforeachDB-Anweisung am Ende erstellt, um alle zu deaktivieren.

Ein Vorbehalt - Ihre Datenbanken müssen sich im Kompatibilitätsmodus 90 (in Optionen für jede Datenbank) befinden, sonst können Fehler auftreten. Das Konto im EXECUTE AS-Teil der Anweisung benötigt ebenfalls Zugriff zum Einfügen in Ihre Admin-Tabelle.

%Vor%     
Sam 04.03.2009, 00:36
quelle
3

Ich glaube, dass dies in SQL 2005 nicht verfügbar ist. Natürlich ist es nicht in den Eigenschaften in SQL Management Studio verfügbar und nicht in der Tabelle sys.objects oder anderen, die ich sehen kann.

    
Rory 04.03.2009 00:10
quelle
3

Wenn es nicht zu lange her ist, versuchen Sie Folgendes:

%Vor%

Er wählt die aktuelle Standardkurve aus. Wenn es kürzlich erstellt wurde (und der Server zuletzt nicht neu gestartet wurde), befinden sich der Name des gespeicherten Prozedurobjekts und der Anmeldename, der ihn erstellt hat, in den Ablaufverfolgungsdaten.

    
Mitch Wheat 04.03.2009 00:11
quelle
2

Entlang der gleichen Idee wie Sam können Sie einen DDL-Trigger verwenden, um die benötigten Informationen zu erfassen und diese Daten an eine SQL Service Broker-Warteschlange zu senden, die sie an die Admin-Datenbank weiterleiten kann ), die dann alle DDL-Änderungen enthalten würde.

Dadurch wird das Berechtigungsproblem behoben, da der DDL-Trigger Daten in eine Service Broker-Warteschlange in der lokalen Datenbank lädt und SQL das Verschieben der Nachricht in die andere Datenbank übernimmt.

Es würde etwas mehr Setup mit dieser Methode geben, aber nach der Einrichtung würde es funktionieren, egal wer das Objekt verändert hat.

    
mrdenny 31.03.2009 04:49
quelle
0

Wie man dieses Stück Ex-post (besonders Jahre später) bekommt, ist höchstwahrscheinlich nicht möglich.

Sie können jedoch SQL Server Profiler verwenden, um DDL-Aktionen zu verfolgen. Überprüfen Sie in der Ereignisauswahl die folgenden Ereignisse:

Objekte / Objekt: geändert

Objekte / Objekt: Erstellt

Objekte / Objekt: Gelöscht

Es gibt auch viele Anpassungsoptionen: Sie können die Ausgabe in einer Datei oder Tabelle speichern, die Ausgabe außerdem anhand von Spalten usw. filtern.

    
Attila Csipak 19.11.2009 08:55
quelle