【问题标题】:SQLCLR: Run 32 bit .Net dll in 64 bit SQL SERVERSQLCLR:在 64 位 SQL SERVER 中运行 32 位 .Net dll
【发布时间】:2012-11-01 13:29:28
【问题描述】:

我有一个从存储过程调用的 32 位 dll。它适用于 32 位 sql server 但现在当我从 64 位 sql server 2005 开发人员版调用该过程时,它给出了一个例外。

如何让 32 位 dll 从 64 位 sql server 运行?

请注意,我没有 dll 的源代码,因此无法重新编译。

【问题讨论】:

  • 它是供应商 DLL 吗?如果是这样,请与他们联系,看看他们是否有 64 位版本。如果它是你的并且你没有源代码,那么你就会遇到一些更大的问题。
  • 我听说一个名为 SQL CLR 的东西可能是一个解决方案,有人知道吗?

标签: sql sql-server-2005 stored-procedures dll 64-bit


【解决方案1】:

64 位 SQL Server 只能调用 64 位 DLL,但有一些调整。我没试过。

我认为this post 可能会对您有所帮助。

this

【讨论】:

  • 第一篇文章中的#6 似乎是一个很好的解决方法:找到一个 32 位服务器,在那里安装 DLL 并通过链接服务器从 64 位服务器调用它。
  • SQL CLR 怎么样,我在某处读到它可能是一个解决方案,但不知道有什么想法?
  • 老实说,我没试过。 Here is an MSDN example.
  • 创建一个 vbscript/powershell 脚本来调用 COM 组件并从存储过程中调用该脚本。还有这个?
【解决方案2】:

我遇到了同样的问题,这是我为解决这个问题所做的。

您不能使用 SQLCLR 函数在 SQL 64 位中加载 32 位 dll,它不会工作。您仍然可以按照以下方法使用 SQLCLR。

创建 64 位 DLL,可以将传递的参数从 SQL 写入 txt 文件。

使用filesystemwatcher创建32位Windows服务,在_changed事件中获取txt文件,读取内容并调用32位dll中的方法。

希望这能解决你的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-01
    • 2011-09-02
    • 2012-11-07
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    相关资源
    最近更新 更多