我正在将 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。 (或者有办法得到它吗?)
提前致谢。
OLE 自动化存储过程在托管实例中不受支持。不过,您可以使用 CLR 过程。 GitHub 上有一个示例:https://github.com/microsoft/sql-server-samples/tree/master/samples/features/sql-clr/Curl