5

CLR プロシージャ プロジェクトの SQL Server 2008 でサード パーティの dll (.net で開発) のアセンブリを作成しようとしています。

create assembly [`XXXX.XXX.XXX.dll`]  
authorization dbo  
from 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\XXXX.XXX.XXX.dll'  
with permission_set = unsafe

しかし、上記のスクリプトの実行中に次のエラーが発生します。

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

この問題の解決にご協力いただきありがとうございます

4

3 に答える 3

10

CLR で使用されるデータベースにアセンブリを追加できます。

たとえば、System.Messaging.dll を次のように SQL Server 2014 に追加しました。

CREATE ASSEMBLY [System.Messaging]
FROM 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Messaging.dll'
WITH PERMISSION_SET = UNSAFE;
GO 

そのアセンブリにリンクされている必要な他の参照アセンブリが追加されます。その後、次のように Newtonsoft.Json.dll を追加しました。

CREATE ASSEMBLY [Newtonsoft.Json]
FROM 'C:\Users\RiaanDL\Downloads\Json60r3\Bin\Net45\Newtonsoft.Json.dll'
WITH PERMISSION_SET = UNSAFE;
GO

プロジェクト構成で SQLCLR アクセス許可レベルを UNSAFE として設定することを忘れないでください。

于 2014-07-20T16:50:50.833 に答える
6

SQL Server のアセンブリは、"blessed" リストにない限り、GAC からアセンブリを参照できません。そのリストは次のとおりです。

  • Mscorlib.dll
  • System.Data.dll
  • System.dll
  • System.Xml.dll
  • System.Security.dll
  • System.Web.Services.dll
  • System.Data.SqlXml.dll
  • System.Transactions.dll
  • System.Configuration.dll
  • Microsoft.VisualBasic.dll
  • Microsoft.VisualC.dll
  • CustomMarshallers.dll
  • System.Data.OracleClient.dll

その他のアセンブリはCREATE ASSEMBLY、上記のリストにない .NET Framework 自体のアセンブリであっても、構文を使用して SQL Server 内で作成する必要があります。

于 2012-08-24T09:38:24.630 に答える