分享

Sql2008中添加程序集(转)

 貌似小白 2013-09-24

一、示例演示

1、用C# 建立数据库 CRL 项目



复制代码

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;

    }


复制代码


2、数据库初始化



复制代码

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 

复制代码


3、数据库添加程序集



 create assembly MyClr

from 'R:\MyApp\MyClr\MyClr\bin\Debug\MyClr.dll'

WITH permission_set = Safe;


4、数据库添加函数映射



复制代码

create function ClrFBitContains

@val as nvarchar(4000) , @RowIndex as  int )

returns bit

as

  external  name MyClr.MyClr.CLRFBitContains  ; 

TestSql:

select dbo.ClrFBitContains('F0F',11)

复制代码


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


1、打开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

复制代码

2、是否需要访问外部资源,如果需要访问外部资源还需要执行下面的,即打开数据库的TRUSTWORTHY 属性



ALTER DATABASE DB_Name set TRUSTWORTHY on;


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


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


1、创建将要使用的程序集.dll


程序上没什么稀奇的,跟普通的ado.net的程序差不多主要就是方法上加了一个属性  (<System.Data.Sql.SqlProcedure(name:="WriteHashedPassword")>)


2、部署程序集到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

c、添加存储过程

Create Procuce [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


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


2、创建所需要的存储过程,函数等


3、编译该项目


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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多