SQLCLR存储过程中的SqlBulkCopy?

时间:2012-11-28 12:50:48

标签: c# .net sql sqlclr

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

1 个答案:

答案 0 :(得分:1)

我将在此处缩小如何从SQL内部的服务公开数据的一般问题。可以做的是将存储过程重写为流式传输结果的Table Valued CLR function。然后你就可以这样使用:

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

对此的基础架构进行了很好的优化,我使用它并且在我停止优化时能够快速地将其达到每秒3k行,并且瓶颈在于通过网络获取行。

将服务作为一个函数公开的好处是你也可以在查询和连接中直接使用它,不需要先将它存储到磁盘上的表中(慢速磁盘的额外步骤,事务日志,锁yadayada)。它也会优雅地取消,你可以top 100等。

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