gpt4 book ai didi

sql-server - 无法在 SQL Server 2012 中注册 stdole 程序集

转载 作者:行者123 更新时间:2023-12-04 02:55:46 31 4
gpt4 key购买 nike

我正在将 SQL Server 2008 迁移到 2012,并在为 CLR 例程创建一些必要的程序集时遇到了挑战。该例程依赖于 stdole.dll,但我无法创建此程序集。我的代码如下:

ALTER DATABASE main SET TRUSTWORTHY ON;

create assembly [stdole]
from
'C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\stdole.dll'
WITH PERMISSION_SET = unsafe

我收到以下错误:

Warning: The Microsoft .NET Framework assembly 'stdole, version=7.0.3300.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a.' you are registering is not fully tested in the SQL Server hosted environment and is not supported. In the future, if you upgrade or service this assembly or the .NET Framework, your CLR integration routine may stop working. Please refer SQL Server Books Online for more details.
Msg 10332, Level 16, State 1, Line 3
Assembly "stdole" was built using version v1.0.3705 of the .NET Framework. SQL Server currently uses version v4.0.30319.

我当前使用具有系统管理员权限的帐户登录,因此我拥有 UNSAFE ASSEMBLY 权限。

请帮忙!我已经研究了几个小时,但找不到任何有效的东西。

谢谢

最佳答案

关键信息位于错误中指出的两个不同的 .Net 版本中:

Assembly "stdole" was built using version v1.0.3705 of the .NET Framework. SQL Server currently uses version v4.0.30319

Microsoft SQL Server 不允许混合模式 CLR。意思是,它静态链接到特定系列。 SQL Server 2005、2008 和 2008 R2 链接到 2.0 系列(2.0、3.0 和 3.5),SQL Server 2012 和 2014 链接到 4.0 系列(4.0 和 4.5)。更多详情可查看here .

因此,不可能加载该版本的 stdole.dll从 SQL Server 2012 开始。不幸的是,该文件夹中没有其他 DLL 链接到 4.0 系列框架。

编辑:
请尝试以下操作,因为它会生成具有相同 publickeytoken 的 DLL。 (即 b03f5f7f11d50a3a)并在 SQL Server 2012 中成功加载。其想法是提取基本代码(通过 ILDASM ),然后将其重新链接到较新的框架(通过 ILASM )。我不确定您的代码是否需要重新编译。

  1. 打开“Visual Studio 命令提示符”/“开发人员命令提示符”(不是常规的“命令提示符”)。

  2. 运行以下语句:
    MKDIR C:\TEMP\stdole<br/>
    CD C:\TEMP\stdole<br/>
    XCOPY /V "C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\stdole.dll" .<br/>
    ILDASM stdole.dll /out:stdole.il<br/>
    ILASM /DLL /OPTIMIZE /OUTPUT=stdole-4.0.dll /RESOURCE=stdole.res stdole.il

  3. 在 SSMS 中运行以下命令:
    USE [main];<br/>
    CREATE ASSEMBLY [stdole] FROM 'C:\TEMP\stdole\stdole-4.0.dll' WITH PERMISSION_SET = UNSAFE;

注释:

关于sql-server - 无法在 SQL Server 2012 中注册 stdole 程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24811961/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com