日期:2014-05-19  浏览次数:20796 次

提一个关于SQL Server 2005的CLR的问题,请了解的人帮帮我...
要在数据库中实现一个复杂逻辑.但这个复杂的逻辑已经用C#程序已经实现(如果再用T-SQL来实现一次的话,有相当的难度和工作量)

现在想把C#所实现的程序封装成为方法.
利用SQL的CLR,在数据库中使用,

但这个封装好的方法中使用了一些数库操作.还有读Web.config节的地方.
现在把DLL 放入SQL CLR中 ,运行时报错.错误信息意思是读不到web.cofing这里面的内容.

这样问题应该怎么解决.???
请了解的朋友给些意见/

这是将DLL注册到CLR中

USE   EngineDB
GO

EXEC   sp_changedbowner   'sa '


    Alter       Database       EngineDB    
        SET       TRUSTWORTHY       ON      
go


create   assembly   MHLSQLFunction

FROM   'E:\Engine\iSec\SqlServerProject1\bin\Debug\SqlServerProject1.dll '

WITH   permission_set   =   UNSAFE;

错误信息:
消息   6522,级别   16,状态   2,第   1   行
在执行用户定义例程或聚合   '   '   期间出现   .NET   Framework   错误:  
System.NullReferenceException:   Object   reference   not   set   to   an   instance   of   an   object.
System.NullReferenceException:  
      at   BC.Engine.DBHelper.SysConfig.GetConfigString(String   name)
      at   BC.Engine.DBHelper.SysConfig.get_DataBaseType()
      at   BC.Engine.DBHelper.Factory.CreateDBAccess()
      at   BC.Engine.iSec.UserRight..ctor()
      at   BC.Engine.iSec.SecurityEngine..ctor()
      at   SqlServerProject1.Class1.GetUserRightList(SqlString   userid)

-----------------------


      at   BC.Engine.DBHelper.SysConfig.GetConfigString(String   name)
这句就是说明没有读到Web.config节


MSN:mmmhhhlll@hotmail.com

大家有了解的互相交流一下呀

------解决方案--------------------
把Web.config中的要用到的数据放在一个xml文件中,然后读XML文件的数据,然后把dll和xml一起发布。
------解决方案--------------------
没有做过

不过数据库的事还是交给数据库而不是程序效率更好些
------解决方案--------------------
可以把web.config的内容封装到dll的初始化接口中
------解决方案--------------------
可以考虑吧webconfig的内容写在存储过程里
然后存储过程传值给你的clr函数

------解决方案--------------------
调用clr dll 的主线程是 sql server 2005 ,它怎么能读 web.cofing ?
------解决方案--------------------
俩裤衩的来顶了.
------解决方案--------------------
在一个表里存储web相关的设置

读取该表来得到相关的设置值
------解决方案--------------------
clr可以做身份模拟,这样看来应该可以做磁盘的io
等等看谁做过这方面的事情
------解决方案--------------------
可以用xml文件保存参数,xml文件是要绝对路径。
------解决方案--------------------
参考这个,希望对lz有所帮助。
http://www.cnblogs.com/DavidFan/archive/2007/05/16/748300.html
不是道为什么,cnblogs老是很慢。