2009-04-28 1 views
3

私はストアドプロシージャが存在するかどうかをチェックし、それをドロップして作成するデータベーススクリプトを使用します。私が原因秒1を使用することを決定したオプション1object_id()とsys.objects

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

オプション2

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


のSPをチェックし、削除するための、より効率的になり、次の

明らかな理由で、私が最初のオプションのために行かなければならない理由がありますか

答えて

1

いいえ、sys.objectsを直接使用する理由はありません。実際には、これらのsysビューの使用は推奨されていません。回避することができれば、そうしてください!

代わりに、INFORMATION_SCHEMAスキーマビューは、可能であれば使用することになっています。これは、Microsoft *固有のsys。*ビューの使用方法ではなく、サーバーに関するメタデータを公開するための標準SQL-92メカニズムです。

マーク

2

潮時が変更されました。 MSDNの現行の方針では、sys_objectsはINFORMATION_SCHEMAビューの代わりに使用する必要があります。これは、sysビューに後者より多くの情報があるためです。

関連する問題