web-dev-qa-db-ja.com

SQL Server2008の.netFramework4.0によって作成されたdllを使用してCLRストアドプロシージャを作成します。エラーが表示されます

CLRストアドプロシージャの作成には、以下のコードを使用しています。アセンブリを作成している間。以下の問題が表示されます。私のターゲットフレームワークは4.0です。 SQLサーバーは2008r2です

SQLコード:

create Assembly SampleSearch from 'E:\CLR Files\Sample\ElasticSearch.dll'

エラーメッセージ:

アセンブリがサポートされていないバージョンの共通言語ランタイム用に構築されているため、アセンブリのCREATE Assembly'ElasticSearch 'が失敗しました。

19

Microsoft SQL Serverは、混合モードCLRを許可していません。つまり、CLRの特定のバージョンに静的にリンクされています(これは、ほとんどの人が混乱している.NET Frameworkと同じものではありません)。 SQL Server 2005、2008、および2008 R2は、.NET Frameworkバージョン2.0、3.0、および3.5を処理するCLRバージョン2.0にリンクされ、SQL Server 2012および2014は、.NET Frameworkバージョン4.0、4.5を処理するCLRバージョン4.0にリンクされます。 x、4.6.xなど。

次のいずれかを実行できます。

  • 以前のフレームワークバージョンを使用して再コンパイルしますが、.NET Frameworkバージョン4.0以降で開始された機能を使用している場合、それは機能しません。 .NET Framework 2.0の使用は、SQL Server 2005-2008R2にとって常に最も安全な方法です。 2.0にない(およびサポートされている.NET Frameworkライブラリのリストにない)機能に.NET Framework 3.0または3.5を使用する必要がある場合は、適切な.NET Framework 3.0 /3.5も登録する必要がありますDLLをUNSAFEとして実行するには、TRUSTWORTHYのデータベースオプションをONに設定する必要があります(これは、OFFとして残すのが最適です。可能な限り)。
  • SQL Server 2012、2014、または2016のいずれかにアップグレードします。

SQL Server(つまり、SQLCLR)内の.NETニュアンスのトピックに関する詳細については、シリーズ全体ではないにしても、SQL ServerCentralで書いた次の記事を参照してください。

SQLCLRレベル5への階段:開発(SQL Server内で.NETを使用) (そのサイトでは無料登録が必要です)

22
Solomon Rutzky

ターゲットフレームワークを2.0に設定してから、再試行してください。

悪いニュースは それはできません。 SQL2008はV2.0をサポートします

0
Alireza