使用SQL Server代理運行CmdExec命令

來源:互聯網
上載者:User

需求:調用網伺服器(SMS SQL Server)上的簡訊發送介面(是一個預存程序)來發送(Stage SQL Server)上的資料內容到本Team 成員的手機上。這兩台伺服器,本地在撥VPN後可以訪問。要求以本地的SQL Server做跳轉,同時調用這兩台伺服器的資料介面。

實現方法與步驟(在本地的SQL Server環境):

1、建立一個SQL Server Job

2、建立一個調用 作業系統(CmdExec)命令的Job步驟,調用命令以完成自動撥VPN的功能。

代碼如:

rasdial idc_name user_name user_password

3、建立連結的伺服器SMS SQL Server和Stage SQL Server。

4、建立一個讀取Stage SQL Server上需要發送的資料內容,並調度SMS SQL Server的簡訊發送介面,完成簡訊發送的Job步驟(T-SQL)。

5、建立一個CmdExec的Job步驟,調用命令完成自動斷開VPN的功能。

代碼如:

rasdial idc_name /disconnect

6、設定這三個步驟的先後順序(2,4,5)。並設定調度頻率為每天早上9點。

該過程中可能涉及到兩個問題,如下:

1、分別調用兩個伺服器上的預存程序,可能需要開啟分散式交易。簡要步驟如下:

運行dcomcnfg命令,元件服務,電腦,我的電腦,屬性,MSDTC,安全配置

選中“網路DTC訪問”

在用戶端管理中選中“允許遠程用戶端”“允許遠端管理”

在交易管理通訊中選“允許入站”“允許出站”“不要求進行驗證”

保證DTC登陸賬戶為:NT Authority\NetworkService

2、執行CmdExec步驟的預設帳號是SQL Server代理的啟動帳號,一般是 NT AUTHORITY\NetworkService,該帳號不是sysadmin組,

不具備執行該命令的許可權。所以可能需要修改代理的啟動帳號為有許可權的帳號。

總結:本文總結問題的關鍵在於把握分散式交易的正確開啟以及SQL Server代理中,通常執行Job的帳號AUTHORITY\NetworkService並不屬於系統管理員組,代理執行一些任務失敗時,注意觀察所執行操作需要的許可權,例如本文的執行CmdExec命令,就需要sysadmin或者作業系統管理員的許可權。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.