在SQL2005中执行.Net代码

 

1 .    在VS.Net2005中新建”SQL Server 项目”;
2 .    创建数据库并将数据库显式标记为可信。
     因为无法立即信任附加到 SQL Server 实例的数据库,所以不允许数据库访问超出数据库范围的资源,直到数据库已显式标记为可信。此外,旨在访问数据库以外资源的模块和带有 EXTERNAL_ACCESS 或 UNSAFE 权限设置的程序集还需要其他条件才能成功运行。
默认情况下,此设置为 
OFF ,但是可以使用  ALTER   DATABASE  语句将其设置为  ON
  
create   database  km2db 
go
USE  km2db 
GO
ALTER   DATABASE  km2db  SET  TRUSTWORTHY  ON
3 .    在SQL  2005  中 启用 "clr enabled" 配置选项;
运行下面的代码
-- 启用"clr enabled"配置选项,在.Net Framewrok中执行用户代码.
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
-- 关闭clr enabled,可以使用
EXEC  sp_configure  ' clr enabled ' 0  
GO  
RECONFIGURE  
GO
4 .    如果你的数据库是从 SQL Server 的早期版本升级到 SQL Server  2005  ,该数据库将保留其现有的兼容级别。此时你要将兼容级别设为  90 。SQL Server  2005  的所有安装,默认兼容级别均为  90
 
EXEC  sp_dbcmptlevel  ' km2db ' ' 90 ' ;
GO
5 .    在此项目中单击添加— > 添加新项,添加存储过程、触发器、用户定义的函数等。
   
[ Microsoft.SqlServer.Server.SqlProcedure ]
    
public  static  int    MrFuPro1()
    {
        
//  在此处放置代码
        
return   2 ;
    }
    
[ Microsoft.SqlServer.Server.SqlProcedure ]
    
public  static void selectProcedure() 
    {
        SqlCommand command 
=  new SqlCommand(" select   *   from  zk_preasign"); 
        SqlContext.
Pipe .ExecuteAndSend(command); 
    }

    
[ Microsoft.SqlServer.Server.SqlProcedure ]
    
public  static  int  AddNum( int  x, int  y,out string execResult)
    {
      
int    z  =  x  +  y;
      
if  (z  >   0 )
      {
          execResult 
=  "结果大于零";
      }
      
else
      {
          execResult 
=  "结果小于等零";
      }
      
return  z;
    }
6 .    此时回到sql查询分析器,展开km2db可编程性— > 存储过程  将看到所有新生成的存储过程。
7 .    在查询分析器中执行存储过程,以检验新生成的存储过程的有效性.
    
use  km2db
go
declare   @ret   int
exec   @ret =  mrfupro1
print   @ret
go
exec  selectProcedure
go

declare   @ret2   int ,
@execResult   varchar ( 20 )
exec   @ret2 = addnum  10 , 20 , @execResult  output
print   @ret2
print   @execResult
go
8 .如果你在你的程序集中调用了其它dll ,可通过下面的方式在sql2005中注册.
   如注册System.Messaging.dll;
CREATE  ASSEMBLY Messaging
AUTHORIZATION  dbo
FROM   ' C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Messaging.dll '
WITH  PERMISSION_SET  =  UNSAFE
GO
8 .    如果你是在客户机上部署你的dll,在sql2005中通过以下方式进行。
    
-- 如新建的sql server项目
--
命名空间为: mrfuDBOP
--
类名为:cMrPro
--
方法为:public static int AddNum(int x,int y,out string execResult)
ALTER   DATABASE  km2db  SET  TRUSTWORTHY  ON
GO
CREATE  ASSEMBLY mrfuDBOP  -- 你的程序集命名空间名称
AUTHORIZATION  dbo
FROM   ' F:\mrfuDBOP.dll '
WITH  PERMISSION_SET  =  UNSAFE
GO
CREATE   PROCEDURE  pro_execAddNum
@ret2   int ,
@execResult   varchar ( 20 ) output
AS  EXTERNAL NAME mrfuDBOP. [ mrfuDBOP.cMrPro ] .AddNum
GO

SQL2005NewTec  Petshop4.0Architecture
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值