2016-09-15 3 views
1

Ich habe ein seltsames Problem mit SQL Server. Ich habe einen kleinen Auslöser, der beim Update eine Anfrage an einen Webservice stellt.SQL-Skript auf diesem Server ausgeführt, aber nicht auf anderen Server

Ich habe diesen Code getestet, es hat gut funktioniert.

Aber wenn ich diesen Code auf einen anderen SQL Server-Computer verschieben, wird es nicht ausgeführt. Kein Fehler wird ausgelöst.

Update: Wenn ich eine "Get" -Anfrage aufrufen, ist es in Ordnung. Mit "Post" -Anforderung kann dieser SQL Server nicht damit umgehen. Beide Server laufen unter Windows 2012

Meine Code-Abfrage zu nennen:

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 

Die "GET" Anfrage Ich teste:

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 
+0

Was passiert? Wörtlich nichts? Kannst du den Auslöser zeigen? – scsimon

+0

@scsimon: Ich habe den Code hinzugefügt – haiduong87

+0

Gleiche Serverversionen? Gleiche DB-Namen? Fragen Sie einfach, was andere wissen wollen. Im ersten Durchgang sehe ich das Problem nicht, sondern werde tiefer schauen. – scsimon

Antwort

Verwandte Themen