Sql Server 添加外部程序集基本操作
简介:有时候Sql Server的内置函数没有那么好用的时候,可以引用一下外部程序集,下面献下丑,做下添加外部程序集操作
1、准备程序,编译出一个MyCLR的DLL.
public class CLRClass
{
[Microsoft.SqlServer.Server.SqlFunction]
public static int MyFun(int a, int b) //必须使用静态方法,非静态方法会报错。
{
return a <= b ? a : b; //其实就是一个判断最小值函数
} }
2、添加程序集。
CREATE ASSEMBLY MyClr1
FROM 'I:\Test\MyClr\MyClr\bin\Release\MyClr.dll'
WITH permission_set = Safe/EXTERNAL ACCESS/UnSafe; -- (默认推荐/可以访问外部资源/不受限制地访问资源)
- 对于使用 SAFE 或 EXTERNAL ACCESS 权限集创建的程序集:
- 程序集代码应是类型安全的。通过对程序集运行公共语言运行时验证工具可建立类型安全。
- 程序集的类中不应包含任何静态数据成员,除非这些成员标记为只读。
- 程序集中的类不能包含终结器方法。
UNSAFE 模式是不受任何限制的访问资源。
这是联机手册上面对这几种模式的限制。
如果有静态变量,在Safe 模式下就会报错了
public class CLRClass
{
static int i = ;
[Microsoft.SqlServer.Server.SqlFunction]
public static int MyFun(int a, int b) //必须使用静态方法,非静态方法。
{
i += ;
return a <= b ? a : b;
}
然后在数据库执行
ALTER ASSEMBLY MyClr1
FROM 'I:\Test\MyClr\MyClr\bin\Release\MyClr.dll' WITH permission_set = Safe;
叮叮,立即中奖

ALTER DATABASE TestDB set TRUSTWORTHY ON; --
数据库所有者(DBO)拥有 UNSAFE ASSEMBLY 权限,且数据库具有 TRUSTWORTHY 数据库属性;或者,程序集已使用其对应登录名具有 UNSAFE ASSEMBLY 权限的证书或非对称密钥加以签名
go
ALTER ASSEMBLY MyClr1
FROM 'I:\Test\MyClr\MyClr\bin\Release\MyClr.dll' WITH permission_set = UNSAFE;
go --执行成功
创建了程序集,然后添加个函数映射来使用
添加函数映射
CREATE function ClrFBitContains
( @a as INT , @b as int )
returns INT
as
EXTERNAL NAME MyClr1.CLRClass.MyFun 确认是否需要打开CLR执行权限
exec sp_configure 'clr enabled', ''
reconfigure SELECT dbo.ClrFBitContains(1,3) PS:每次修改完动态库,需要重新执行修改一次程序集定义才能更新同步上去
CREATE ASSEMBLY MyClr1
FROM 'I:\Test\MyClr\MyClr\bin\Release\MyClr.dll'
Sql Server 添加外部程序集基本操作的更多相关文章
- SQL Server通过外部程序集注册正则表达式函数(CLR函数) [转]
转自:http://blog.csdn.net/binguo168/article/details/76598581 1.下载dll程序集(通过C#编写的支持正则的方法),百度网盘下载: 1.1如果只 ...
- SQL Server添加MDW性能监控报表(转载)
10.2 Data Collector与MDW Data Collection功能是SQL SERVER 2005版本提供的数据库监控报表的功能,通过定时地对数据库的语句运行情况,服务器各种资源的监控 ...
- SQL Server 部署CLR程序集错误`6218`
Visual Studio 2015中开发的SQL Server项目,添加了用户自定义函数,需要部署到SQL Server 2005上, 在部署时报错: (70,1): SQL72014: .Net ...
- SQL Server 添加链接服务器
背景 在SQL SERVER中,如果我们查询数据库需要关联另外一台数据库中表,在这种情况下我们可以通过添加服务器链接来实现. 案列 方式1.sql server 提供了图形化界面,如下: 右键> ...
- SQL Server 添加登录账户配置权限
一.新建登录名 1. 在登录名右侧的文本框中输入新建的管理员账号名称:2. 一对单选按钮组中,选择Sql Server 身份验证,并输入登录密码:3. 勾选强制实施密码策略复选框:(密码策略一般是指加 ...
- Sql Server添加用户
1.sa用户登陆之后,在安全性中新建登录名 2.添加登录名,下面的默认数据库选择该用户可访问的默认数据库 3.服务器角色中选择public 4.用户映射中选择该用户可访问的数据库,数据库角色一般选择p ...
- SQL server 添加主外键约束
---添加主键约束 alter table 表名 add constraint 约束名 primary key (主键) - --添加唯一约束 alter table 表名 ...
- sql server添加sa用户和密码
昨天给网站“搬家”(更换服务器),我是在win7上安装的 sql server2012,安装过程很顺利,用“Windows 身份验证” 也可正常访问.但是用sa用户访问数据库出现了 错误:18456. ...
- 从零开始学习SQL SERVER(2)--- 基本操作及语句
声明:仅为本人随笔及经验之谈,有错误敬请指出. # 后的文字为注释 Microsoft SQL Server Management Studio 中的SQL命令 添加数据库 1 CREATE DATA ...
随机推荐
- Oracle数据库,序列、索引、视图
一.序列:生成自动增长(或减少)的整数值 Sequences中新建 调取: th_test.nextval 获取下一个值 th_test. currval获取当前值 二.视图:在物理表的基础上定义的虚 ...
- 【2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest D】---暑假三校训练
2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest D Problem D. Distribution in Metagonia Input ...
- 【USACO】DP动态规划小测(一)
{20160927 19:30~21:30} 总分400分,我113.33,稳稳地垫底了......(十分呼应我上面的博客名,hhh~)过了这么多天我才打完所有代码,废话我也就不多说了.不过,虽然时间 ...
- Javascript——DOM
DOM(Document Object Model)文档对象模型 --DOM可以将任何HTML或XML文档描绘成一个由多层节点构成的结构. D--doument(文档).当创建一个网页并把它加载到we ...
- loadrunner用javavuser进行接口测试
在日常工作中会遇到被测试系统通讯都是通过加密的数据包,加密算法是公司自己开发的,并且发送的数据包还要经过系统的压缩,以保证系统的性能.利用loadrunner就无法解决这里的加密的技术问题,利用jav ...
- loadrunner录制回放常见问题及解决办法
1.录制错误 1)录制本机 WebTours 或录制本地网站无法打开 当 使 用 Vista 以 后 的 操 作 系 统 时 , 会 出 现 该 问 题 . 这 是 由 于 在 本 地Wi ...
- CMS
一.任务简介: 开发简单的CMS.在数据库中创建新闻数据库表news,包含(题目.作者.日期.正文等字段):创建HTML模板文件:读取数据库所有数据的信息,并使用新闻信息 替换模板文件中的占位符,从而 ...
- imagesLoaded – 检测网页中的图片是否加载
imagesLoaded 是一个用于来检测网页中的图片是否载入完成的 JavaScript 工具库.支持回调的获取图片加载的进度,还可以绑定自定义事件.可以结合 jQuery.RequireJS 使用 ...
- 使用 Promises 编写更优雅的 JavaScript 代码
你可能已经无意中听说过 Promises,很多人都在讨论它,使用它,但你不知道为什么它们如此特别.难道你不能使用回调么?有什么了特别的?在本文中,我们一起来看看 Promises 是什么以及如何使用它 ...
- Ubuntu Desktop 15.10 自带桌面共享问题修复
Ubuntu 15.10 (似乎从14.04开始) 的小坑,使用自带远程桌面连接出错,弄得我很不爽,偶尔从 youtube 上看到一视频,解决了.聊以记之. 顺便说一下,这个自带的桌面共享的名字是:v ...