一、简介
Microsoft SQL Server 2005之后,实现了对 Microsoft .NET Framework 的公共语言运行时(CLR)的集成。
CLR 集成使得现在可以使用 .NET Framework 语言编写代码,从而能够在 SQL Server 上运行,现在就可以通过 C# 来编写 SQL Server 自定义函数、存储过程、触发器等。
我最初的目的是因为在 SQL Server 数据库中遇到数字的十进制与十六进制的互相转换问题,也看过一些方法吧,但是最后我却选择了用 CLR 来做,毕竟在 C# 中两三行代码就能搞定的问题。。。
二、配置 SQL Server CLR
开启 CLR:
--开启所有服务器配置 sp_configure 'show advanced options', 1; RECONFIGUREWITH override GO--开启 CLR sp_configure 'clr enabled', 1; RECONFIGUREWITH override GO
关闭 CLR:
--关闭所有服务器配置 sp_configure 'show advanced options', 0; RECONFIGUREWITH override GO--关闭 CLR sp_configure 'clr enabled', 0; RECONFIGUREWITH override GO
在后面注册 CLR 程序集时,发生因操作权限问题而导致的失败时,可以尝试执行下面的 SQL 语句,这里我把 SQL 一并贴出来。
--权限不够时,设置目标数据库为可信赖的,例如:TestALTERDATABASE[Test]SET TRUSTWORTHY ON--修改数据库所有者为当前登录的用户,也可以为其他用户,例如:saEXEC sp_changedbowner 'sa'
三、CLR Function
打开 Visual Studio 新建一个 SQL Server 数据库项目,这里需要注意 .NET Framework 的版本。
因为我的目标数据库为 SQL Server 2008,所以这里我选择的是 .NET Framework 3.5 的版本。
然后添加新建项,选择 SQL CLR C# 用户自定义函数,先从标量函数开始。
1、标量函数