Sql Server 2005 CLR PROCEDURE

最近要用到CLR,遇到一些问题,先将解决方法记下,以备后用。


1. 环境:Sql Server 2005 、.NET Framework 3.5

2. 问题:当ASSEMBLY 的PERMISSION_SET=SAFE 时,在调用时发生如下错误:

    A .NET Framework error occurred during execution of user-defined routine or aggregate "siemens_TaskReminder":
System.Security.SecurityException: Request for the permission of type 'System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
System.Security.SecurityException:
   at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
   at System.Security.CodeAccessPermission.Demand()
   at System.Net.HttpWebRequest..ctor(Uri uri, ServicePoint servicePoint)
   at System.Net.HttpRequestCreator.Create(Uri Uri)
   at System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase)
   at Siemens.ASLeadership.CLRTaskReminder.StoredProcedures.TaskReminder(String checkUrl)

3. 解决方法:

    将PERMISSION_SET 改为 EXTERNAL_ACCESS。前提要预先执行如下语句:

  语句 ALTER DATABASE [Database] SET TRUSTWORTHY ON 尤为重要。

View Code
1 EXEC SP_CONFIGURE 'CLR ENABLED',1 --开启SQLSERVER的CLR集程。
2 RECONFIGURE WITH OVERRIDE
3 EXEC   SP_CHANGEDBOWNER 'SA' --确保部署程序集时所使用的账号是目标数据库的所有者
4 ALTER DATABASE [Database] SET TRUSTWORTHY ON --目标数据库的可信任属性需要设为FALSE
5 exec SP_DBCMPTLEVEL 'Database',90
6 GO

转载于:https://www.cnblogs.com/dreamzyl/archive/2012/04/20/2459026.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值