我正在尝试在多个数据库中的存储过程中授予执行权限。问题是这个存储过程可能不在某些数据库中。那么如何编写一个脚本来检查存储过程是否存在于数据库中,以及是否为用户提供了执行权限?
答案 0 :(得分: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')
答案 1 :(得分: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
答案 2 :(得分:0)
试试这个:
if exists (select 1
from sysobjects
where id = object_id('YourProc')
and type = 'P')
答案 3 :(得分: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
通过单击以下链接检查IF是否存在触发,功能 http://www.gurujipoint.com/2017/05/check-if-exist-for-trigger-function-and.html