在 Azure 托管 SQL 中调用 HTTP API 端点

问题描述 投票:0回答:1

我正在将 SendGrid API 与 Azure 托管 SQL 集成,我面临以下问题。

我需要通过 SendMail() API 发送电子邮件并将响应返回给 SQL Server。 由于我使用的是 SQL 托管实例,因此无法使用 MSXML2.XMLHTTP 调用 API。

Declare @Object as Int;
Declare @ResponseText as Varchar(8000);

--Code Snippet
Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'post',  
             '<API URL HERE >', -- API URL
             'false'
Exec sp_OAMethod @Object, 'send'
Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT
Select @ResponseText  --
Exec sp_OADestroy @Object

以上代码片段返回

Msg 17750,级别 16,状态 0,过程 sp_OACreate,第 1 行 [批处理起始行 0] 无法加载 DLL odsole70.dll 或其引用的 DLL 之一。原因:2(系统找不到指定的文件。)。 消息 17750,级别 16,状态 0,过程 sp_OAMethod,第 1 行 [批处理起始行 0] 无法加载 DLL odsole70.dll 或其引用的 DLL 之一。原因:2(系统找不到指定的文件。)。 消息 17750,级别 16,状态 0,过程 sp_OAMethod,第 1 行 [批处理起始行 0] 无法加载 DLL odsole70.dll 或其引用的 DLL 之一。原因:2(系统找不到指定的文件。)。 消息 17750,级别 16,状态 0,过程 sp_OAMethod,第 1 行 [批处理起始行 0] 无法加载 DLL odsole70.dll 或其引用的 DLL 之一。原因:2(系统找不到指定的文件。)。

是否有其他方法可以使用 SQL 托管实例完成此任务?

我可以简单地使用 sp_send_dbmail 实用程序,但是,如果我使用数据库邮件功能,我无法从 SendGrid 获取返回的 MessageID。 (或者有办法得到它吗?)

提前致谢。

sql-server sendgrid sp-send-dbmail azure-sql-managed-instance msxml2.xmlhttp
1个回答
0
投票

OLE 自动化存储过程在托管实例中不受支持。不过,您可以使用 CLR 过程。 GitHub 上有一个示例:https://github.com/microsoft/sql-server-samples/tree/master/samples/features/sql-clr/Curl

© www.soinside.com 2019 - 2024. All rights reserved.