建立 SQL Server Agent Proxy

適用於:SQL Server

此主題描述如何使用 SQL Server Management Studio 或 Transact-SQL,在 SQL Server 中建立 SQL Server Agent Proxy。

SQL Server Agent Proxy 帳戶會定義作業步驟可以在其中執行的資訊安全內容。 每個 Proxy 都對應於一個安全性認證。 若要設定特定作業步驟的權限,請建立具有 SQL Server Agent 子系統之必要權限的 Proxy,然後將該 Proxy 指派給作業步驟。

Azure SQL 受控執行個體目前支援多數 (但非全部) 的 SQL Server Agent 功能。 如需詳細資訊,請參閱 Azure SQL 受控執行個體與 SQL Server 的 T-SQL 差異SQL 受控執行個體中的 SQL Agent 作業限制

開始之前

限制事項

  • 在建立 Proxy 之前,如果沒有認證可用,則必須先建立認證。

  • SQL Server Agent Proxy 會使用認證來儲存 Windows 使用者帳戶的相關資訊。 認證中所指定使用者對執行 SQL Server 的電腦必須具有「從網路存取這部電腦」的權限 (SeNetworkLogonRight)。

  • SQL Server Agent 會檢查 Proxy 的子系統存取權,並在每次作業步驟執行時,提供對該 Proxy 的存取權。 如果 Proxy 不再擁有子系統的存取權,作業步驟就會失效。 否則,SQL Server Agent 會模擬在 Proxy 中所指定的使用者,並執行作業步驟。 如需 Proxy 子系統的清單,請參閱 sp_grant_proxy_to_subsystem

  • 建立 Proxy 並不會改變 Proxy 認證中所指定之使用者的權限。 例如,您可能會為沒有連線至 SQL Server 執行個體之權限的使用者建立 Proxy。 在此情況下,使用該 Proxy 的作業步驟便無法連線到 SQL Server。

  • 如果使用者的登入身分可以存取 Proxy,或者使用者隸屬於可存取 Proxy 的角色,該使用者就可以使用作業步驟中的 Proxy。

安全性

權限

  • 只有 系統管理員 (sysadmin) 固定伺服器角色的成員才擁有建立、修改或刪除 Proxy 帳戶的權限。 您必須將非系統管理員 (sysadmin) 固定伺服器角色成員的使用者新增至 msdb 資料庫中的下列其中一個 SQL Server Agent 固定資料庫角色,才可以使用 Proxy:SQLAgentUserRoleSQLAgentReaderRoleSQLAgentOperatorRole

  • 如果除了 Proxy 之外還要建立認證,需要 ALTER ANY CREDENTIAL 權限。

使用 SQL Server Management Studio (SSMS)

若要建立 SQL Server Agent Proxy

  1. 在 [物件總管] 中,按一下加號展開要在 SQL Server Agent 上建立 Proxy 的伺服器。

  2. 選取加號以展開 [SQL Server Agent]。

  3. 以滑鼠右鍵按一下 [Proxy] 資料夾,然後選取 [新增 Proxy]

  4. [新 Proxy 帳戶] 對話方塊,於 [一般] 頁面上的 [Proxy 名稱] 方塊中輸入 Proxy 帳戶的名稱。

  5. [認證名稱] 方塊中,輸入 Proxy 帳戶將使用之安全性認證的名稱。

  6. [說明] 方塊中,輸入 Proxy 帳戶的說明。

  7. [對下列子系統有效]下,選取此 Proxy 的適當子系統。

  8. [主體] 頁面上,加入或移除登入或角色,藉此授與或移除 Proxy 帳戶的存取。

  9. 完成後,選取 [確定]

使用 Transact-SQL

若要建立 SQL Server Agent Proxy

  1. 在物件總管中,連線到資料庫引擎的執行個體。

  2. 在標準列上,選取 [新增查詢] 。

  3. 下列指令碼會建立名為 CatalogApplicationCredential 的認證、建立 Proxy Catalog application proxy,並為其指派認證 CatalogApplicationCredential,然後將 Proxy 存取權授與 ActiveX Scripting 子系統。 複製下列範例並將其貼到查詢視窗中,然後選取 [執行]。

    -- creates credential CatalogApplicationCredential  
    USE msdb ;  
    GO  
    CREATE CREDENTIAL CatalogApplicationCredential WITH IDENTITY = 'REDMOND/TestUser',   
        SECRET = 'G3$1o)lkJ8HNd!';  
    GO  
    -- creates proxy "Catalog application proxy" and assigns
    -- the credential 'CatalogApplicationCredential' to it.  
    EXEC dbo.sp_add_proxy  
        @proxy_name = 'Catalog application proxy',  
        @enabled = 1,  
        @description = 'Maintenance tasks on catalog application.',  
        @credential_name = 'CatalogApplicationCredential' ;  
    GO  
    -- grants the proxy "Catalog application proxy" access to 
    -- the ActiveX Scripting subsystem.  
    EXEC dbo.sp_grant_proxy_to_subsystem  
        @proxy_name = N'Catalog application proxy',  
        @subsystem_id = 2 ;  
    GO  
    

下一步