在SQL Server 2005中使用.net程序集

时间:2020-03-05 18:46:28  来源:igfitidea点击:

我最近发现,可以将.net程序集放置在SQL Server> = 2005服务器上,以便可以在T / SQL语句中调用.net函数。

我想知道人们发现这些东西有什么用处,以及他们的表现如何?

解决方案

回答

我发现它非常有用。

我使用这种可能性来扩展与MSSQL2005 XML相关的功能。

如果我没记错的话,甚至可以介绍自己的数据类型。

回答

通常,如果我们需要以某种方式与操作系统进行交互(例如,将消息放入MSMQ或者写入文件),则通常使用此方法。如果我们已经在.NET中实现了一些复杂的数学或者财务计算,并且不想在T-SQL中重新编写它们,它也很有用。

回答

我在SQL 2005中创建的CLR的第一个通用用途是SQL 2005程序集,该程序集具有多种功能,这些功能可以使用正则表达式执行字符串操作和模式匹配。可以扩展SQL 2005中的本机字符串函数,以便我们可以验证公用格式(例如电话号码或者信用卡号)或者在存储过程中执行临时正则表达式。

对于确定性的用户定义函数,我发现SQL CLR支持非常有效。

回答

CLR与SQL 2005的集成对于用.NET编写的用户定义函数/存储过程以及用户定义数据类型特别有用。例如我们可以编写一种重型数据类型,该数据类型允许SQL定义对象和引用属性。例如,我们可以编写一些超级重复日期时间变体。

回答

反对,我同意你的看法。对于那些在T-SQL中根本无法实现或者几乎无法实现的事情(通过骇人听闻的方法),汇编程序是很棒的。

使用的简单性是关键。请注意以下含义...

  • 使用程序集会引入信任/安全性/权限配置问题。

程序集将必须定义到数据库中。如果程序集未签名,则数据库将必须允许UNTRUSTED代码。分离/重新添加数据库时,将重置此数据库设置。

  • 程序集的使用会影响SQL Server的配置(不仅仅是数据库)。

若要运行程序集,必须首先确保禁用SQL Server轻量级池。

  • 对于Assemblies函数,请记住对数据操作要保守一些。特别是在繁忙的桌子上。

如果可以,请避免使用试图一次影响太多行的Assembly方法。注意表触发器中使用的那些触发器。因为其中一些触发器会严重降低性能。