Проверить, существует ли сохраненный процесс в БД? - PullRequest
5 голосов
/ 01 февраля 2010

Я пытаюсь предоставить права на выполнение в хранимых процессах в нескольких базах данных. Проблема в том, что этот хранимый процесс может отсутствовать в некоторых базах данных. Итак, как я могу написать скрипт, который проверяет, существует ли сохраненный процесс в базе данных, и предоставляет ли он исполняемые права пользователю?

Ответы [ 4 ]

5 голосов
/ 01 февраля 2010

много способов сделать это:

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')
4 голосов
/ 01 февраля 2010

Попробуйте это:

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
0 голосов
/ 21 мая 2017

Проверьте, существует ли хранимая процедура

  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

Проверьте, существует ли IF для триггера, функция также нажав ссылку ниже http://www.gurujipoint.com/2017/05/check-if-exist-for-trigger-function-and.html

0 голосов
/ 01 февраля 2010

Попробуйте это:

if exists (select 1
      from sysobjects
      where  id = object_id('YourProc')
      and type = 'P')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...