2010-02-01 141 views
5

我想在多個數據庫中存儲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

相關問題