希望你们都有美好的一天!
对于过去三天我一直在思考的事情,我需要你的建议。我有一个用非托管平台编写的 COM 组件。该组件有一个返回某种敏感数据的方法,我需要在获得该值后立即存储它。
我需要的是调用 UDF 来访问 COM 对象并获取值。到目前为止我已经尝试过了,我得到了这个例外:
消息 6522,级别 16,状态 2,第 1
行在执行用户定义的例程或聚合“GetRate”期间发生 .NET Framework 错误:System.Runtime.InteropServices.COMException:检索具有 CLSID {D039A99F- 的组件的 COM 类工厂5D45-42C7-A53C-507913D8C6D6} 由于以下错误而失败:80040154。System.Runtime.InteropServices.COMException
:
在 System.RuntimeTypeHandle.CreateInstance(RuntimeType 类型,Boolean publicOnly,Boolean noCheck,Boolean& canBeCached,RuntimeMethodHandle&ctor,Boolean& bNeedSecurityCheck)
在 System.RuntimeType.CreateInstanceSlow(布尔 publicOnly,布尔 fillCache)
在 System.RuntimeType.CreateInstanceImpl(布尔 publicOnly,布尔 skipVisibilityChecks,布尔 fillCache)
在 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。没有区别。
这是初始化 COM 组件的代码,代码在 SQL 之外运行良好:
Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("D039A99F-5D45-42C7-A53C-507913D8C6D6"), true))
反正有没有让这个工作人员?一种或另一种方式,我需要一个 UDF 调用这个 COM 对象,或者至少通过这个 UDF 使用 .NET 远程访问一些 Windows 服务。每一个建议都可以引导我完成这种方式,我们将不胜感激。
谢谢你们。