為非 sysadmin 固定服務器角色成員的用戶執(zhí)行作業(yè)或命令時,設置或檢索 SQL Server 代理程序和 xp_cmdshell 擴展存儲過程使用的代理帳戶信息。代理帳戶是 Microsoft® Windows® 帳戶,作業(yè)或命令提示符命令在此帳戶的安全上下文中運行。
xp_sqlagent_proxy_account
{ N'GET' |
N'SET', N'agent_domain_name', N'agent_username', N'agent_password'
}
N'GET'
檢索當前 SQL Server 代理程序的代理帳戶的名稱。N'GET' 的數(shù)據(jù)類型為 nvarchar,無默認設置。
N'SET'
設置 Windows 帳戶以用作 SQL Server 代理程序的代理帳戶。使用 agent_domain_name、agent_username 和 agent_password 以指定 Windows 帳戶用作代理帳戶。如果沒有指定有效的 Windows 帳戶信息,例如沒有指定正確的密碼,則 sp_sqlagent_proxy_account 將收到錯誤信息。N'SET' 的數(shù)據(jù)類型為 nvarchar,無默認設置。
'agent_domain_name'
是包含 agent_username 中指定的 Windows 用戶帳戶的 Windows 域的名稱。agent_domain_name 的數(shù)據(jù)類型為 nvarchar,無默認設置。
'agent_username'
是用作 SQL Server 代理程序的代理帳戶的 Windows 帳戶的名稱。agent_username 的數(shù)據(jù)類型為 nvarchar,無默認設置。
'agent_password'
是在 agent_username 中指定的 Windows 帳戶的密碼。agent_password 的數(shù)據(jù)類型為 nvarchar,無默認設置。
說明 必須按順序指定 xp_sqlagent_proxy_account 的參數(shù)。無法使用命名參數(shù)。
0(成功)或 1(失?。?/P>
當執(zhí)行 xp_sqlagent_proxy_account 失敗后,SQL Server 將生成包含有關錯誤的錯誤信息。
如果已經設置 SQL Server 代理程序的代理帳戶,則指定 N'GET' 時 xp_sqlagent_proxy_account 將返回帶有下列信息的結果集。
| 列 | 數(shù)據(jù)類型 | 描述 |
|---|---|---|
| domain | sysname | 包含用作 SQL Server 代理程序的代理帳戶的 Windows 帳戶的域。 |
| username | sysname | 用作 SQL Server 代理程序的代理帳戶的 Windows 帳戶。 |
如果還沒有設置 SQL Server 代理程序的代理帳戶,或如果指定了 N'SET',則不返回任何結果集。
SQL Server 代理程序的代理帳戶允許不屬于 sysadmin 固定服務器角色的 SQL Server 用戶執(zhí)行 xp_cmdshell 和自己的 SQL Server 代理程序作業(yè)。管理員可以給代理帳戶指派適當?shù)陌踩珯嘞?,以控制這些作業(yè)在網(wǎng)絡中訪問資源的能力。
SQL Server 用戶使用 xp_cmdshell 執(zhí)行命令提示符命令時,命令必須在 Windows 帳戶的安全上下文中執(zhí)行。如果 SQL Server 用戶是 sysadmin 固定服務器角色的成員,則 SQL Server 使用 SQL Server 服務在其下運行的 Windows 帳戶執(zhí)行命令提示符命令。如果執(zhí)行 xp_cmdshell 的 SQL Server 用戶不是 sysadmin 固定服務器角色的成員,則 SQL Server 使用指定為 SQL Server 代理程序的代理帳戶的 Windows 帳戶執(zhí)行命令。如果沒有設置任何 SQL Server 代理程序的代理帳戶,則用戶將收到錯誤信息。SQL Server 代理程序作業(yè)還必須在 Windows 帳戶的安全上下文中執(zhí)行。如果作業(yè)為 sysadmin 固定服務器角色的成員所有,則作業(yè)使用 SQL Server 服務在其下運行的 Windows 帳戶來執(zhí)行。如果作業(yè)所有者不在 sysadmin 中,則作業(yè)使用 SQL Server 代理程序的代理帳戶執(zhí)行,并且如果沒有設置任何代理帳戶,則將產生錯誤。
xp_sqlagent_proxy_account 將為在其上執(zhí)行的實例設置或檢索代理帳戶。該實例的 SQL Server 服務必須在 Windows 管理員帳戶下運行,以讀取或設置 SQL Server 代理程序的代理帳戶。
xp_sqlagent_proxy_account 的執(zhí)行權限默認授予 sysadmin 固定服務器角色的成員。
下例檢索當前指派的用作 SQL Server 代理程序的代理帳戶的帳戶。
EXEC master.dbo.xp_sqlagent_proxy_account N'GET'
下面是結果集。
Domain Username
------------------------------------
NETDOMAIN john
下例沒有指定密碼,將 SQL Server 代理程序的代理帳戶設置為 LONDON\ralph。如果 LONDON/ralph 帳戶實際上有密碼,則下例將會接收到擴展存儲過程無法登錄的錯誤信息。
EXEC master.dbo.xp_sqlagent_proxy_account N'SET',
N'NETDOMAIN', -- agent_domain_name
N'ralph', -- agent_username
N''agent password
下例將 SQL Server 代理程序的代理帳戶設置為 LONDON\Ralph 并指定密碼。
相關文章EXEC master.dbo.xp_sqlagent_proxy_account N'SET',
N'NETDOMAIN', -- agent_domain_name
N'ralph', -- agent_username
N'RalphPwd',agent password