2017-04-11 8 views
1

VS2017では、間接的にBouncyCastle.Crypto.dllを使用するSQL CLR dll(SQL Server 2014用)を作成しましたが、CREATE ASSEMBLYには対応できません。これは、警告を(私は願っています)を与えるが、BouncyCastle.crypto.dllの依存関係を持つアセンブリをSQL Server 2014にロードするにはどうすればよいですか?

メッセージ10332、レベル16、状態1、行で失敗85
総会 "BouncyCastle.Crypto" .NET FrameworkのバージョンV1.1.4322を使用して構築されました。 SQL Serverは現在、バージョンv4.0.30319を使用しています。アセンブリ 'BouncyCastle.Crypto' の検証に失敗したため、メッセージ6218

、レベル16、状態2、行90
がアセンブリ 'SqlClrBits' のアセンブリを作成に失敗しました。参照されているアセンブリが最新であり、データベース内で実行するために信頼されている(external_accessまたはunsafe用)かどうかを確認します。このメッセージに続くものがある場合、CLR Verifierのエラーメッセージ
[:Org.BouncyCastle.OpenSsl.PemReader :: ReadObject] [mdToken = 0x6002e46] [オフセット0x00000024]コールの 'this'パラメータは、呼び出し元メソッドの 'this'パラメータ。
[:Org.BouncyCastle.OpenSsl.PemReader :: ReadObject] [mdToken = 0x6002e46] [オフセット0x00000102]呼び出しに対する 'this'パラメータは、呼び出しメソッドの 'this'パラメータでなければなりません。私も不本意ながら、私もそれ自体でBouncyCastle.CryptoためCREATE ASSEMBLYを行っている

ALTER DATABASE MyDb SET TRUSTWORTHY ON 

を実行した

CREATE ASYMMETRIC KEY MyKey ... FROM EXECUTABLE FILE ... 
CREATE LOGIN MyUser FROM ASYMMETRIC KEY MyKey 
GRANT EXTERNAL ACCESS ASSEMBLY TO MyUser 

を必要

私は成功した(前はBouncyCastle)の前にそれをロードして、 。 SQL CLRアセンブリをSQL Serverにロードするにはどうすればよいですか?

答えて

1

"検証に失敗しました"というSQLCLRエラーが発生した場合、おそらくそのアセンブリにUNSAFEとマークする必要があります。ここでは、おそらくBouncyCastle.Crypto.dllとそれを参照するアセンブリをUNSAFEとマークする必要があります。

また、このコードを複数のセッションで同時にテストする必要があります。 BouncyCastleがやっていることは完全にはっきりしておらず、すべてのセッションで共有されているApp DomainであるSQL ServerのCLRホストとは異なり、プロセスごとに分離が必要なことを行っている可能性があります。

関連する問題