2009-04-28 3 views
3

나는 저장 프로 시저가 있는지 확인한 다음 놓은 다음 데이터베이스 스크립트를 사용합니다. SP의에게
옵션 1object_id() vs 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; 

옵션으로 인해 두 번째 사용 명백한 이유 때문에, 첫 번째 옵션으로 가야하는 이유가 있습니까?

답변

1

아니요. sys.objects를 직접 사용해야하는 특별한 이유가 없습니다. 사실,이 sys 뷰의 사용은 권장되지 않습니다. 따라서 피할 수 있다면 그렇게하십시오!

대신 INFORMATION_SCHEMA 스키마 뷰는 가능하면 사용하는 것으로 가정합니다. 이것은 sys. * 뷰를 사용하는 Microsoft 고유의 방법이 아닌 서버에 대한 메타 데이터를 표시하기위한 표준 SQL-92 메커니즘입니다.

마크

2

조수가 변경되었습니다. MSDN의 현재 정책은 sys.objects가 INFORMATION_SCHEMA보기 대신 사용되어야한다는 것입니다. 왜냐하면 sys보기에는 후자보다 많은 정보가 있기 때문입니다.