2010-02-01 10 views
5

estoy tratando de otorgar privs de ejecución en proc almacenado en más de una base de datos. El problema es que este proceso almacenado podría no estar en algunas de las bases de datos. Entonces, ¿cómo puedo escribir un script que compruebe si el proceso almacenado existe en la base de datos y si proporciona privs de ejecución para el usuario?Verifica si existe proc almacenado en DB?

Respuesta

4

Prueba esto:

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

muchas maneras de hacerlo:

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

Prueba esto:

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

Comprobar si existen para realizar el procedimiento almacenado

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 

Comprobar si existen para el disparador, la función también haciendo clic a continuación enlace http://www.gurujipoint.com/2017/05/check-if-exist-for-trigger-function-and.html

Cuestiones relacionadas