Sql server SQL脚本在此服务器上运行,但不';t在其他服务器上

Sql server SQL脚本在此服务器上运行,但不';t在其他服务器上,sql-server,web-services,sql-server-2012,Sql Server,Web Services,Sql Server 2012,我对SQL Server有一个奇怪的问题。我有一个小触发器,它在更新时向web服务发出请求 我已经测试了该代码,它工作得很好 但是,当我将代码移动到另一台SQL Server计算机时,它不会运行。没有出现错误 更新:如果我调用“获取”请求,就可以了。对于“Post”请求,SQL Server无法处理它。两台服务器都在Windows 2012上运行 我的呼叫请求代码: DECLARE @dbName NVARCHAR(50) DECLARE @wsAction NVARCHAR(50) DECLA

我对SQL Server有一个奇怪的问题。我有一个小触发器,它在更新时向web服务发出请求

我已经测试了该代码,它工作得很好

但是,当我将代码移动到另一台SQL Server计算机时,它不会运行。没有出现错误

更新:如果我调用“获取”请求,就可以了。对于“Post”请求,SQL Server无法处理它。两台服务器都在Windows 2012上运行

我的呼叫请求代码:

DECLARE @dbName NVARCHAR(50)
DECLARE @wsAction NVARCHAR(50)
DECLARE @secret NVARCHAR(255)
DECLARE @url NVARCHAR(MAX)
DECLARE @idArray NVARCHAR(MAX)
DECLARE @triggerTime DATETIME

SET @dbName = 'dbname' + '/notification/object'
SET @secret = 'a key'
SET @url   = 'https://myserver/api/1.0.0/customer/databaseName='
SET @idArray = '1,2,3'
SET @wsAction = '"action": "modify"'

IF(@idArray <> '')
BEGIN
    DECLARE @Object INT;
        DECLARE @body NVARCHAR(MAX)
    SET @url = @url + @dbName;
    SET @body = '{"ids": [' + @idArray + '], ' + @wsAction +'}'

    EXEC sp_OACreate 'MSXML2.ServerXMLHTTP', @Object OUT;
    EXEC sp_OAMethod @Object, 'setOption', null, 2, 13056 -- by pass ssl
    EXEC sp_OAMethod @Object, 'open', NULL, 'post', @url,'false'
    EXEC sp_OAMethod @Object, 'setRequestHeader', null, 'secret', @secret
    EXEC sp_OAMethod @Object, 'setRequestHeader', null, 'Accept-Encoding', 'gzip, deflate'
    EXEC sp_OAMethod @Object, 'send', NULL, @body
    Declare @ResponseText as Varchar(8000);
    Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT
    Select @ResponseText
    EXEC sp_OADestroy @Object
END
我发现了问题 “msxml3.dll”的已知错误: 这个链接对我很有帮助: 要获取错误信息,我发现了问题 “msxml3.dll”的已知错误: 这个链接对我很有帮助:
要获取错误信息

会发生什么?什么都没有?你能显示触发器吗?@scsimon:我添加了相同的服务器版本的代码?相同的数据库名称?只是问别人想知道什么。第一次通过时,我看不出问题所在,但会看得更深入。“SQL Server 11.0.5623”-无法运行“Post”请求的服务器是否存在阻止“Post”方法的防火墙策略或SQL配置?在触发器中调用外部服务是个坏主意-您应该保留触发器(如果您有任何触发器的话)非常精简和小巧-不要在触发器内部执行任何繁重的操作、大量的处理或调用外部服务。。。。这会延迟事务提交(或回滚)直到服务调用完成,这可能导致主应用程序的性能非常差。您应该将这两件事解耦——触发器和web服务调用。会发生什么?什么都没有?你能显示触发器吗?@scsimon:我添加了相同的服务器版本的代码?相同的数据库名称?只是问别人想知道什么。第一次通过时,我看不出问题所在,但会看得更深入。“SQL Server 11.0.5623”-无法运行“Post”请求的服务器是否存在阻止“Post”方法的防火墙策略或SQL配置?在触发器中调用外部服务是个坏主意-您应该保留触发器(如果您有任何触发器的话)非常精简和小巧-不要在触发器内部执行任何繁重的操作、大量的处理或调用外部服务。。。。这会延迟事务提交(或回滚)直到服务调用完成,这可能导致主应用程序的性能非常差。您应该将这两件事解耦——触发器和web服务调用。
Declare @Object as Int;
Declare @ResponseText as Varchar(8000);

Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'get',
                                                          'http://www.webservicex.com/stockquote.asmx/GetQuote?symbol=MSFT', --Your Web Service Url (invoked)
                                                          'false'
Exec sp_OAMethod @Object, 'send'
Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT

Select @ResponseText


Exec sp_OADestroy @Object