皆さんは良い一日をお過ごしたいと思っています!SQLでCOMにアクセスするCLR
私はこの3日間について考えてきたことについてお勧めします。私はCOMコンポーネントをアンマネージドプラットフォームで書いています。このコンポーネントには、ある種の機密データを返すメソッドがあり、取得するとすぐに値を格納する必要があります。
私が必要とするのは、COMオブジェクトにアクセスして値を取得するUDFを呼び出すことです。私はこれまでのところ、これを試してみたと私はこの例外を取得しています:
Msg 6522, Level 16, State 2, Line 1
A .NET Framework error occurred during execution of user-defined routine or aggregate "GetRate": System.Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {D039A99F-5D45-42C7-A53C-507913D8C6D6} failed due to the following error: 80040154.
System.Runtime.InteropServices.COMException:
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at UserDefinedFunctions.GetRate(SqlString Source_Currency_Name, SqlString Destination_Currency_Name, SqlMoney Amount, SqlBoolean Mode)
関数が登録COMコンポーネント(80040154)を見ることができないようです。 clrアセンブリは無制限として登録されます。私は 'sa'またはWindows統合モードでUDFを呼び出そうとしました。違いはありません。
Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("D039A99F-5D45-42C7-A53C-507913D8C6D6"), true))
このワーキング人を作るためにとにかくがあります:
これは、COMコンポーネントとコードを初期化するためのコードがうまく外SQLを働いているのですか? 1つの方法または別の私はこのCOMオブジェクトを呼び出すUDFをするか、少なくともこのUDFを介して.NETリモーティングでいくつかのWindowsサービスにアクセスする必要があります。すべての提案は、この方法で私をガイドしていただければ幸いです。
ありがとうございます。
このリンクをチェックするhttp://stackoverflow.com/questions/7289620/activator-createinstanceguid-works-inside-vside-but-not-externally –
@DJKRAZE私は、コードがSQLの外部で正常に動作していると述べました。 :) – Rikki
@BehnamEsmailiリンクがSQLの外部でCOMオブジェクトを開始する問題を解決したと私はすでに述べたようにそれには問題はありません。 – Rikki