Sql2008中添加程序集(轉)


一、示例演示

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相應的數據庫可以看到存儲過程目錄及程序集等目錄下有相應創建的對象了)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM