1
我有一個SQL Server的奇怪問題。我有一個小的觸發器,在更新時向Web服務發出請求。SQL腳本在此服務器上運行,但不在其他服務器上
我已經測試過該代碼,它工作正常。
但是,當我將該代碼移動到另一臺SQL Server計算機時,它不會運行。沒有錯誤發生。
更新:如果我打電話給「獲取」請求,沒關係。對於「發佈」請求,該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
「獲取」 請求I測試:
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
會發生什麼?從字面上看沒有什麼?你能展示觸發器嗎? – scsimon
@scsimon:我已添加代碼 – haiduong87
相同的服務器版本?相同的DB名稱?只是問問別人會想知道什麼。一開始我沒有看到問題,但會看起來更深。 – scsimon