.net - Sql Server 中的 CLR 集成可能出现哪些问题

标签 .net sql-server sqlclr

我阅读了一篇有关在 sqlserver 中使用 CLR 集成的文章,并且想知道可能存在哪些潜在问题(如果有)。我的想法是使用它来验证遗留数据库中潜在的不良数据。例如,电话号码栏中的人名。

编辑: 我不认为有任何问题,但这不是我看到很多讨论的问题,并且想确保我没有打开 jar 头蠕虫,这会在以后引起问题。 我之所以问这个问题,是因为当我问这个问题时,我的 DBA 看着我,就像我疯了一样。

最佳答案

SQL Server 中的 CLR 集成本身并不稳定。作为证据,我将向您指出这样一个事实:在 SQL Server 2008 中,一堆系统数据类型被实现为 CLR 数据类型,例如新的 geography and geometry类型。因此,CLR 被认为足够安全,允许新的核心功能基于它。

话虽如此,CLR 为 SQL 编程带来了一个全新的武器库,这可能会搬起石头砸自己的脚。您可以启动线程、阻止 IPC 通信(事件、互斥体、信号量)、外部连接并等待 I/O、在内存中读/写、调用各种 Win32 APIS,并且通常会鲁莽行事并造成严重破坏。旧的 T-SQL 编程需要更多的黑客才能才能实现同样的目标。

您是否正在考虑实现一种新的数据类型,该数据类型可以公开良好的、受约束的行为,例如字段的正则表达式验证?前进。您是否正在考虑从 SQL 托管的 CLR 内部发出 Web 服务请求?你已经得到了它,你将得到你应得的一切!

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

关于.net - Sql Server 中的 CLR 集成可能出现哪些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1105267/

相关文章:

c# - 使用自定义成员资格提供程序扩展 MembershipUser 类

SQL 更新查询 - 聚合可能不会出现在 UPDATE 语句的集合列表中

sql - MS sql时态表查找上次更改的列的历史记录

c# - 如何通知Windows服务(C#)数据库表更改(sql 2005)?

c# - 以编程方式读取 SQL Server 的查询计划建议的特定 SQL 执行的索引?

.net - 如何 "clone"完整的 .Net 解决方案

c# - .NET/C# : Using RSS. NET 与堆栈溢出源 : How To Handle Special Properties of RSS Items?

jquery - SQL Server 与 jQuery 和 Node js 的连接

sql-server - 如何解决VS2013错误SQL71501 : Procedure X has an unresolved reference to Assembly Y?

c# - 如何在不使用partial关键字的情况下进行部分类?