在SQL2005中部署CLR 程序集

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 原文 在SQL2005中部署CLR 程序集 有关于CLR函数的用途和用法,请了解 SQL Server CLR 极速入门,启用、设计、部署、运行 http://www.yongfa365.com/Item/SQL-Server-CLR.html  由于项目要用到对超大型数据表进行关键字检索,一般使用LIKE语句就可以成功完成,但是据说使用CLR函数可以提供查询效率。

原文 在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自定义函数.

如有错误,请指正,很少写博客。发现写文字和生孩子一样痛苦。:)

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
1月前
|
SQL 安全 数据库
SQL-Server 数据库部署
SQL-Server 数据库部署
61 0
|
1月前
|
SQL Oracle Java
sql文件批处理程序-java桌面应用
sql文件批处理程序-java桌面应用
25 0
|
6月前
|
SQL 关系型数据库 数据库
SQL Server 简介与 Docker Compose 部署
SQL Server 是由微软公司开发的一款强大的关系型数据库管理系统(RDBMS),广泛应用于企业级应用程序和数据存储。使用 Docker Compose,您可以轻松地将 SQL Server 实例部署到容器化环境中,并方便地进行数据库管理。在本文中,我将简要介绍 SQL Server 的基本概念,并详细阐述如何使用 Docker Compose 部署 SQL Server 容器。
214 2
SQL Server 简介与 Docker Compose 部署
|
2天前
|
SQL 安全 Go
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
在Python Web开发中,确保应用安全至关重要,主要防范SQL注入、XSS和CSRF攻击。措施包括:使用参数化查询或ORM防止SQL注入;过滤与转义用户输入抵御XSS;添加CSRF令牌抵挡CSRF;启用HTTPS保障数据传输安全;实现强身份验证和授权系统;智能处理错误信息;定期更新及审计以修复漏洞;严格输入验证;并培训开发者提升安全意识。持续关注和改进是保证安全的关键。
9 0
|
1月前
|
SQL 安全 测试技术
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
15 0
|
2月前
|
SQL 存储 数据处理
Flink SQL 问题之提交程序运行报错如何解决
Flink SQL报错通常指在使用Apache Flink的SQL接口执行数据处理任务时遇到的问题;本合集将收集常见的Flink SQL报错情况及其解决方法,帮助用户迅速恢复数据处理流程。
48 3
|
4月前
|
SQL 关系型数据库 C语言
PostgreSQL【应用 03】Docker部署的PostgreSQL扩展SQL之C语言函数(编写、编译、载入)计算向量余弦距离实例分享
PostgreSQL【应用 03】Docker部署的PostgreSQL扩展SQL之C语言函数(编写、编译、载入)计算向量余弦距离实例分享
45 0
|
4月前
|
SQL 关系型数据库 PostgreSQL
PostgreSQL【部署 01】离线安装PostgreSQL+PostGIS踩坑及问题解决经验分享(含安装文件PostgreSQL+PostGIS及多个依赖+测试SQL)
PostgreSQL【部署 01】离线安装PostgreSQL+PostGIS踩坑及问题解决经验分享(含安装文件PostgreSQL+PostGIS及多个依赖+测试SQL)
111 0
|
9月前
|
SQL 存储 关系型数据库
WEB应用程序数据库防守篇之预防SQL漏洞注入
主要介绍SQL注入的危害会引发的后果以及如何预防等
412 1
WEB应用程序数据库防守篇之预防SQL漏洞注入
|
5月前
|
SQL 分布式计算 Java
201 Spark SQL查询程序
201 Spark SQL查询程序
35 0