问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SQL中CLR用户自定义数据是什么意思?

发布网友 发布时间:2022-04-08 11:23

我来回答

2个回答

懂视网 时间:2022-04-08 15:44

技术分享

技术分享

技术分享技术分享技术分享

 

ClrSql

标签:

热心网友 时间:2022-04-08 12:52

SQL Server CLR 集成简介

公共语言运行库 (CLR) 是 Microsoft .NET Framework 的核心,为所有 .NET Framework 代码提供执行环境。在 CLR 中运行的代码称为托管代码。CLR 提供执行程序所需的各种函数和服务,包括实时 (JIT) 编译、分配和管理内存、强制类型安全性、异常处理、线程管理和安全性。

通过在 Microsoft SQL Server 中托管 CLR(称为 CLR 集成),可以在托管代码中编写存储过程、触发器、用户定义函数、用户定义类型和用户定义聚合函数。因为托管代码在执行之前会编译为本机代码,所以,在有些方案中可以大大提高性能。

托管代码使用代码访问安全性 (CAS)、代码链接和应用程序域来阻止程序集执行某些操作。SQL Server 2005 使用 CAS 帮助保证托管代码的安全,并避免操作系统或数据库服务器受到威胁。

CLR 集成的优点
Transact-SQL 专门为数据库中的直接数据访问和操作而设计。尽管 Transact-SQL 在数据访问和管理方面领先,但是它没有提供编程构造来使数据操作和计算更加容易。例如,Transact-SQL 不支持数组、集合、for-each 循环、位转移或类。尽管在 Transact-SQL 中可以模拟其中某些构造,但是托管代码对这些构造提供集成支持。根据方案的不同,这些功能可以为使用托管代码实现某些数据库功能提供令人心动的理由。

Microsoft Visual Basic .NET 和 Microsoft Visual C# 提供面向对象的功能,例如封装、继承和多态性。现在,相关代码可以很容易在类和命名空间中进行组织。在使用大量服务器代码时,这样可以更容易地组织和维护您的代码。

对于计算和复杂的执行逻辑,托管代码比 Transact-SQL 更适合,它全面支持许多复杂的任务,包括字符串处理和正则表达式。通过 .NET Framework 库中提供的功能,可以访问数千个预生成的类和例程。可以很容易从任何存储过程、触发器或用户定义函数进行访问。基类库 (BCL) 包括的类提供用于字符串操作、高级数*算、文件访问、加密等的功能。

注意
尽管其中许多类可以从 SQL Server 的 CLR 代码中使用,但是不适合服务器端使用的类(例如窗口类)将无法使用。

托管代码的一个优点是类型安全性,即确保代码只通过正确定义并且权限许可的方式访问类型。在执行托管代码之前,CLR 将验证代码是否安全。例如,通过检查代码来确保不读取以前未曾写入的内存。CLR 还可以帮助确保代码不操作非托管内存。

选择 Transact-SQL 和托管代码
在编写存储过程、触发器和用户定义函数时,必须做的一个决定是使用传统的 Transact-SQL 还是使用 Visual Basic .NET 或 Visual C# 等 .NET Framework 语言。对于几乎或根本不需要过程逻辑的数据访问,请使用 Transact-SQL。对于具有复杂逻辑的 CPU 密集型函数和过程,或要使用 .NET Framework 的 BCL 时,请使用托管代码。

选择在服务器中执行和在客户端中执行
决定使用 Transact-SQL 还是托管代码的另一个因素是您希望代码驻留的位置,驻留在服务器计算机上还是客户端计算机上。Transact-SQL 和托管代码均可以在服务器上运行。这样使代码和数据距离很近,可以利用服务器的处理能力。另一方面,您可能希望避免将处理器密集型任务放在数据库服务器上。现在,大多数客户端计算机非常强大,您可能希望将尽可能多的代码放在客户端上,以利用客户端的处理能力。托管代码可以在客户端计算机上运行,而 Transact-SQL 不能。

选择扩展存储过程和托管代码
生成的扩展存储过程可以执行 Transact-SQL 存储过程无法执行的功能。但是,扩展存储过程会影响 SQL Server 进程的完整性,而通过类型安全性验证的托管代码不会。另外,内存管理、线程和构造的调度以及同步服务在 CLR 的托管代码与 SQL Server 之间更深入地集成。通过 CLR 集成,可以通过比扩展存储过程更加安全、可伸缩性更强的方式来编写所需的存储过程,以执行 Transact-SQL 中无法执行的任务。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
太和县环球嘉年华港口有限公司怎么样? 为什么抵触相亲? 鸡蛋怎么做好吃家常做法大全 为何抵触相亲 为什么很多人都抵触相亲? 鸡蛋怎么做才营养好吃呢? 怎么可以搞到110电话打过去给别人 植发后能保持多久?有人知道吗? 银联储蓄卡包括什么 怎么让电脑图标变小如何将电脑桌面上软件变小 什么是SQLCLR SQL clr对数据库有影响吗 sql语句中case when的使用问题 SQL中case语句 SQL CASE可不可以查询多个字段 SQL中表中将Case出来的数据,然后排序的问题 SQL里if语句和case语句有什么区别吗?哪个使用更高效?就是查询更优化? SQL 通过case 动态判断是否执行什么逻辑表达式 sql case 能调用函数吗 关于SQL中的CASE的用法,请用学生成绩表来说明? SQL中怎么在表名中使用case之类的判断 SQL里的CASE语句有无简单的判断方法 sql 数据库 case 用法~~~ SQL 中的case用法,关于表格转换的问题 SQL 中 CASE问题 创建SQL数据库;建立ODBC数据源 使用ADO对象连接SQL,其中DSN(数据源)填的是什么啊?新建的数据库名称还是什么啊? 在Python数据库连接池中如何创建请求连接的方案 用jstl在Mysql连接池查询数据时显示表不存在问题? delphi7中怎样实现自动创建数据源并连接sql server数据库 SQLCLR调试 在sql clr 项目中,如何实现多行字符串 sql server clr 怎么部署出来用 如何:将 SQL CLR 数据库项目项部署到 SQL Server SQL 无法初始化公共语言运行时(CLR) SQLCLR调用WEBService的问题 返回值的T-SQL和CLR类型不匹配问题,怎么解决 如何更新Sql Server里的CLR程序集 VS2008中的CLR模块 ,如何用代码实现向SQL server2005数据库已经存在的表中添加数据 SQL Server数据库如何手动部署CLR程序集 怎样从SQL Server 2005 CLR存储过程返回结果集 sql server system clr types可以卸载吗?我在卸载SQL2008 ,这个可以卸载吗,会不会影响系统正常使用? .htaccess 这个文件如何做URL重写 大师,用.htaccess文件实现url重写 比如 /info.php = /info 怎么弄 .htaccess里面重写url没有用 htaccess 替换URL文字 .htaccess URL带参数重写问题 Apache URL重写 如何使用伪静态文件.htaccess文件 如何在.htaccess的url重写规则中排除某个目录的规则