首页/电脑学习/内容

教大家SQL Server中的CLR编程(用.NET为SQL Server编写存储过程)

电脑学习2023-06-26 阅读()
[摘要]软件等级:更新时间:2016-11-11版本号:v5.7.10 MySQL Server x64官方正式版免费下载立即下载 教大家SQL Server中的CLR编程(用.NET为SQL ...
MySQL Server x64官方正式版免费下载

软件等级:

更新时间:2016-11-11

版本号:v5.7.10

MySQL Server x64官方正式版免费下载

 教大家SQL Server中的CLR编程(用.NET为SQL Server编写存储过程)

最近在这方面做了一个调研,现在在这里分享一下心得。很早就知道可以用.NETSQL Server2005及以上版本编写存储过程、触发器和存储过程的,不过之前开发的系统要么因为历史原因用的是SQL2000要么根本用不着在SQL Server中启用CLR,所以一直没有尝试。

首先要说明的是要在SQL Server中启用CLR必须是在SQL Server2005及以上版本,其次在默认情况下是没有启用CLR的,必须要显示设置为启用。比如我们要在ArticleCollectorDB数据库中运行用.NET编写的函数或者存储过程,至少先要进行下面的SQL语句:

[sql] view plaincopyprint?
  1. exec sp_configure 'clr enabled', 1;--在SQL Server中启用CLR
  2. reconfigure;
  3. go
  4. --在ArticleCollectorDB数据库中设置TRUSTWORTHY为ON
  5. ALTER DATABASE [ArticleCollectorDB] SET TRUSTWORTHY ON

这时可能会得到提示要重新启动SQL Server,如果有此提示则重新启动一下。

接着我们在VS中进行编码,在这里我们将分别编写一个名为IsMatch的函数和一个名为SendMail存储过程。在VS中创建一个名为NetSkycn.Data的类库项目,添加一个SqlCLR的类,代码如下:

[csharp] view plaincopyprint?
  1. using System.Data.SqlTypes;
  2. using System.Net;
  3. using System.Net.Mail;
  4. using System.Security.Permissions;
  5. using System.Text.RegularExpressions;
  6. using Microsoft.SqlServer.Server;
  7. namespace NetSkycn.Data
  8. {
  9. ///
  10. /// 在SQL Server环境中执行的CLR方法,注意提供给SQL Server调用的方法必须有SqlFunction/SqlProcedure Attribute
  11. /// 作者:周公
  12. /// 创建日期:2012-05-09
  13. ///span>
  14. ///span>
  15. ///
  16. public sealed class SqlCLR
  17. {
  18. ///
  19. /// 判断字符串是否匹配正则表达式
  20. ///
  21. ///要匹配的文本
  22. ///进行匹配的正则表达式
  23. ///正则表达式匹配选项,1为忽略大小写,2为多行匹配,3为忽略大小写且多行匹配
  24. ///
  25. [SqlFunction(IsDeterministic = true, DataAccess = DataAccessKind.None)]
  26. public static SqlBoolean IsMatch(string source, string pattern,int options)
  27. {
  28. if (string.IsNullOrEmpty(source) (北联网教程,专业提供视频软件下载)

……

相关阅读