[摘要]软件等级:更新时间:2016-11-11版本号:v5.7.10 MySQL Server x64官方正式版免费下载立即下载 教大家SQL Server中的CLR编程(用.NET为SQL ...
教大家SQL Server中的CLR编程(用.NET为SQL Server编写存储过程)
最近在这方面做了一个调研,现在在这里分享一下心得。很早就知道可以用.NET为SQL Server2005及以上版本编写存储过程、触发器和存储过程的,不过之前开发的系统要么因为历史原因用的是SQL2000要么根本用不着在SQL Server中启用CLR,所以一直没有尝试。
首先要说明的是要在SQL Server中启用CLR必须是在SQL Server2005及以上版本,其次在默认情况下是没有启用CLR的,必须要显示设置为启用。比如我们要在ArticleCollectorDB数据库中运行用.NET编写的函数或者存储过程,至少先要进行下面的SQL语句:
[sql] view plaincopyprint?
- exec sp_configure 'clr enabled', 1;--在SQL Server中启用CLR
- reconfigure;
- go
- --在ArticleCollectorDB数据库中设置TRUSTWORTHY为ON
- ALTER DATABASE [ArticleCollectorDB] SET TRUSTWORTHY ON
这时可能会得到提示要重新启动SQL Server,如果有此提示则重新启动一下。
接着我们在VS中进行编码,在这里我们将分别编写一个名为IsMatch的函数和一个名为SendMail存储过程。在VS中创建一个名为NetSkycn.Data的类库项目,添加一个SqlCLR的类,代码如下:
[csharp] view plaincopyprint?
- using System.Data.SqlTypes;
- using System.Net;
- using System.Net.Mail;
- using System.Security.Permissions;
- using System.Text.RegularExpressions;
- using Microsoft.SqlServer.Server;
- namespace NetSkycn.Data
- {
- ///
- /// 在SQL Server环境中执行的CLR方法,注意提供给SQL Server调用的方法必须有SqlFunction/SqlProcedure Attribute
- /// 作者:周公
- /// 创建日期:2012-05-09
- ///span>
- ///span>
- ///
- public sealed class SqlCLR
- {
- ///
- /// 判断字符串是否匹配正则表达式
- ///
- ///要匹配的文本
- ///进行匹配的正则表达式
- ///正则表达式匹配选项,1为忽略大小写,2为多行匹配,3为忽略大小写且多行匹配
- ///
- [SqlFunction(IsDeterministic = true, DataAccess = DataAccessKind.None)]
- public static SqlBoolean IsMatch(string source, string pattern,int options)
- {
- if (string.IsNullOrEmpty(source) (北联网教程,专业提供视频软件下载)
……