在Sqlserver中CLR集成可能存在哪些问题

Bob*_*tor 5 .net sql-server sqlclr

我读了一篇关于在sqlserver中使用CLR集成的文章,并想知道一些潜在的问题可能是什么,如果有的话.我的想法是用它来验证遗留数据库中的潜在坏数据.一个例子是电话号码栏中的人名.

编辑:我认为没有任何问题,但这不是我看到很多讨论的事情,并且想要确保我没有打开一个可以在以后引起问题的蠕虫.我问的原因是我的DBA看着我,就像我问起这个时我疯了似的.

Rem*_*anu 5

SQL Server本身的CLR集成并不稳定.作为证据,我将向您指出,在SQL Server 2008中,一系列系统数据类型被实现为CLR数据类型,如新的地理和几何类型.因此,CLR被认为足够安全,允许新的核心功能基于它.

话虽这么说,CLR为SQL编程带来了一个全新的武器库,可以让自己陷入困境.你可以启动线程,阻止IPC通信(事件,互斥,信号量),外部连接,等待I/O,内存中的读/写,调用各种Win32 APIS,并且通常会鲁莽行事并造成严重破坏.旧的T-SQL编程需要更大的黑客才能才能实现同样的目标.

您是否正在考虑实现一种新的数据类型,该数据类型暴露出良好的,受约束的行为,例如,字段的正则表达式验证?前进.您是否正在考虑从SQL托管CLR内部发出Web服务请求?你有它的到来,你将得到所有你得到的!

经验法则是,如果您的程序集将加载并验证没有可信赖的要求(没有EXTERNAL_ACCESS,没有UNSAFE),那么您应该没问题.当然,您仍然可以在SAFE程序集中编写while(1){;}循环,但是T-SQL存储过程也可以...