从 SQL 向 Azure ServiceBus 发送消息
Send message to Azure ServiceBus from SQL
我想通过存储过程将消息从 SQL 服务器发送到 Azure ServiceBus。
我遇到过几种解决方案,这些解决方案要求我安装来自其他供应商的软件,但我不想这样做。
目前唯一的解决方案似乎是使用公共语言运行时集成,其中 .NET(框架)代码作为存储过程运行。我不确定这是不是要走的路。
我认为你有以下选择:
- 使用CLR调用ServiceBusClient
- 将消息写入使用简单 table 或 SQL Service Broker 实现的队列,并使用另一个 C# 应用程序从队列中读取(如评论中所建议)
- 手动构建请求(参见Send Message) and send it using a POST request from Powershell using Invoke-WebRequest or Invoke-RestMethod, executed with xp_cmdshell
- 手动构建请求并使用带有 WinHttpRequest 和 sp_OACreate 和 sp_OAMethod 的 POST 请求发送它(就像 10-15 年前所做的那样)
另外,想一想为什么要为此使用存储过程。谁在调用存储过程?如果它是一个触发器,那么同步执行 POST 请求不是一个好主意(但是使用队列,尤其是使用 Service Broker,可能是 acceptable)。如果是别的客户端应用,能不能改成直接调用Service Bus?
你可以考虑以下方法:
方法一
- 在包含事件行的 Azure SQL 中定义 table
- 使用逻辑应用程序的 SQL 连接器,您可以对 table 的插入操作。Reference
- 使用逻辑应用程序的Azure 服务总线连接器,您可以将消息发送到Azure 服务总线。 Reference
方法二
- 编写一个调用 Azure 服务总线 REST 的 CLR 存储过程API。 Whosebug post
中详细介绍了这些步骤
希望以下步骤将帮助您创建 CLR 存储过程以通过 REST 进行 Azure 服务总线调用 API。
- 编写 .NET 代码制作 CLR 存储过程
- 编译代码使其成为程序集
- 在SQL服务器
中注册程序集
- 创建 CLR 存储过程
- 使用 CLR 存储过程调用基于 REST 的 Web 服务
以上步骤在下面有详细说明linkAccessing REST based Web services using SQL CLR
如果您太害怕 CLR 集成(额外的步骤以及对 CLR 库的外部依赖),那么您可以轻松地从存储过程调用 powershell 脚本来简化事情。
https://hubsqldba.wordpress.com/2013/07/31/call-a-powershell-ps1-file-from-a-stored-procedure/
我想通过存储过程将消息从 SQL 服务器发送到 Azure ServiceBus。 我遇到过几种解决方案,这些解决方案要求我安装来自其他供应商的软件,但我不想这样做。
目前唯一的解决方案似乎是使用公共语言运行时集成,其中 .NET(框架)代码作为存储过程运行。我不确定这是不是要走的路。
我认为你有以下选择:
- 使用CLR调用ServiceBusClient
- 将消息写入使用简单 table 或 SQL Service Broker 实现的队列,并使用另一个 C# 应用程序从队列中读取(如评论中所建议)
- 手动构建请求(参见Send Message) and send it using a POST request from Powershell using Invoke-WebRequest or Invoke-RestMethod, executed with xp_cmdshell
- 手动构建请求并使用带有 WinHttpRequest 和 sp_OACreate 和 sp_OAMethod 的 POST 请求发送它(就像 10-15 年前所做的那样)
另外,想一想为什么要为此使用存储过程。谁在调用存储过程?如果它是一个触发器,那么同步执行 POST 请求不是一个好主意(但是使用队列,尤其是使用 Service Broker,可能是 acceptable)。如果是别的客户端应用,能不能改成直接调用Service Bus?
你可以考虑以下方法:
方法一
- 在包含事件行的 Azure SQL 中定义 table
- 使用逻辑应用程序的 SQL 连接器,您可以对 table 的插入操作。Reference
- 使用逻辑应用程序的Azure 服务总线连接器,您可以将消息发送到Azure 服务总线。 Reference
方法二
- 编写一个调用 Azure 服务总线 REST 的 CLR 存储过程API。 Whosebug post 中详细介绍了这些步骤
希望以下步骤将帮助您创建 CLR 存储过程以通过 REST 进行 Azure 服务总线调用 API。
- 编写 .NET 代码制作 CLR 存储过程
- 编译代码使其成为程序集
- 在SQL服务器 中注册程序集
- 创建 CLR 存储过程
- 使用 CLR 存储过程调用基于 REST 的 Web 服务
以上步骤在下面有详细说明linkAccessing REST based Web services using SQL CLR
如果您太害怕 CLR 集成(额外的步骤以及对 CLR 库的外部依赖),那么您可以轻松地从存储过程调用 powershell 脚本来简化事情。
https://hubsqldba.wordpress.com/2013/07/31/call-a-powershell-ps1-file-from-a-stored-procedure/