在SQL2005中部署CLR 程序集
有关于CLR函数的用途和用法,请了解
SQL Server CLR 极速入门,启用、设计、部署、运行
http://www.yongfa365.com/Item/SQL-Server-CLR.html
由于项目要用到对超大型数据表进行关键字检索,一般使用LIKE语句就可以成功完成,但是据说使用CLR函数可以提供查询效率。
先试试再说 ![]()
第一次使用SQLServer集成CLR,感觉很奇妙。这里分享一下如何部署CLR到新的数据库环境,比如远程数据库服务器。
一,在本地开发环境部署:
在本地开发环境,使用VS2010的部署功能就可以实现将CLR函数部署到数据库中。
注意:SQL Server 2005/2008/2008 R2使用的都是CLR 2.0所以,只能选择,2.0,3.0,3.5的.net framework

右键项目 - 选择“部署”。
然后打开"Sql Server Management Studio",查看是否部署成功。

在LINQ中使用用户自定义函数
打开DBML设计视图,左侧“服务器资源管理器"中,连接到数据库后,打开函数分支,将函数拖入右侧设计视图中。
在代码中利用自定义函数,LINQ查询:

在本地,我们已经实现了集成CLR函数查询。可是如何部署到远程SQL2005数据库中呢?
二,远程数据库部署CLR 程序集。
项目生成成功以后,在项目的文件目录的Bin\Debug\ 获取程序集文件。

