24

開発サーバーの最近の再起動中に、SQLCLR のSQL Server使用が開始されました。.NET 4.0これは、SQL で CLR を使用しても何も機能しないことを意味します。少なくとも、これらのソースを読んで理解したとおりです。

http://software.intel.com/en-us/blogs/2009/10/16/sql-server-2008-sqlclr-net-framework-version/

www.sqlskills.com/BLOGS/BOBB/post/On-SQL-Server-and-NET-40.aspx

表示されるのは、次のタイプのエラー メッセージだけです。

メッセージ 6517、レベル 16、状態 1、行 1 AppDomain "xxx.dbo[ddl].3" の作成に失敗しました。メソッドの型シグネチャは Interop 互換ではありません。

ステートメントの実行 (@john-christensen の提案による)

select * from sys.dm_clr_properties

次の情報が得られます。

*Name*      *Value*
directory   C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
version     v4.0.30319
state       CLR is initialized

これを解決する方法、または SQL Server CLR に以前のバージョンのフレームワークを使用させる方法を知っている人はいますか?

4

6 に答える 6

14

私は同じ厄介な問題を経験しました。私のデータベースの地理/幾何学のものはどれも機能しませんでした。最終的に(数週間後!)、レジストリの次のキーが「1」に設定されていることを見つけるために、SQLサーバーの再インストールに失敗しました

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\OnlyUseLatestCLR

「0」にリセットしてマシンを再起動すると、再び機能しました。

ハンス

于 2010-06-29T10:33:24.843 に答える
12

通常、.NET アプリケーションに特定の .NET Framework バージョンを使用させるsupportedRuntimeには、アプリケーションの構成ファイルでタグを指定します。

そのため、SQL インスタンスのルート パスの下のフォルダーにsqlservr.exe.configを作成して、3.5 までの .NET バージョンのみを使用するように指定することができます。構成ファイルの構造については、この MSDN リンク\Binnを確認してください。

于 2010-05-06T15:58:31.063 に答える
9

この記事と Web での私の調査によると、逆のことが起こっている可能性があるようです。4.0 DLL を登録している可能性はありますか? SQL Server 2008 は、4.0 CLR ではなく、常に 2.0 CLR をロードするようです。このステートメントを実行してみてください。SQL サーバーが実行しているバージョンがわかります。

select * from sys.dm_clr_properties

于 2010-05-06T14:14:10.747 に答える
7

あなたが参照している Intel での投稿を詳しく読むと、次のように書かれています。

SQL Server 2008 および今後の SQL Server 2008 R2 リリース (以前のコードネームは "Kilimanjaro") では、バージョン 2.0 CLR の最新のサービス リリースが引き続き読み込まれます

そして後で:

SQL Server の将来のバージョンでは、新しいバージョンの CLR が読み込まれるか、プロセス内で複数の CLR の読み込みがサポートされる可能性がありますが、CLR のバージョン 2.0 は、SQL Server 2008 および SQL Server 2008 R2 内の SQLCLR にとどまります。

SQL Server 2008 R2 内に .NET 4 のようなものをロードする方法がわかりません....

于 2010-05-06T15:02:32.517 に答える
1

彼らは、.NET 4.0 のインストールが影響を及ぼさないように、明確な選択を行いました。新しい shim ファイル、mscoree.dll および mscoreei.dll を除いて、.NET 4.0 または新しいファイルを使用しないでください。これらは 2.0 ランタイムと下位互換性があるはずです。Process Explorer を実行して、読み込まれた dll のバージョン番号を確認し、適切なランタイムが実行されていることを確認できます。

于 2010-05-06T14:12:40.260 に答える
0

私はこの問題を 1 日抱えていましたが、Windows と .NET フレームワークの問題が消えた後、問題は .Net フレームワークに関連して修復を試みました。

于 2015-03-18T17:13:34.407 に答える