2010-02-01 5 views
5

나는 하나 이상의 데이터베이스에 저장된 proc에서 execute privs를 허용하려하고있다. 문제는이 저장된 proc이 일부 데이터베이스에 없을 수도 있다는 것입니다. 그렇다면 어떻게 저장 프로 시저가 데이터베이스에 존재하는지 검사하는 스크립트를 작성하고 if가 사용자에게 실행 권한을 제공합니까? 그것을 할 수DB에 저장된 proc 파일이 있는지 확인 하시겠습니까?

답변

4

이 시도 :

,
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[your_procedure_name]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) 
BEGIN 
    -- Set privileges here 
END 
5

많은 방법 :

1)

IF EXISTS (SELECT name 
     FROM sysobjects 
     WHERE name = N'proc1' 
     AND type = 'P') 

2)

IF EXISTS (SELECT * 
      FROM information_schema.routines 
      WHERE routine_name = 'Proc1') 
0

이 시도 :

if exists (select 1 
     from sysobjects 
     where id = object_id('YourProc') 
     and type = 'P') 
0

선택하면 저장 프로 시저를 위해 존재

IF EXISTS (SELECT * FROM sys.objects 
      WHERE object_id = OBJECT_ID 
       (N'[Schema].[Procedure_Name]') AND type IN (N'P', N'PC')) 
    BEGIN 
      DROP PROCEDURE [Schema].[Procedure_Name] 
      Print('Proceudre dropped => [Schema].[Procedure_Name]') 
    END 

확인 아래 링크를 클릭하여도 트리거 기능을 위해 존재하는 경우 http://www.gurujipoint.com/2017/05/check-if-exist-for-trigger-function-and.html

관련 문제