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?
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%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.
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.
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.
Tags und Links sql-server sql-server-2005 metadata