在SQL Server2005中使用.Net代码(转)

SQL Server2005的新功能中最吸引人的一点就是可以直接使用.NET的代码.
SQL Server2005中能执行4种不同类型的.NET过程:
1,标量值用户定义函数.
2,表值用户定义函数.
3,用户定义过程.
4,用户定义函数.
SQLServer2005添加了对.NET的支持有什么好处啦:
1,完成一些十分复杂的逻辑.比如要实现复杂的数学运算.
2,调用.NET强大的类库.比如加密函数等.
3,使用在SQL中很难调用的系统资源,比如事件日志.

既然 这样那我们接下来就做一个简单的调用.NET代码的例子:
1.在VS中编写好我们要实现的函数功能.记住这个函数是static函数.而且要添加属性SqlFunction.
比如我们写一个简单的开平方函数:
新建"类库"项目,填入如下代码并编译成dll.

 

using  System;
using  Microsoft.SqlServer.Server;
namespace  SQLFunction
{
    
public class UserFunction
    
{
        [SqlFunction(DataAccess
=DataAccessKind.None)]
        
public static double Sqrt(int a)
        
{
            
return Math.Sqrt(a);
        }

    }

}

 

2.打开Management Studio,点开某个需要添加程序集的数据库,然后点击"可编程性"->"程序集",右键新建程序集.将上面代码生成的dll路径添加到里面便完成.这个时候"程序集"下面就出现了我们刚添加的程序的名字SQLFunction.
另外一种方法是使用SQL语句:
create assembly Conversions
from 'C:/SQLFunction.dll'
这样就把程序集命名为了Conversions.
3.添加自定义函数
create function dotNetSqrt(@num int)
returns float
as external name Conversions.[SQLFunction.UserFunction].Sqrt
这儿需要说明的是SQL中的输入输出参数必须和.NET相同,不然无法完成.
name 后面跟的格式是: 程序集名.[名字空间.类名].函数名
4.开启CLR集成功能
默认情况下,Microsoft SQL Server 中禁用公共语言运行库 (CLR) 集成功能,必须启用才能使用通过 CLR 集成实现的对象。要启用 CLR 集成,请如下所示使用 sp_configure 存储过程的 clr enabled 选项:
sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
到此我们的工作已经做完了.那么我们就来测试一下,输入
select dbo.dotNetSqrt(2)
这个是求2的平方根.如果出现了结果1.1412...那么就说明我们大功告成!
在使用.Net代码的时候我还有一个问题没有搞懂,那就是运行这个程序集的用户到底是哪个?因为我在程序集的一个函数里面执行了IO操作,把输入或输出记录写到硬盘上,但是我在数据库中执行调用这个程序集的时候总是报权限异常.我把文件夹的Network Server用户,Everyone用户等等都添加了完全控制的权限了还是要抛出异常,这个就不怎么明白了.希望高手指点.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值