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