SQL Server 的 CLR 存储过程是不是需要访问数据库?

Posted

技术标签:

【中文标题】SQL Server 的 CLR 存储过程是不是需要访问数据库?【英文标题】:Does a CLR stored procedure for SQL Server need to access the database?SQL Server 的 CLR 存储过程是否需要访问数据库? 【发布时间】:2015-05-06 19:17:16 【问题描述】:

目前我有点棘手,我们无法访问外部数据库,而是通过他们的 REST API 提取数据。这些数据需要在执行存储过程之前提取,该存储过程对外部数据和我们自己的数据进行分析。

我的想法是创建一个 CLR 存储过程,该存储过程将调用该存储过程进行分析,该过程将运行 HTTP 请求、反序列化 JSON,然后将数据填充到我们的数据库中。

是否存在任何潜在的超时错误? CLR 存储过程是否需要纯 HttpClient 代码?为什么这个想法如此糟糕,以至于我觉得有必要在 *** 上与大家确认一下?

谢谢

【问题讨论】:

不知道它是否如此糟糕,但我会考虑使用 SSIS。 【参考方案1】:

这可能是使用 SQL Server Service Broker 的理想选择。过程调用可以简单地将消息放在服务队列上。然后,您可以创建一个程序,该程序在消息到达时激活以从 API 中提取请求的数据,然后在完成或出错时以消息响应。如果需要,它还允许您从 SQL 服务器卸载 API 工作。这是一个异步解决方案,因此任何调用该过程的程序都可以在需要时在等待结果的同时做其他工作。

【讨论】:

以上是关于SQL Server 的 CLR 存储过程是不是需要访问数据库?的主要内容,如果未能解决你的问题,请参考以下文章

基于SQL Server版本的SQL CLR条件编译

PCB MS SQL 存储过程(CLR) 实现Json转DataTable表的方法

SQL Server 中的 CLR 程序集 C#

在 SQL Server CLR 程序集中使用 Microsoft Solver Foundation

SQL Server 中的 BetaInv 函数

从SQL Server 2005存储过程到FTP的最佳做法是什么?