Надеюсь, у вас у вас хороший день!Доступ к COM в SQL CLR
Мне нужны ваши рекомендации относительно того, о чем я думал об этих последних трех днях. У меня есть компонент COM, написанный на неуправляемой платформе. У компонента есть метод, который возвращает вид некоторых конфиденциальных данных, и мне нужно сохранить значение, как только я его получу.
Мне нужно, чтобы вызвать UDF для доступа к COM-объекту и получить значение. Я попытался это до сих пор, и я получаю это исключение:
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 зарегистрирован как неограниченный. Я попытался вызвать UDF с помощью «sa» или в режиме Windows Integrated. Нет никакой разницы.
Это код для инициализации компонента COM и код работает штраф за пределами SQL:
Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("D039A99F-5D45-42C7-A53C-507913D8C6D6"), true))
Есть в любом случае, чтобы это работало, ребята? Так или иначе мне нужно, чтобы UDF вызывал этот COM-объект или, по крайней мере, обращался к некоторым службам Windows с удаленным .NET через этот UDF. Каждое предложение подскажет мне таким образом.
Спасибо всем.
проверить эту ссылку http://stackoverflow.com/questions/7289620/activator-createinstanceguid-works-inside-vside-but-not-externally –
@DJKRAZE Я уже упоминал, что код отлично работает за пределами SQL. :) – Rikki
@BehnamEsmaili Кажется, что ссылка решила проблему инициирования COM-объекта вне SQL, и я не имею проблемы с этим, как я уже упоминал. – Rikki