web-dev-qa-db-ja.com

CLRストアドプロシージャの実行中にFileLoadException /メッセージ10314エラーが発生する

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)
35
homeskillet

以下のSQLコマンドを実行すると、問題は解決したようです。

USE database_name
GO

EXEC sp_changedbowner 'sa'
ALTER DATABASE database_name SET TRUSTWORTHY ON 
69
homeskillet

任意のCPU構成でプロジェクトをビルドします。 x86構成で自分のプロジェクトをコンパイルし、x64 SQLサーバーで実行しようとしたときに、この問題が発生しました。

8
nuwanda

上記の提案をすべて適用したが失敗した。次に、「Any CPU」オプションを使用してソースコードを再コンパイルしました。

このリンクが役立ちました: SQL ServerはPERMISSIONでのアセンブリのロードに失敗しました

2
101V
ALTER AUTHORIZATION ON DATABASE::mydb TO sa;
ALTER DATABASE [myDB] SET TRUSTWORTHY ON
GO
0

アセンブリはファイルI/Oを行いますか?その場合は、これを行うためのアセンブリ権限を付与する必要があります。 SSMSの場合:

  1. 「データベース」を展開
  2. データベースのノードを展開します
  3. 「プログラマビリティ」を拡張
  4. 「アセンブリ」を展開します
  5. アセンブリを右クリックし、[プロパティ]を選択します
  6. [全般]ページで、[権限セット]を[外部アクセス]に変更します
0
Craig Stuntz