2009-04-28 5 views
3

J'utilise des scripts de base de données où je vérifie l'existence d'une procédure stockée, puis je la dépose puis la crée.object_id() vs sys.objects

Lequel des éléments suivants serait plus efficace pour le contrôle et l'abandon 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; 

J'ai décidé d'utiliser la deuxième raison pour des raisons évidentes, y at-il une raison pour laquelle je devrais aller pour la première option

Répondre

1

Non, il n'y a pas de raison impérieuse d'utiliser sys.objects directement. En fait, l'utilisation de ces vues système est déconseillée - alors si vous pouvez l'éviter, faites-le! A la place, les vues du schéma INFORMATION_SCHEMA sont supposées être utilisées dans la mesure du possible - il s'agit d'un mécanisme SQL-92 standard pour exposer les métadonnées de votre serveur (plutôt qu'une manière spécifique à Microsoft d'utiliser les vues sys. *).

Marc

2

La marée a changé. La stratégie actuelle de MSDN est que sys.objects doit être utilisé à la place des affichages INFORMATION_SCHEMA, car les vues sys ont plus d'informations que celles-ci.

Questions connexes