【问题标题】:Calling web service from SQL Agent Job not working从 SQL 代理作业调用 Web 服务不起作用
【发布时间】:2010-08-18 05:39:47
【问题描述】:

我有一个 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 中手动运行时工作正常?

【问题讨论】:

    标签: sql-server-2005 sql-server-2000 activex sql-job


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多