CLR存储过程v常规SQL存储过程

时间:2014-02-06 11:55:49

标签: sql-server tsql stored-procedures clr

我一直在编写一个CLR存储过程,用于将数据从一个数据库移动到另一个数据库。我选择了CLR存储过程,因为我喜欢.NET框架能够比连接服务器或openrowset更好地连接到远程服务器,但我现在发现我的类主要是嵌入式SQL字符串。我正在考虑使用CLR存储过程将数据检索到本地SQL Server,然后使用常规SQL存储过程进行实际插入和更新。

我并不担心程序或性能的预编译,我确实认为CLR程序允许我在一个地方看到所有逻辑,从上到下阅读。

我是否应该考虑转向使用TSQL而不是CLR?

感谢。

1 个答案:

答案 0 :(得分:1)

您坚持使用常规存储过程有多种原因。我会试着给你一个我所知道的概述:

  • 性能。
  • 内存问题。 SQL Server仅使用自己的最大内存设置进行操作。 CLR走出了这个界限。这可能会影响在此服务器上运行的其他应用程序(和操作系统)。
  • Updatebility。您可以使用简单脚本更新存储过程。 CLR更新更复杂
  • 安全。 CLR通常需要比常规t-sql更多的安全设置。

作为一般规则,您只想将CLR用于:

  1. 与操作系统的交互,例如从文件读取或在MSMQ中删除邮件
  2. 执行复杂计算,尤其是当您已经使用.NET语言编写代码进行计算时。