2010-08-18 73 views
1

我有一個計劃從SQL 2005 SQL代理作業運行的SQL 2000 DTS包。在這個DTS中有一個ActiveX步驟,它具有以下VBScript來調用Web服務。從SQL代理作業調用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未被調用。我曾嘗試手動運行DTS,而以SQLServiceAccount身份登錄並且此工作正常。 SQL作業所有者是'sa'

任何人都有一個想法,爲什麼從SQL作業運行時不起作用,但在DTS中手動運行時工作正常?

回答

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