SQL clr对数据库有影响吗
发布网友
发布时间:2022-04-30 12:21
我来回答
共2个回答
懂视网
时间:2022-04-30 16:42
ClrSql
标签:
热心网友
时间:2022-04-30 13:50
没有影响,同时解决了好多问题,只有好处。
1、 SQLCLR提供编程结构使数据操作和计算更加容易。
T-SQL 专门为数据库中的直接数据访问和操作而设计。尽管 T-SQL 在数据访问和管理方面领先,但是它没有提供编程结构来使数据操作和计算更加容易。例如,T-SQL 不支持数组、集合、for-each 循环、位转移或类。尽管在 T-SQL 中可以模拟其中某些构造,但是托管代码对这些构造提供集成支持。根据方案的不同,这些功能可以为使用托管代码实现某些数据库功能提供令人心动的理由。
2、 对于计算和复杂的执行逻辑,托管代码比 T-SQL 更适合,它全面支持许多复杂的任务,包括字符串处理和正则表达式。
通过 .NET Framework 库中提供的功能,可以访问数千个预生成的类和例程。可以很容易从任何存储过程、触发器或用户定义函数进行访问。基类库 (BCL) 包括的类提供用于字符串操作、高级数*算、文件访问、加密等的功能。
3、 一般来说,函数和聚合是SQL CLR的出色应用。
SQL CLR 代码的开发人员可以利用 .NET Framework API中存在的大量有用函数和类。这个类/函数库比 T-SQL 中支持的内置函数要丰富得多。此外,CLR 编程语言提供了 T-SQL 中所没有的丰富构造(例如数组和列表等)。与 T-SQL(它是一种解释语言)相比,CLR 编程语言之所以具有更好的性能,是因为托管代码是已编译的。对于涉及算术计算、字符串处理、条件逻辑等的操作,托管代码的性能可能要优于 T-SQL 一个数量级。
4、 托管代码的一个优点是类型安全性,即确保代码只通过正确定义并且权限许可的方式访问类型。
在执行托管代码之前,CLR 将验证代码是否安全。例如,通过检查代码来确保不读取以前未曾写入的内存。CLR 还可以帮助确保代码不操作非托管内存。
5、 开发人员应该将SQLCLR作为一种无法使用T-SQL显式表达逻辑的备选解决方案。
SQLCLR给开发人员提供了另一种编写存储过程的方法,但是利用T-SQL的声明性结构来处理基于集合的数据选择与修改要远远优于在.net中的过程化结构和ADO.NET对象模型中进行处理,因此SQLCLR不能作为实现业务层逻辑的替代品。那么根据这个规则,开发人员应该首先使用T-SQL解决问题。
6、 SQLCLR的局限
尽管其中许多类可以从 SQL Server 的 CLR 代码中使用,但是不适合服务器端使用的类(例如窗口类)将无法使用。