2

我有一个 SQL 2000 DTS 包,它计划从 SQL 2005 SQL 代理作业运行。在此 DTS 中有一个 ActiveX 步骤,它具有以下 VBScript 来调用 Web 服务。

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 服务。这甚至不会引发错误,但我可以从我们的日志中看出没有调用 webserivce。我尝试在以 SQLServiceAccount 身份登录时手动运行 DTS,效果很好。SQL 作业所有者是“sa”

任何人都知道为什么这在从 SQL 作业运行时不起作用但在 DTS 中手动运行时工作正常?

4

1 回答 1

2

我对此的解决方案是从存储过程调用 Web 服务,然后让 SQl 作业运行它而不是 DTS 包

您可以在 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 回答