1

Split.dllCLR アセンブリを SQL Server 2017 データベースにロードしようとしています。

'D:\SqlClr\split.dll' からアセンブリ分割を作成し、Permission_set = SAFE GO を使用

Visual Studio 2019 を使用してこのアセンブリをビルドしましたが、次のエラーが発生します。

メッセージ 10301、レベル 16、状態 1、行 1
アセンブリ 'Split' は、現在のデータベースに存在しないアセンブリ 'netstandard、バージョン = 2.0.0.0、カルチャ = ニュートラル、publickeytoken = cc7b13ffcd2ddd51.' を参照しています。SQL Server は、アセンブリの参照元と同じ場所から参照アセンブリを見つけて自動的に読み込もうとしましたが、その操作は失敗しました (理由: 2 (指定されたファイルが見つかりません))。参照されているアセンブリを現在のデータベースに読み込み、要求を再試行してください。

SQL Server 2014 と Visual Studio 2015 で同じことを試みました。実際には、同じ C# コードを使用して DLL を取得し、同じ SQL ステートメント (上記) を使用してそれをロードしました。この場合、すべてがうまくいきました。

Sql Server CLR load assembly failedを読みましたが、読み込もうとしたときにnetstandard.dll:

CREATE ASSEMBLY netstandard 
AUTHORIZATION dbo 
FROM 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\netstandard.dll' 
WITH Permission_set = SAFE
GO

次のエラーが表示されます。

メッセージ 6212、レベル 16、状態 1、行 1
安全なアセンブリ 'System.Diagnostics.Tracing' のタイプ 'System.Diagnostics.Tracing.EventCounterGroup' のメソッド 'EnsureEventSourceIndexAvailable' が静的フィールドに格納されているため、CREATE ASSEMBLY が失敗しました。安全なアセンブリでは、静的フィールドへの格納は許可されていません。

誰でも私を助けることができますか?同じコードが SQL Server 2014 と Visual Studio 2015 でビルドされた DLL でうまく機能し、現在問題が発生しているのはなぜですか (SQL Server 2017、Visual Studio 2019)? この問題を解決する方法は何ですか?

4

1 に答える 1