簡體   English   中英

在SQL Server中執行存儲過程的權限問題

[英]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

DATABASE_PRINCIPAL_ID怎么樣

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM