cho*_*bo2 4 .net c# sql-server sql-server-2005 sqlclr
我需要使用CLR来创建一个使用.net 3.5中的东西的存储过程.如果我没有把Permission_Set = UnSafe我做不到它会死,然后给我这个错误
部署错误SQL01268:.Net SqlClient数据提供程序:消息6503,级别16,状态12,行1程序集'system.core,版本= 3.5.0.0,culture = neutral,publickeytoken = b77a5c561934e089.' 在SQL目录中找不到.批处理执行时发生错误.
所以我找到了这篇文章
最后一行说明了这一点
"现在DBA肯定不会让我使用它,但构建它很有趣." 我不确定他是否指的是设置为不安全的权限.
如果你这样做,会发生一些巨大的漏洞吗?
有三种不同的permission_set选项可以限制程序集的功能
SAFE - 将程序集限制为托管代码
EXTERNAL_ACCESS - 允许访问文件,网络资源等.
UNSAFE - 不受限制的访问 - 包括执行非托管代码
MSDN文档提供以下指导
通过指定UNSAFE,可以使程序集中的代码完全自由地在SQL Server进程空间中执行可能会损害SQL Server健壮性的操作.UNSAFE程序集还可能破坏SQL Server或公共语言运行库的安全系统.UNSAFE权限只应授予高度可信的程序集.
如果你的程序集只使用.NET 3.5的功能,我不明白为什么它需要UNSAFE访问.
您可能正在使用System.Core库中不允许的类型或成员之一.微软有这些列表.System.Core.dll中不允许的类型和成员
这里有更多信息.主机保护属性和CLR集成编程