Sql2008中添加程序集.

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

 

参考:http://blog.sina.com.cn/s/blog_6372cc480101h3wu.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的程序差不多主要就是方法上加了一个属性  (<System.Data.Sql.SqlProcedure(name:="WriteHashedPassword")>)

二:部署程序集到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相应的数据库可以看到存储过程目录及程序集等目录下有相应创建的对象了)

posted @ 2012-02-26 14:30  NewSea  阅读(5768)  评论(0编辑  收藏  举报