Frage

Ich benutze Datenbank-Skripte, wo ich für die Existenz einer gespeicherten Prozedur überprüfen dann legen Sie es dann erstellen.

Welche der folgenden wäre effizienter für die Überprüfung und Ablegen SPs
Option 1

IF EXISTS(SELECT * FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'[dbo].[myStoredProc]',N'P'))
  DROP PROCEDURE dbo.myStoredProc;

Option 2

IF OBJECT_ID (N'dbo. myStoredProc',N'P') IS NOT NULL
  DROP PROCEDURE dbo.myStoredProc;

Ich habe beschlossen, die zweite verwenden wegen offensichtlichen Gründen, gibt es keinen Grund, warum ich für die erste Option gehen sollte

War es hilfreich?

Lösung

Nein, es gibt keine zwingenden Gründe sys.objects direkt zu verwenden. Wie in der Tat, wird die Verwendung dieser sys Ansichten entmutigt - also, wenn Sie es vermeiden können, tun so

!

Stattdessen INFORMATION_SCHEMA Schema Ansichten sollen verwendet werden, wo möglich - (. Eher als eine Microsoft-spezifische Art und Weise der sys der Verwendung * Ansichten). Dies ist ein Standard-SQL-92-Mechanismen für die Metadaten über den Server Belichtung

Marc

Andere Tipps

Die Flut hat sich geändert. Aktuelle Politik von MSDN ist, dass sys.objects sollte statt INFORMATION_SCHEMA Ansichten verwendet werden, da die sys Ansichten mehr Informationen als die letzteren haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top