2010-02-01 22 views
5

Birden çok veritabanında saklı proc yürütme priv yürütmeye çalışıyorum. Sorun, bu saklanan proc, bazı veritabanlarında olmayabilir. Peki, veritabanında saklanan proc olup olmadığını kontrol eden bir komut dosyası yazabilirim ve daha sonra kullanıcı için yürütme izni verir mi? bunu yapmak içinDepolanmış probu DB'de mevcut mu kontrol edin?

cevap

4

bu deneyin:

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

birçok yolu:

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

bu deneyin:

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

Kontrol EĞER saklı yordam için Var

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 

Kontrol linki aşağıda tıklayarak da Tetik, İşlevi için Var EĞER http://www.gurujipoint.com/2017/05/check-if-exist-for-trigger-function-and.html

İlgili konular