Sql-Server-2012

以下角色創建要求的命令應該是什麼?

  • July 20, 2015

我需要創建一個角色,分配的使用者只能訪問“AdventureWorksDB”,他將擁有對數據庫中所有表、視圖和儲存過程的執行權限。我編寫了以下腳本。

USE AdventureWorks2012;
GO
CREATE USER test1 FOR LOGIN test1;
GO 

CREATE ROLE db_executor

GRANT EXECUTE TO db_executor

EXEC sp_addrolemember 'db_executor', 'test1'

但他還需要SQLAgentOperatorRoleSQL 代理的權限。但是,如果我要授予此權限,我必須授予他訪問權限msdb才能執行此操作。但是如果我給使用者,訪問 msdb 使用者也可以訪問其他數據庫。我該怎麼做才能讓使用者訪問只有一個數據庫廣告才能完全訪問 SQL 代理?

我不確定是否有任何其他選擇,但我相信使用者需要在 MSDB 中,或者應該具有管理員權限來執行或執行任何所需的作業操作。還有一個關於這個的連接項,SQL2005 SQLAgent MSDB 安全形色

或者您可以使用此處提到的選項:

您可以創建一個執行該作業的儲存過程。您可以使用 withexecute as owner以數據庫所有者身份執行儲存過程。這樣,使用者自己就不需要 sp_start_job 的權限

此外,如果可行,您可以閱讀Launching SQL Agent Job from stored procedure not on$$ msdb $$數據庫,或者,SET TRUSTWORTHY ON 的必要性有多大?

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