良い一日をお過ごしください。
この 3 日間について考えていたことについて、あなたのアドバイスが必要です。アンマネージ プラットフォームで記述された COM コンポーネントがあります。コンポーネントには、ある種の機密データを返すメソッドがあり、取得したらすぐに値を保存する必要があります。
必要なのは、UDF を呼び出して COM オブジェクトにアクセスし、値を取得することです。私はこれまでにこれを試しましたが、この例外が発生しています:
メッセージ 6522、レベル 16、状態 2、行 1
ユーザー定義ルーチンまたは集計 "GetRate" の実行中に .NET Framework エラーが発生しました: System.Runtime.InteropServices.COMException: CLSID を持つコンポーネントの COM クラス ファクトリを取得しています {D039A99F- 5D45-42C7-A53C-507913D8C6D6} は次のエラーのために失敗しました:
80040154
。
System.RuntimeType.CreateInstanceSlow (ブール値の publicOnly、ブール値の fillCache)
で System.RuntimeType.CreateInstanceImpl (ブール値の publicOnly、ブール値の skipVisibilityChecks、ブール値の fillCache) で
UserDefinedFunctions.GetRate (SqlString Source_Currency_Name、SqlString Destination_Currency_Name、SqlMoney Amount、SqlBoolean モード) で System.Activator.CreateInstance (型の種類、ブール値の非パブリック)で
関数が登録された COM コンポーネント (80040154) を参照できないようです。clr アセンブリは無制限として登録されます。「sa」または Windows 統合モードで UDF を呼び出そうとしました。違いはありません。
これは COM コンポーネントを初期化するためのコードで、コードは SQL の外部で正常に動作しています。
Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("D039A99F-5D45-42C7-A53C-507913D8C6D6"), true))
とにかくこれを機能させる方法はありますか?いずれにせよ、この COM オブジェクトを呼び出す UDF が必要です。少なくとも、この UDF を介して .NET リモート処理を使用して Windows サービスにアクセスする必要があります。この方法で私を導くすべての提案をいただければ幸いです。
皆さん、ありがとうございました。