Sql-Server
授予目前數據庫中的數據庫角色在 msdb 中執行 SP 的權限
我在我目前的 SQL Server 2012 數據庫中創建了一個具有
db_datareader
、db_datawriter
和execute
權限的角色。目前 db 中的一個過程在sp_start_job
msdb 中呼叫。如何授予對我的數據庫角色的訪問權限以在 msdb 中執行該過程?
我嘗試在目前數據庫中執行該過程,該數據庫呼叫
sp_start_job
為所有者,而作為使用者定義角色成員的使用者仍然無法執行該過程。我已經
public
為登錄設置了伺服器角色,並將其映射到 msdb 數據庫,但我無法授予權限。我要執行的命令是:GRANT EXECUTE ON OBJECT::[msdb].[dbo].[sp_start_job] TO [db_executor]
當我從 msdb 執行時,我得到的錯誤是:
找不到使用者“db_executor”,因為它不存在或您沒有權限。
當我從創建使用者定義角色的數據庫中執行時
db_executor
,它會引發此錯誤:您只能授予或撤銷目前數據庫中對象的權限。
我不想將使用者添加到
SQLAgentOperatorRole
. 這個想法是將所有使用者分組到應用程序數據庫中的一個角色中,並且該角色的成員應該能夠在數據庫中執行呼叫sp_start_job
.
以下是您應該遵循的步驟:
- 熟悉SQL Server 代理固定數據庫角色中的材料。
- 決定哪一個對你有好處
- 使用類似於以下的腳本(但首先選擇特定的 msdb 角色)來實現您的要求:
USE [master] GO CREATE LOGIN [DOMAIN\user] FROM WINDOWS GO USE [msdb] GO CREATE USER [DOMAIN\user] FOR LOGIN [DOMAIN\user] GO USE [msdb] GO EXEC sp_addrolemember N'SQLAgentOperatorRole', N'DOMAIN\user' GO
微軟創建了允許這種事情的特殊角色
授予
EXECUTE
將sp_start_job
不起作用,因為開始工作時所做的權限和檢查僅與角色成員資格相關聯。USE msdb ALTER ROLE SQLAgentOperatorRole ADD MEMBER DR_user;