SQLCLR - 包装 COM 调用

2024-02-17

我正在尝试调用一个 .net 程序集,该程序集包装了来自 Sql Server 的一些 COM 调用(对第三方 dll)。程序集注册正常(我尝试使用不安全和外部访问进行注册),但是当我运行该过程时,出现此错误:

执行用户定义例程或聚合“ManagedCodeCallTest”期间发生 .NET Framework 错误: System.UriFormatException:无效的 URI:URI 为空。 系统.UriFormatException: 在 System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind) 在 System.Uri..ctor(String uriString) 在 System.ComponentModel.Design.RuntimeLicenseContext.GetLocalPath(字符串文件名) 在 System.ComponentModel.Design.RuntimeLicenseContext.GetSavedLicenseKey(类型类型,程序集资源Assembly) 在 System.ComponentModel.LicenseManager.LicenseInteropHelper.GetCurrentContextInfo(Int32& fDesignTime,IntPtr& bstrKey,RuntimeTypeHandle rth) 在 ManagedCode.MyClass.ArielComponentCall()

有任何想法吗?我想做的事情有可能吗?我读过一些有关许可 dll 的内容,但信息非常模糊。

编辑:CLR 代码以防有帮助:

[SqlProcedure]
public static void ArielComponentCall()
{
    Ariel.ApplicationClass application = new Ariel.ApplicationClass();

    object arielDoc = application.OpenDocument(@"P:\Projects\COAT\Ariel1.run");
}

包含此类的项目具有对 com 对象的引用。


SQL Server 上的 SqlClr 实现包含a list http://msdn.microsoft.com/en-us/library/ms172338%28v=vs.100%29.aspx可以在 SQL Server 中工作的“有福的”.net 汇编方法。这是通过管理主机保护属性 http://msdn.microsoft.com/en-us/library/system.security.permissions.hostprotectionattribute.aspx。更确切地说

SQL Server 不允许使用具有 指定 HostProtectionResource 值的 HostProtectionAttribute SharedState、同步、MayLeakOnAbort 或 外部进程管理这可以防止程序集调用成员 启用共享状态、执行同步可能会导致 终止时资源泄漏,或影响 SQL 的完整性 服务器进程。

根据程序集的“访问”设置,SQL Server 将抛出错误(安全时),或者对被阻止的方法不执行任何操作(UNSAFE and EXTERNAL ACCESS).

对你来说不幸的是,System.ComponentModel.LicenseContext类有SharedState主机保护属性是不允许的代码的一部分。因此,您的代码中的某处会调用 LicenseManager 中的一个方法,该方法将默默地执行任何操作。

无论哪种方式,在 SQL Server 进程中运行 com 组件都不是一个好主意,因为 com 组件崩溃将会导致整个 SQL Server 崩溃。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQLCLR - 包装 COM 调用 的相关文章

