我有一个SQL 2000 DTS包,计划从SQL 2005 SQL Agent作业运行。在这个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中手动运行时工作正常?
答案 0 :(得分:1)
我的解决方案是从存储过程调用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