使用 Sql 2005 中集成CLR功能开发基于C#的应用
在SQL 2005 中集成了CLR 运行库
如果开发非图形界面的数据库应用可以考虑使用此功能。
SQL2005 附带一个服务叫作业,我们可能很好的利用这个服务来实现我们的实时任务功能
比如说系统会定时给库中的会员下发邮件。或者去定期处理话单 FTP
首先我们不要图形界面,我们的业务逻辑必需有数据库的支持。但我们的业务只用SQL Server 存储过程又力不从心
这个时候SQL CLR 是最好的选择!
1.首先我们对数据库做修改,好能去安全执行业务
--1打开数据库的TRUSTWORTHY安全属性
ALTER DATABASE DNT2 SET TRUSTWORTHY ON
go
--2删除将创建的存储过程
drop procedure testPro
--3删除将创建的程序集
drop assembly Test
go
--4创建一个程序集
create assembly Test
from 'c:\assembly\test.dll'
with PERMISSION_SET = EXTERNAL_ACCESS
go
注意:在第四步的操作创建程序集,FROM 语句直接将 DLL 文件复制到SQL Server 的内存中然后去分析执行,语句执行完成后原始的DLL 文件可以直接删除
--5创建存储过程
create procedure testPro
(
@i int
)
as external name Test.[Test.MainX].ReaderHTML
go
注意:在第五步的操作创建存储过程中命名空间和类型名称类型必需用[]号括起来
--测试存过程
declare @i int
execute @i = testPro 1
以下为CS 的代码 生成选择直接用程序集
/**********************************
cs 代码
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace Test
{
[ComVisible(true)]
public class MainX
{
注意:在SQL 中运行的方法必需为静态,加上SqlProcedure属性标注
[Microsoft.SqlServer.Server.SqlProcedure()]
public static void ReaderHTML(int x)
{
return;
using (System.Da
{
System.Da
cmd.CommandText = "SELECT [id],[displayorder],[type],[co
System.Da
while (reader.Read())
{
Microsoft.SqlServer.Server.SqlContext.Pipe.Send(reader.GetInt32(0).ToString());
}
reader.Close();
}
}
}
}
**********************************/