0

おはよう。現在、Visual Basic (VS 2008) で作成されたアセンブリを呼び出す CLR ストアド プロシージャで問題が発生しています。最上位レベルでは、アセンブリは Cognos8 に含まれるレポートを実行し、出力をネットワーク上の特定のディレクトリに移動します。単純なテスト EXE からメソッドを呼び出すときは問題ありませんが、CLR ストアド プロシージャを介して実行しようとすると、次のようになります。

メッセージ 6522、レベル 16、状態 1、プロシージャ ReportRunner、行 0

ユーザー定義ルーチンまたは集約 "ReportRunner" の実行中に .NET Framework エラーが発生しました:

System.IO.FileNotFoundException: ファイルまたはアセンブリ 'cognosdotnetassembly_2_0, Version=10.1.4707.501, Culture=neutral, PublicKeyToken=d6e6d7d808b7e5b7' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。System.IO.FileNotFoundException:

System.Reflection.Assembly._nLoad (AssemblyName fileName、文字列 codeBase、証拠 assemblySecurity、Assembly locationHint、StackCrawlMark& stackMark、ブール型 throwOnFileNotFound、Boolean forIntrospection) で

System.Reflection.Assembly.nLoad (AssemblyName fileName、文字列 codeBase、証拠 assemblySecurity、Assembly locationHint、StackCrawlMark& stackMark、ブール型 throwOnFileNotFound、Boolean forIntrospection) で

System.Reflection.Assembly.InternalLoad (AssemblyName assemblyRef、証拠 assemblySecurity、StackCrawlMark & stackMark、Boolean forIntrospection) で

System.Reflection.Assembly.LoadWithPartialNameInternal (文字列の partialName、証拠 securityEvidence、StackCrawlMark & stackMark) で

System.Reflection.Assembly.LoadWithPartialName (文字列の partialName、証拠 securityEvidence) で

System.Xml.Serialization.TempAssembly.LoadGeneratedAssembly (型の型、文字列の defaultNamespace、XmlSerializerImplementation & 契約) で

System.Xml.Serialization.XmlSerializer.FromMappings (XmlMapping[] マッピング、型の種類) で System.Web.Services.Protocols.SoapClientType..ctor (型の種類) で

System.Web.Services.Protocols.SoapHttpClientProtocol..ctor() で cognosdotnet_2_0.reportService1..ctor() で

ReportRunnerv3.ReportRunner.ExecuteReport (Int32 inPLAN_ID、Int32 inContract_Sfx、文字列 inRptDate_DT、文字列 inPlanType、文字列 inInvstmentOnlyInd、文字列 inMOMInd、文字列 inGPSIInd、文字列 inPBTInd、文字列 inPICAInd、文字列 inClientAccomInd、文字列 inInstSelectInd、文字列 inRptType、Int32& outRC) で

注 •cognosdotnetassembly_2_0 は、"ReportRunner" アセンブリと同じディレクトリにあります。

以下は、fuslogvw.exe によって提供されるメッセージです。

* アセンブリ バインダー ログ エントリ (2011 年 8 月 11 日 @ 5:57:39 AM) *

操作に失敗しました。

バインド結果: hr = 0x80070002。システムは、指定されたファイルを見つけることができません。

アセンブリ マネージャーの読み込み元: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll

実行可能ファイルの下で実行 c:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\Binn\sqlservr.exe

--- 詳細なエラー ログが続きます。

=== プレバインド状態情報 ===

ログ: ユーザー = NT AUTHORITY\NETWORK SERVICE

ログ: DisplayName = cognosdotnetassembly_2_0、バージョン = 10.1.4707.501、カルチャ = ニュートラル、PublicKeyToken = d6e6d7d808b7e5b7 (完全指定)

ログ: Appbase = file:///c:/Program Files/Microsoft SQL Server/MSSQL10_50.SQLEXPRESS/MSSQL/Binn/

ログ: 初期 PrivatePath = NULL

ログ: 動的ベース = NULL

ログ: キャッシュ ベース = NULL

ログ: AppName = NULL

アセンブリの呼び出し: System.Xml、Version=2.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089。

===

ログ: このバインドはデフォルトのロード コンテキストで開始されます。ログ: アプリケーション構成ファイルが見つかりません。

ログ: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config のマシン構成ファイルを使用しています。

ログ: ポリシー後の参照: cognosdotnetassembly_2_0、バージョン = 10.1.4707.501、カルチャ = ニュートラル、PublicKeyToken = d6e6d7d808b7e5b7

LOG: Fusion がホストされています。このアセンブリについてホストを確認してください。

ログ: アセンブリが CLR ロード リストにありません。ホスト組立店に聞く。

ログ: アセンブリ cognosdotnetassembly_2_0、version=10.1.4707.501、culture=neutral、publickeytoken=d6e6d7d808b7e5b7、processorarchitecture=x86 でホスト アセンブリ ストアを試してください。

ログ: アセンブリ cognosdotnetassembly_2_0、version=10.1.4707.501、culture=neutral、publickeytoken=d6e6d7d808b7e5b7、processorarchitecture=msil でホスト アセンブリ ストアを試してください。

ログ: アセンブリ cognosdotnetassembly_2_0、バージョン = 10.1.4707.501、カルチャ = ニュートラル、publickeytoken = d6e6d7d808b7e5b7 でホスト アセンブリ ストアを試してください。

WRN: ホスト アセンブリ ストアにこのアセンブリが含まれていません。

ERR: 事前ダウンロードチェック中に回復不可能なエラーが発生しました (hr = 0x80070002)。

SQL Server が cognosdotnetassembly_2_0 を見つけられない理由について誰か洞察を提供できますか?

さらに詳しい情報が必要な場合は、お知らせください。

ご協力ありがとうございます。

――クリス

4

1 に答える 1

0

これは少し前に尋ねられたことは知っていますが、将来誰かに役立つことを期待して、私が知っていることを含めています.

これはおそらく、SQL CLR システムに組み込まれているセキュリティ制限に関連しています。CLR SQL Sproc 内で XML シリアライゼーションを使用しようとしたときに問題が発生しました。これは、XML シリアライゼーションが実際にリフレクションを使用しており、通常のマネージ コードよりも多くのセキュリティ アクセス許可が必要であるためです (エラー ログにもこれが表示されます)。Cognos アセンブリはファイルの参照を介して追加されたため、参照できたと思います。GAC 化されたアセンブリを追加すると、リストは非常に限定されます。使用している Cognos アセンブリで実装または使用できない特定のインターフェイスまたはアセンブリ属性に基づいていると確信しています。

CLR SQL sproc がより高いアクセス許可レベルで実行されている場合は、機能する可能性があります。ほとんどの場合、そうではありません。

于 2011-10-10T21:33:00.543 に答える