(转)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。
调试通过后把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
浙公网安备 33010602011771号