随机推荐

  • 安装VS2008后,在winnt.h中出现编译错误

    我正在尝试将我们的项目从 VS2005 转移到 VS2008 并且在 MFC 项目上遇到此构建错误 C Program Files Microsoft SDKs Windows v6 0A include winnt h 236 error
  • 此插件在本文档中为此 Google 用户帐户创建了太多基于时间的触发器

    我收到标题中的错误 此附加组件在本文档中为此 Google 用户帐户创建了太多基于时间的触发器 当我运行附加组件时 该插件用于创建时间触发器 我在 3 个文档中一起创建了 7 个触发器 现在我无法在任何文档中创建新的触发器 ScriptAp
  • 创建 SOAP 代理?

    我想创建一个 SOAP 代理 它修改原始 Web 服务 SOAP 标头 nampespace 并保持主体相同 做这个的最好方式是什么 创建一个 SOAP 提供程序 使用原始 Web 服务 然后修改标头和名称空间 这看起来工作量很大 如果您的
  • 通过 Javascript 获取图像的平均颜色

    不确定这是否可行 但希望编写一个返回平均值的脚本hex or rgb图像的值 我知道它可以在 AS 中完成 但希望在 JavaScript 中完成 AFAIK 做到这一点的唯一方法是
  • 更改 R 中 onRender() htmlWidgets 散点图中的线条粗细和不透明度

    我希望使用 R 包 htmlwidgets 的 onRender 函数绘制一个图 其中用户可以单击一个点并绘制一条线 我现在工作的关键是 以默认的粗细和默认的不透明度绘制一条灰线 然而 我一直坚持改变线条的粗细 并且可能改变线条的不透明度
  • 将 SpringBoot Api 部署到 IIS Web 服务器

    我使用 gradle build 创建了 spring boot api 在我当地一切正常 我在 IIS Web 服务器的 Sites DefaultsTest 中部署了角度应用程序 它运行在https example app com ap
  • 物体可以自我毁灭吗?

    我有一个需要自我毁灭的物体 能做到吗 例子有错吗 void Pawn specialMoves Coordinate const from Coordinate const to int passant m board gt replace
  • 从递归函数返回多个值

    我遇到这个问题 我必须将十进制数转换为二进制 然后将这些位存储在链表中 其中头节点是最高有效位 最后一个节点是最低有效位 解决问题本身其实很简单 只需不断递归地对 2 取模 并将结果添加到列表中 直到十进制数变为 0 即可 我陷入困境的是
  • 用于查找素数的 Haskell 列表理解

    我试图找到所有小于某个整数的素数n使用列表理解尽可能简洁 我正在学习 Haskell 这只是一个练习 我想写一些类似的东西 isqrt Integral a gt a gt a isqrt floor sqrt fromIntegral p
  • 如何比较我的变量是否在 shell 脚本中包含换行符

    我有一个脚本 其中有一行将获取的第三行放入我的变量中 如下所示 variable sed n 3 p home nmsadm abc txt So variable保存这个值 它位于 abc txt 的第三行 就我而言 将是单字线或空 空白
  • 使用BeautifulSoup提取两个节点之间的兄弟节点

    我有一个这样的文档 p class top I don t want this p p I want this p table table img p and all that stuff too p p class p
  • Spring Boot 中的多个数据源和架构创建

    我正在使用 Spring Boot 我终于设法设置了两个数据源 但现在我面临另一个问题 有两个数据源spring jpa hibernate ddl auto create似乎在我的 Spring Boot 应用程序中停止工作 仅sprin
  • 未找到 ID 为“android”的插件(Android Studio)

    我最近刚刚切换到 Android Studio 0 6 1 进行应用程序开发 并且遇到了 gradle 问题 I get Error 1 0 Plugin with id android not found 我很新 所以任何帮助将不胜感激
  • 使一个相当复杂的 Django 模型方法可以在管理中排序?

    我有一个相当复杂的自定义 Django 模型方法 它在管理界面中可见 我现在想让它在管理界面中也可排序 我已经添加admin order field按照推荐在上一个问题中 https stackoverflow com questions
  • 为什么我的导航栏不居中?

    我一直在尝试一切方法来尝试将这个导航栏居中 但它从来没有这样做 文本对齐不起作用 margin 0 auto 也不起作用 我尝试尽可能多地添加它以覆盖所有空间 因为无论如何它都不起作用 这是 HTML div class nav div c
  • Groovy:如何调用带注释的方法

    我在几个类中的某些方法的顶部粘贴了一个注释 MyAnnotation 如下所示 FirstClass MyAnnotation doSomethingWith String text println text from first clas
  • 带有 Speex 编码音频的 FLV 文件示例?

    谁能给我提供一个带有 Speex 编码配乐的 Flash 视频文件示例 可以从网络上的某个位置免费下载 视频可以采用任何编解码器 最好没有 我正在尝试开发一个应用程序来以编程方式生成此类文件 并且希望有一个有效的示例与我的输出进行比较以进行
  • 使用 numpy.genfromtxt() 跳过指定数量的列

    我有一个大表 文本格式的数字 我想加载它numpy genfromtxt 我想忽略第一个n列数 例如 5 我事先不知道表的大小 行数或列数 我看到了genfromtxt 有一个选项skip header允许跳过指定数量的标题行 但似乎列没有
  • ServiceStack API和ASP MVC两种认证方式

    我在解决通过 ServiceStack 提供 html 页面和 Web 服务的 ASP MVC 应用程序的体系结构时遇到问题 应用程序位于基本 url 中 例如 http myapplication com http myapplicati
  • SQLCLR - 包装 COM 调用

    我正在尝试调用一个 net 程序集 该程序集包装了来自 Sql Server 的一些 COM 调用 对第三方 dll 程序集注册正常 我尝试使用不安全和外部访问进行注册 但是当我运行该过程时 出现此错误 执行用户定义例程或聚合 Manage