原文 在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环境中注册。

将文件拷贝到服务器后,尝试注册程序集:

  1. -- 注册程序集
  2. 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 程序集的更多相关文章

  1. SQL Server 部署CLR程序集错误`6218`

    Visual Studio 2015中开发的SQL Server项目,添加了用户自定义函数,需要部署到SQL Server 2005上, 在部署时报错: (70,1): SQL72014: .Net ...

  2. 手工部署Sqlserver CLR程序集

    原文 手工部署Sqlserver CLR程序集 以前一直用VS部署Sqlserver CLR程序集简单省事,现在服务器部署在内网了,必须手动更新部署Sqlserver CLR程序集.    开始以为A ...

  3. 重温CLR(二)生成、部署以及程序集

    将类型生成到模块中 class Program { static void Main(string[] args) { Console.WriteLine("Hi"); } } 该 ...

  4. 【续集】在 IIS 中部署 ASP.NET 5 应用程序遭遇的问题

    dudu 的一篇博文:在 IIS 中部署 ASP.NET 5 应用程序遭遇的问题 针对 IIS 部署 ASP.NET 5 应用程序的问题,在上面博文中主要采用两种方式尝试: VS2015 的 Publ ...

  5. MSSQLSERVER添加c# clr程序集的使用方法

    前言 MSSQLSERVER提供程序集,无疑可以让编程人员更加便捷的操作数据库数据,比如c#写的函数,可以在数据库当作sql的函数使用,你想想他对不熟悉数据库的程序员来说是有多么的嗨.这么好的机制,大 ...

  6. SQL Server中的CLR编程——用.NET为SQL Server编写存储过程和函数

    原文:SQL Server中的CLR编程--用.NET为SQL Server编写存储过程和函数 很早就知道可以用.NET为SQL Server2005及以上版本编写存储过程.触发器和存储过程的,不过之 ...

  7. 在SQL Server中使用CLR调用.NET类库中的方法 (转载)

    在SQL Server中调用 .NET 类库的方法要分为下面几步来实现: 在.NET中新建一个类库项目,并在这个项目中添加一个类文件,并把要被SQL Server调用的方法定义为公有的,静态的方法. ...

  8. 在SQL Server中使用CLR调用.NET方法

    介绍    我们一起来做个示例,在.NET中新建一个类,并在这个类里新建一个方法,然后在SQL Server中调用这个方法.按照微软所述,通过宿主 Microsoft .NET Framework 2 ...

  9. Intellij IDEA 创建Web项目并在Tomcat中部署运行(不使用maven)【转载】

    原文链接:http://www.thinksaas.cn/topics/0/350/350000.html 一.创建Web项目 1.File -> New Module,进入创建项目窗口 2.选 ...

随机推荐

  1. log4j 详解

      转载自:http://www.blogjava.net/hwpok/archive/2008/08/23/223891.html >>>>1. 概述<<< ...

  2. IOS开发——正则表达式验证手机号、密码

    App的实际应用中,用户登陆功能基本是每个App都有需求的一个功能.而当前我们很常规的做法,就是让用户把手机号作为自己的用户名,而在注册获取短信验证码的过程中,我们首先要完成的一个步骤,就是校验用户的 ...

  3. Java日期计算之Joda-Time

    http://rensanning.iteye.com/blog/1546652 Joda-Time提供了一组Java类包用于处理包括ISO8601标准在内的date和time.可以利用它把JDK D ...

  4. 在zendstudio上配置SVN

    本文介绍zendstudio结合SVN的使用方法. 一.部署svn服务器 直接安装用svn软件,配置太过麻烦,用户和版本库.权限管理不太方便.推荐使用CollabNetSubversionEdge.以 ...

  5. springmvc结合freemarker,非自定义标签

    参考:http://viralpatel.net/blogs/spring-mvc-freemarker-ftl-example/ 上图: 目录层级: 启动后的访问地址:http://localhos ...

  6. Android 一个抽奖应用的逆向破解全流程之加固自己应用

    转自: <a href="http://www.pedant.cn/2014/07/22/crack-a-draw-app/">http://www.pedant.cn ...

  7. poj 3469 Dual Core CPU 最小割

    题目链接 好裸的题....... 两个cpu分别作为源点和汇点, 每个cpu向元件连边, 权值为题目所给的两个值, 如果两个元件之间有关系, 就在这两个元件之间连边, 权值为消耗,这里的边应该是双向边 ...

  8. ubuntu 常用生产环境部署配置测试调优

    1,ubuntu monogdb 安装配置 2,ubuntu jdk1.7,tomcat7安装 3,ubuntu LAMP部署 4,mongodb 远程热备份及恢复 使用自带的mongodump和mo ...

  9. Tomcat 的context.xml

    1. 在tomcat 5.5之前: --------------------------------------------------------------- Context体如今/conf/se ...

  10. Javascript声明变量类型

    声明变量类型 当您声明新变量时,可以使用关键词 "new" 来声明其类型: var carname=new String; var x= new Number; var y= ne ...