Sql-Server

如何將 SQL 代理代理授予 MSSQL 2014 中的公共角色

  • April 12, 2020

我想在 MSSQL 2014 中將 SQL 代理代理授予 msdb 數據庫中的公共角色。

我有以下查詢,我希望它返回一些有效的輸出。

USE [msdb] 
SELECT 
sp.name AS proxyname 
FROM dbo.sysproxylogin spl 
JOIN sys.database_principals dp 
 ON dp.sid = spl.sid 
JOIN sysproxies sp 
ON sp.proxy_id = spl.proxy_id 
WHERE principal_id = USER_ID('public');

在回答您的問題之前,我想提請您注意授予代理上的公共 Msdb 角色的權限。

參考:配置 SQL Server 代理代理帳戶的最佳實踐。

在向代理上的安全主體授予權限時必須小心謹慎,**尤其是在向代理上的公共 Msdb 角色授予權限時。數據庫中的每個使用者都是公共角色的成員,因此當公共 Msdb 角色被授予對代理的訪問權限時,每個使用者都可以訪問代理。**您可以查詢 sysproxylogin 系統表以獲取與每個 SQL Server 代理代理帳戶關聯的 SQL Server 登錄列表。

您可以通過使用以下 TSQL 來實現這一點(假設您的代理已正確創建)。

USE msdb ;  
GO  

EXEC dbo.sp_grant_login_to_proxy  
   @msdb_role = N'public',  
   @proxy_name = N'Proxy Name' ;  
GO 

有關使用的詳細sp_grant_login_to_proxy資訊。

引用自:https://dba.stackexchange.com/questions/264830