其中我们需要将SqlServerProject1.dll在服务器SQL Server 2005环境中注册。
将文件拷贝到服务器后,尝试注册程序集:
- -- 注册程序集
- CREATE ASSEMBLY [SqlServerProject1] FROM 'D:\SQLCLR_DLL\SqlServerProject1.dll';
报告错误:
程序集 'SqlServerProject1' 所引用的程序集 'system.core, version=3.5.0.0, culture=neutral, publickeytoken=b77a5c561934e089.' 不在当前数据库中。
SQL Server 已尝试定位并自动从引用程序集所在的位置自动加载被引用程序集,但此操作失败(原因: 2(系统找不到指定的文件。))。请将被引用程序集加载到当前数据库中,然后重试您的请求。
这说明SQL SERVER并不支持System.Core.dll程序集,应先加载:
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = true GO sp_configure 'clr enabled', 1 GO RECONFIGURE GO ALTER DATABASE [stzpbbs] SET TRUSTWORTHY ON GO CREATE ASSEMBLY [System.Core] AUTHORIZATION [dbo] FROM 'C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll' WITH PERMISSION_SET = UNSAFE GO
再次执行:
- -- 注册程序集
- CREATE ASSEMBLY [SqlServerProject1] FROM'D:\SQLCLR_DLL\SqlServerProject1.dll';
--命令成功完成。
将VS2010 部署脚本SqlServerProject1.sql加载到查询分析器:
执行时报告N多错误,我们改一改
主要有3个地方:
1.这里改成相应数据库实际的物理路径
:setvar DefaultDataPath "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\"
:setvar DefaultLogPath "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\"
2.改数据库名称(红色字部分)
GO
:on error exit
GO
USE [master]
GO
USE stzpbbs
GO
3.禁止回滚
到倒数第几行的位置
--IF EXISTS (SELECT * FROM #tmpErrors) ROLLBACK TRANSACTION
然后看看标量函数中是否包含有新建的自定义函数。
测试一下:
select * from bbs_posts where dbo.ContainsOne(posttitle,'我')=1
成功找到两条记录。
注意:操作之前应先将数据库编写脚本(包括数据)部署到远程数据库中。这里只是说明了如何部署CLR自定义函数.
如有错误,请指正,很少写博客。发现写文字和生孩子一样痛苦。:)
在SQL2005中部署CLR 程序集的更多相关文章
- SQL Server 部署CLR程序集错误`6218`
Visual Studio 2015中开发的SQL Server项目,添加了用户自定义函数,需要部署到SQL Server 2005上, 在部署时报错: (70,1): SQL72014: .Net ...
- 手工部署Sqlserver CLR程序集
原文 手工部署Sqlserver CLR程序集 以前一直用VS部署Sqlserver CLR程序集简单省事,现在服务器部署在内网了,必须手动更新部署Sqlserver CLR程序集. 开始以为A ...
- 重温CLR(二)生成、部署以及程序集
将类型生成到模块中 class Program { static void Main(string[] args) { Console.WriteLine("Hi"); } } 该 ...
- 【续集】在 IIS 中部署 ASP.NET 5 应用程序遭遇的问题
dudu 的一篇博文:在 IIS 中部署 ASP.NET 5 应用程序遭遇的问题 针对 IIS 部署 ASP.NET 5 应用程序的问题,在上面博文中主要采用两种方式尝试: VS2015 的 Publ ...
- MSSQLSERVER添加c# clr程序集的使用方法
前言 MSSQLSERVER提供程序集,无疑可以让编程人员更加便捷的操作数据库数据,比如c#写的函数,可以在数据库当作sql的函数使用,你想想他对不熟悉数据库的程序员来说是有多么的嗨.这么好的机制,大 ...
- SQL Server中的CLR编程——用.NET为SQL Server编写存储过程和函数
原文:SQL Server中的CLR编程--用.NET为SQL Server编写存储过程和函数 很早就知道可以用.NET为SQL Server2005及以上版本编写存储过程.触发器和存储过程的,不过之 ...
- 在SQL Server中使用CLR调用.NET类库中的方法 (转载)
在SQL Server中调用 .NET 类库的方法要分为下面几步来实现: 在.NET中新建一个类库项目,并在这个项目中添加一个类文件,并把要被SQL Server调用的方法定义为公有的,静态的方法. ...
- 在SQL Server中使用CLR调用.NET方法
介绍 我们一起来做个示例,在.NET中新建一个类,并在这个类里新建一个方法,然后在SQL Server中调用这个方法.按照微软所述,通过宿主 Microsoft .NET Framework 2 ...
- Intellij IDEA 创建Web项目并在Tomcat中部署运行(不使用maven)【转载】
原文链接:http://www.thinksaas.cn/topics/0/350/350000.html 一.创建Web项目 1.File -> New Module,进入创建项目窗口 2.选 ...
随机推荐
- MongoDB入门学习(一)—— 安装和启动
最近由于工作需要,开始学习MongoDB数据库了.第一篇博文就从这里开始吧,以此记录下学习中的点点滴滴,为自己加油呢! (一) MongoDB简介 网上搜搜了一下:(来源:http://www.run ...
- 5.7.2.4 random() 方法
Math.random()方法返回大于等于0小于1的一个随机数.对于某些站点来说,这个方法非常实用,因为可以利用它来随机显示一些名人名言和新闻事件.套用下面的公式,就可以利用Math.random() ...
- [LeetCode]题解(python):143-Reorder List
题目来源: https://leetcode.com/problems/reorder-list/ 题意分析: 给定一个链表L:L0→L1→…→Ln-1→Ln,改变链表的排序为: L0→Ln→L1→L ...
- Analysis about different methods for reading and writing file in Java language
referee:Java Programming Tutorial Advanced Input & Output (I/O) JDK 1.4+ introduced the so-calle ...
- asp.net 多站点共享StateServer Session
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" ...
- 删除windows7保留分区
在系统里以管理员运行CMD.exe键入diskpartsel disk 0 (select 选择硬盘)list vol (查看卷)sel vol 0 (选择卷,0为保留分区)inactive ( ...
- 使用 Java 实现 Comet 风格的 Web 应用
参考这个: http://www.ibm.com/developerworks/cn/web/wa-cometjava/
- BBM(Bad Block Management)坏块管理
不管WL算法如何高明,在使用中都会碰到一个头痛的问题,那就是坏块,所以一个SSD必须要有坏块管理机制.何谓坏块?一个闪存块里包含有不稳定的地址,不能保证读/写/擦时数据的准确性. ...
- 一步一步学习SignalR进行实时通信_3_通过CORS解决跨域
原文:一步一步学习SignalR进行实时通信_3_通过CORS解决跨域 一步一步学习SignalR进行实时通信\_3_通过CORS解决跨域 SignalR 一步一步学习SignalR进行实时通信_3_ ...
- C功底挑战Java菜鸟入门概念干货(一)
一.认识Java 1.Java 程序比较特殊,它必须先经过编译,然后再利用解释的方式来运行. 2.Byte-codes 最大的好处是——可越平台运行,可让“一次编写,处处运行”成为可能. 3.使用 ...