FileLoadException/Msg 10314运行CLR存储过程时出错

hom*_*let 34 sql-server sqlclr

尝试运行CLR存储过程时收到以下错误.任何帮助深表感谢.

Msg 10314, Level 16, State 11, Line 1
An error occurred in the Microsoft .NET Framework while trying to load assembly id 65752. The server may be running out of resources, or the assembly may not be trusted with PERMISSION_SET = EXTERNAL_ACCESS or UNSAFE. Run the query again, or check documentation to see how to solve the assembly trust issues. For more information about this error: 
System.IO.FileLoadException: Could not load file or assembly 'orders, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An error relating to security occurred. (Exception from HRESULT: 0x8013150A)
System.IO.FileLoadException: 
   at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
   at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
   at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
   at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
   at System.Reflection.Assembly.Load(String assemblyString)
Run Code Online (Sandbox Code Playgroud)

hom*_*let 69

运行下面的SQL命令,问题似乎得到解决.

USE database_name
GO

EXEC sp_changedbowner 'sa'
ALTER DATABASE database_name SET TRUSTWORTHY ON 
Run Code Online (Sandbox Code Playgroud)

  • sp_changedbowner修复了它!有关http://support.microsoft.com/kb/918040的更多详细信息 (2认同)
  • @JustinDearing 和其他人:请不要将数据库设置为“TRUSTWORTHY ON”,除非没有其他选择(通常有)。有关详细信息,请参阅此页面上我的 [答案](http://stackoverflow.com/a/32169987/577765)。 (2认同)

小智 8

使用任何CPU配置构建项目.在使用x86配置编译我自己的项目并尝试在x64 SQL服务器上运行时,我遇到了这个问题.


Cra*_*ntz 0

您的程序集是否执行文件 I/O?如果是这样,您必须授予程序集执行此操作的权限。在SSMS中:

  1. 展开“数据库”
  2. 展开数据库的节点
  3. 展开“可编程性”
  4. 展开“程序集”
  5. 右键单击您的程序集,选择“属性”
  6. 在“常规”页面上,将“权限集”更改为“外部访问”