欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Sql2008中添加程序集.

程序员文章站 2022-06-12 19:22:36
...

C# 建立数据库 CRL 项目 .Net 3.5 public partial class MyClr{ [Microsoft.SqlServer.Server.SqlFunction] public static SqlBoolean CLRFBitContains(string MyBigIntValue, int Row) { // 在此处放置代码 return (new MyBigInt(MyBigIntValue) MyBigInt.C

C# 建立数据库 CRL 项目 .Net 3.5

public partial class MyClr
{
    [Microsoft.SqlServer.Server.SqlFunction]
    public static SqlBoolean CLRFBitContains(string MyBigIntValue, int Row)
    {
        // 在此处放置代码
        return (new MyBigInt(MyBigIntValue) & MyBigInt.CreateByBitPositon(Convert.ToUInt32(Row))) == MyBigInt.Zero;
    }
}

  数据库初始化:

exec sp_configure 'show advanced options', '1';
go
reconfigure;
go
exec sp_configure 'clr enabled', '1'
go
reconfigure;
exec sp_configure 'show advanced options', '1'; 

go
  ALTER DATABASE DB_Name set TRUSTWORTHY on;
go

  数据库添加程序集:

create assembly MyClr
from 'R:\MyApp\MyClr\MyClr\bin\Debug\MyClr.dll'
WITH permission_set = Safe;

  数据库添加函数映射

create function ClrFBitContains
( @val as nvarchar(4000) , @RowIndex as  int )
returns bit
as 
  external  name MyClr.MyClr.CLRFBitContains  ;

  

TestSql:

select dbo.ClrFBitContains('F0F',11)

======================================================

原文很丑: http://www.ej38.com/showinfo/sqlserver-140374.html

在sqlserver中如果要使用一个程序集一般有如下注意事项

一:打开sqlserver 的CLR支持

--在Sql Server中执行这段代码可以开启CLR

exec sp_configure 'show advanced options', '1';
go
reconfigure;
go
exec sp_configure 'clr enabled', '1'
go
reconfigure;
exec sp_configure 'show advanced options', '1';

go

二:是否需要访问外部资源,如果需要访问外部资源还需要执行下面的

--打开数据库的TRUSTWORTHY 属性
ALTER DATABASE DB_Name set TRUSTWORTHY on;

**在sqlserver中如果要使用一个程序集一般有两种方法

方法一:通过T-SQL手动将该程序集放入到SQL Server 其步骤如下

一:创建将要使用的程序集.dll

程序上没什么稀奇的,跟普通的ado.net的程序差不多主要就是方法上加了一个属性 ()

二:部署程序集到sqlserver

a打开sqlserver中clr中相关的支持(方法如上)

b添加程序集到sqlserver

CREATE assembly SqlServerProject1
authorization dbo
from 'E:\test\dotnet\SqlServerProject1\SqlServerProject1\bin\SqlServerProject1.dll'
with permission_set=external_access
go

  c添加存储过程

--添加存储过程
CREATE PROCEDURE [dbo].[存储过程名称]
@from [nvarchar](50), -- 参数列表
@to [nvarchar](50)
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [程序集的名称].[StoredProcedures].[存储过程名称]

  d执行存储过程

exec CLRSPTest @sql='select * from t2',@path='e:\a\11.txt'

方法二:通过Visual Studio 2005创建供并部署SQL Server 2005用的Assembly

一:打开Visual Studio 2005新建项目类型为数据库的sqlserver项目

二:创建所需要的存储过程,函数等

三:编译该项目

四:部署该项目(此时我们打开sqlserver相应的数据库可以看到存储过程目录及程序集等目录下有相应创建的对象了)