最近我们将一组基于 C# 的复杂调度逻辑转换为 SQL CLR 存储过程(在 SQL Server 2005 中运行)。我们相信我们的代码是一个很好的 SQL CLR 候选,因为:
- 该逻辑涉及大量来自 SQL Server 的数据。
- 逻辑复杂,使用 TSQL 难以完成
- 没有线程或同步或从沙箱外部访问资源。
到目前为止,我们的 sp 的结果非常好。但是,由于我们的逻辑输出是多张数据表的形式,我们不能只返回单个行集作为 sp 的结果。相反,在我们的代码中,我们在 foreach 循环中有很多“INSERT INTO ....”语句,以便将 C# 通用集合中的每条记录保存到 SQL 表中。在代码审查期间,有人担心 SQL CLR 中的内联 SQL INSERT 方法是否会导致性能问题,并想知道是否有其他更好的方法来转储数据(来自我们的 C# 通用集合)。
那么,有什么建议吗?