建立 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 帳戶的權限。 不是系統管理員固定伺服器角色成員的用戶必須新增至資料庫中下列其中一個 SQL Server Agent 固定資料庫角色msdb
,才能使用 Proxy:SQLAgentUserRole、SQLAgentReaderRole 或 SQLAgentOperatorRole。
ALTER ANY CREDENTIAL
除了 Proxy 之外,建立認證也需要許可權。
使用 SQL Server Management Studio (SSMS)
在 [物件總管] 中,按一下加號展開要在 SQL Server Agent 上建立 Proxy 的伺服器。
選取加號以展開 [SQL Server Agent]。
以滑鼠右鍵按一下 [Proxy] 資料夾,然後選取 [新增 Proxy]。
在 [新 Proxy 帳戶] 對話方塊,於 [一般] 頁面上的 [Proxy 名稱] 方塊中輸入 Proxy 帳戶的名稱。
在 [認證名稱] 方塊中,輸入 Proxy 帳戶將使用之安全性認證的名稱。
在 [說明] 方塊中,輸入 Proxy 帳戶的說明。
在 [對下列子系統有效]下,選取此 Proxy 的適當子系統。
在 [主體] 頁面上,加入或移除登入或角色,藉此授與或移除 Proxy 帳戶的存取。
完成後,選取 [確定]。
使用 Transact-SQL
下列指令碼會建立名為 CatalogApplicationCredential
的認證、建立 Proxy Catalog application proxy
,並為其指派認證 CatalogApplicationCredential
,然後將 Proxy 存取權授與 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
授與 Proxy
Catalog application proxy
對 ActiveX 腳本子系統的存取權。EXECUTE dbo.sp_grant_proxy_to_subsystem @proxy_name = N'Catalog application proxy', @subsystem_id = 2; GO