检查DB中是否存在存储过程?

san*_*084 5 sql database sql-server stored-procedures

我试图在多个数据库中的存储过程中授予执行权限.问题是这个存储过程可能不在某些数据库中.那么如何编写一个脚本来检查存储过程是否存在于数据库中,以及是否为用户提供了执行权限?

Yad*_*ada 5

许多方法:

1)

IF EXISTS (SELECT name 
       FROM   sysobjects 
       WHERE  name = N'proc1' 
       AND    type = 'P')
Run Code Online (Sandbox Code Playgroud)

2)

IF EXISTS (SELECT * 
           FROM   information_schema.routines
           WHERE  routine_name = 'Proc1')
Run Code Online (Sandbox Code Playgroud)


Håv*_*d S 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
Run Code Online (Sandbox Code Playgroud)