適用於:SQL Server
本文說明如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中建立 SQL Server Agent Proxy。
SQL Server Agent Proxy 帳戶會定義可執行作業步驟的安全性內容。 每個代理都對應一個安全憑證。 若要設定特定作業步驟的許可權,請建立具有 SQL Server Agent 子系統所需許可權的 Proxy,然後將該 Proxy 指派給作業步驟。
這很重要
在 Azure SQL 受控實例上,目前支援大部分但並非所有 SQL Server Agent 功能。 如需詳細資訊,請參閱 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。
權限
只有 系統管理員成員 固定伺服器角色具有建立、修改或刪除 Proxy 帳戶的許可權。 非 sysadmin 固定伺服器角色成員的使用者必須新增至資料庫中 msdb 下列其中一個 SQL Server Agent 固定資料庫角色,才能使用 Proxy:
SQLAgentUserRoleSQLAgentReaderRoleSQLAgentOperatorRole
除了 Proxy 之外,建立認證還需要 ALTER ANY CREDENTIAL 許可權。
使用 SQL Server Management Studio (SSMS)
在 [物件總管]中,選取加號以展開您想在 SQL Server Agent 上建立 Proxy 的伺服器。
點選加號展開 SQL Server Agent。
以滑鼠右鍵按兩下 [Proxy] 資料夾,然後選取 [[新增 Proxy]。
在 新增 Proxy 帳戶 對話框的 一般 頁面上,在 Proxy 名稱 欄位中輸入 Proxy 帳戶的名稱。
在 [認證名稱] 方塊中,輸入 Proxy 帳戶將使用的安全性認證名稱。
在 [描述] 方塊中,輸入 Proxy 帳戶的描述
在 [Active 至下列子系統下,選取此 Proxy 的適當子系統或子系統。
在 [主體] 頁面上,新增或移除登入或角色,以授與或移除 Proxy 帳戶的存取權。
完成後,選取 確定。
使用 Transact-SQL
下列腳本會建立名為 CatalogApplicationCredential的認證,建立代理 Catalog application proxy,並將認證 CatalogApplicationCredential 指派給代理,並將代理的存取權授與 ActiveX Scripting 子系統。
建立認證
CatalogApplicationCredential。USE msdb; GO CREATE CREDENTIAL CatalogApplicationCredential WITH IDENTITY = 'REDMOND/TestUser', SECRET = 'G3$1o)lkJ8HNd!'; GO建立 proxy
Catalog application proxy,並將認證CatalogApplicationCredential指派給它。EXECUTE dbo.sp_add_proxy @proxy_name = 'Catalog application proxy', @enabled = 1, @description = 'Maintenance tasks on catalog application.', @credential_name = 'CatalogApplicationCredential'; GO授予代理
Catalog application proxy存取 ActiveX 腳本子系統的權限。EXECUTE dbo.sp_grant_proxy_to_subsystem @proxy_name = N'Catalog application proxy', @subsystem_id = 2; GO