0

我创建了从外部服务检索大量数据的 SQLCLR 存储过程。我可以将数据批量复制到同一个 SQLCLR 存储过程中的新表吗?

4

1 回答 1

1

我将在这里缩小到如何在 SQL 中从服务中公开数据的一般问题。可以做的是将存储过程重写为流式传输结果的表值 CLR 函数。然后你可以像这样使用:

insert into MyTable(id, name)
select id, name from dbo.MyTableFunc(agrs) 

对此的基础设施进行了很好的优化,我使用了它,当我停止优化时,它很快就能达到每秒 3k 行,而瓶颈在于通过网络获取行。

将服务公开为函数的好处是您也可以直接在查询和连接中使用它,无需先将其存储到磁盘上的表中(对于慢速磁盘、事务日志、锁定 yadayada 的额外步骤)。它也可以优雅地取消,你可以这样做top 100

如果您告诉我们更多/提供一些代码,我们可以提供更多帮助。

于 2013-02-10T14:20:33.390 回答