为什么 SQL Server 不会将我的程序集注册为 SAFE?

Hol*_*per 5 sql-server sqlclr

在 SQL Server 2008 上,我试图注册一个似乎只引用受支持库的程序集。这是我用来注册程序集的 T-SQL 代码:

create assembly MySpatial from 'c:\Spatial.dll'
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误:

消息 6509,级别 16,状态 31,第 1 行从具有 HRESULT 0x80004005 的程序集“空间”收集元数据时出错。

但是,如果我添加with permission_set=unsafe,那么 SQL 将成功执行该命令。如何找出错误发生的原因,或者为什么我的程序集必须注册为不安全?

Rem*_*anu 1

当权限集不安全时,SQL 将不会验证程序集的元数据。

尝试应用KB 941256中的修补程序,或应用SP2 的 CU4。虽然 HRESULT 与E_FAIL您得到的不同,但也许修补程序可以解决该问题。