【问题标题】:Improve OLE Automation stored procedure改进 OLE 自动化存储过程
【发布时间】:2018-07-10 08:06:49
【问题描述】:

我有以下调用 Web API 方法的代码示例:

DECLARE @Object AS int;
DECLARE @ResponSEText AS Varchar(8000);
DECLARE @Token AS Varchar(8000);
DECLARE @xmltest AS Varchar(8000);
DECLARE @hResult AS int
DECLARE @source varchar(255), @desc varchar(255) 
DECLARE @LocationId varchar(25);

DECLARE @Body AS varchar(8000) = '{
  "UserName": "username",
  "Password": "password"
}'

--EXEC sp_OACREATE 'MSXML2.XMLHTTP', @Object OUT;
EXEC sp_OACREATE 'MSXML2.ServerXMLHttp', @Object OUT;
EXEC sp_OAMethod @Object, 'open', NULL, 'POST', 'https://urgentcargus.azure-api.net/api/LoginUser', 'false'
EXEC sp_OAMethod @Object, 'SETRequestHeader', null, 'Content-Type', 'application/json'

DECLARE @len int
SET @len = len(@body)
EXEC sp_OAMethod @Object, 'SETRequestHeader', null, 'Ocp-Apim-Subscription-Key','23cb2410112b4c01bc397bcda0d18487'
EXEC sp_OAMethod @Object, 'SETRequestHeader', null, 'Ocp-Apim-Trace:true'
EXEC sp_OAMethod @Object, 'SETRequestHeader', null, 'Content-Length', @len
EXEC sp_OAMethod @Object, 'SETRequestBody', null, 'Body', @body
EXEC sp_OAMethod @Object, 'Send', null, @body
EXEC sp_OAMethod @Object, 'responSEText', @ResponSEText OUTPUT

SELECT  @Token=@ResponSEText

EXEC sp_OADestroy @Object

SET @Token  ='Bearer '+ REPLACE(@Token,'"','')
PRINT @Token 

在我的笔记本电脑(Win10、SQL Server 2017)上,我的响应时间不到一秒。但是,在客户服务器(Windows Server 2012R2、SQL Server 2017)上使用的相同代码示例需要将近 21 秒才能获得响应,即使它返回 NULL

我有什么遗漏的吗?我猜它必须在网络上做一些与服务器设置及其输出方式相关的事情。谢谢

【问题讨论】:

    标签: sql-server ole


    【解决方案1】:

    服务器是通过代理还是直接出去?如果它直接不使用任何代理,也许添加一个可能会有所帮助。我对来自SQLDatabase Mail 有同样的问题,直到设置代理并添加SQL 正在使用的端口,我无法发送任何电子邮件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-24
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      相关资源
      最近更新 更多