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


免責聲明!

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



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