2

SQL 2005 SQL エージェント ジョブから実行する予定の SQL 2000 DTS パッケージがあります。この DTS には、Web サービスを呼び出す次の VBScript を持つ ActiveX ステップがあります。

Dim http: set http = CreateObject("MSXML2.ServerXMLHTTP.6.0") 
http.setProxy 2, "http://123.45.67.89:8080" 
http.open "GET", "http://mywebservices.com/MyWebMethod?Param1=value1", false 
http.setProxyCredentials "SQLServiceAccount", ""
http.send

この DTS を手動で実行すると、正常に動作し、Web サービスを呼び出すことができることがわかります。ただし、SQL ジョブから実行する場合、Web サービスは呼び出されません。これでもエラーは発生しませんが、ログから、Web サービスが呼び出されていないことがわかります。SQLServiceAccount としてログインしているときに DTS を手動で実行しようとしましたが、これは正常に機能します。SQL ジョブの所有者は「sa」です

SQL ジョブから実行すると機能しないのに、DTS で手動で実行すると正常に機能する理由を知っている人はいますか?

4

1 に答える 1

2

これに対する私の解決策は、ストアドプロシージャからWebサービスを呼び出し、DTSパッケージではなくSQlジョブでこれを実行することでした。

SQL 2000では、このようにt-sqlでWebサービスを呼び出すことができます。

  exec sp_OACreate 'MSXML2.ServerXMLHTTP.6.0', @obj OUT
  exec sp_OAMethod @obj, 'Open', NULL, 'GET','http://mydomain.com/mywebservicesite/default.asmxL', false
  exec sp_OAMethod @obj, 'send'
  exec sp_OAGetProperty @obj, 'responseText', @response OUT
  exec sp_OADestroy @obj
于 2010-09-30T19:51:41.467 に答える