[英]Execute permission issue in sql server for stored procedure
我在不同的客戶端上使用了很多存儲過程,對於幾個客戶端,有一個用戶AdminRole,並且需要為AdminRole添加執行權限,對於幾個客戶端,則沒有用戶AdminRole,也不需要執行權限。
每個存儲過程都有
例如:
CREATE PROCEDURE PROCEDURENAME AS
SELECT FIRSTNAME FROM TABLE1
GO
GRANT EXECUTE ON PROCEDURENAME TO ADMINROLE
GO
這行最后,但是,當沒有管理員角色時,該行將無法執行。 我如何在sql存儲過程中實現此邏輯?
If userrole contains AdminRole then
--Execute these 2 lines
GRANT EXECUTE ON PROCEDURENAME TO ADMINROLE
GO
else
'Do nothing
IF DATABASE_PRINCIPAL_ID('AdminRole') IS NOT NULL
如果存儲過程很多,並且您希望ADMINROLE對數據庫中所有存儲的proc具有執行權限,請運行以下命令
如果USER_ID('AdminRole')不是NULL則授權執行到[AdminRole] ELSE打印'數據庫中不存在AdminRole'
不知道您的解決方案中的“ AdminRole”是否實際上是SQL登錄名,SQL用戶或SQL數據庫角色
如果“ AdminRole”是SQL用戶(在數據庫級別)或SQL角色(在數據庫級別;相同的語法),並且您要檢查它是否存在(而不是檢查當前用戶是AdminRole還是AdminRole的成員),請執行:
IF EXISTS(SELECT name FROM sys.database_principals WHERE name='AdminRole')
BEGIN
-- do your GRANT here
END
如果“ AdminRole”是SQL登錄(在服務器級別),請執行以下操作:
IF EXISTS(SELECT name FROM sys.server_principals WHERE name='AdminRole')
BEGIN
-- do your GRANT here
END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.