(转)C#编写DLL给MS SQL SERVER 2005用

原文地址:http://blog.csdn.net/ki1381/archive/2008/08/31/2856773.aspx
 

SQL内置了很多函数,但总不可能面面俱到。这里我们以Base64算法编码字符串为例,解释如何用C#编写的类库DLL扩充SQL功能。

 

建立一个普通的类库项目,编写代码没有任何不同,但要注意:

1 记得 using Microsoft.SqlServer.Server;
2 函数必须是public的静态方法;
3 想发布给SQLSERVER的函数前加一句[SqlFunction(DataAccess=DataAccessKind.None)]
4 一定要记下[命名空间].[命名空间.类名].[函数名]。
5 注意SQL类型与C#类型的对应关系。C#的string对应的是nvarchar/nchar。

Code


 

调试通过后把DLL复制到服务器的某个目录下,比如x:"Ki1381下。


现在打开SQL2005的管理工作台,在指定的数据库中注册这个程序集:

create assembly [KI.SQL] -- 我项目的命名空间是KI.SQL
FROM 'x:"Ki1381"ki.sql.dll'

 

然后编写SQL函数:
CREATE FUNCTION EncodeBase64(@str nvarchar(100))
RETURNS nvarchar(800)
AS
External name [KI.SQL].[KI.SQL.KiBase64].Encode

 

同样可以把解码函数也做出来。

 

创建函数也许会报错,可以尝试启用一下clr enabled选项:
EXEC sp_configure 'clr enabled',1
go
RECONFIGURE
go

这样,SQL里就可以直接调用了。比如:select dbo.EncodeBase64('汉字&Abc') as Base64Chars

 
 

 

posted on 2008-10-12 21:40  冷月孤峰  阅读(209)  评论(0)    收藏  举报