【发布时间】:2020-09-07 11:30:21
【问题描述】:
我正在尝试使用以下命令更改 SQL Server 2016 中的程序集:
alter assembly mylib from 'F:\Microsoft SQL Server (x86)\mylib.dll'
但我收到此错误:
从 'mylib 更改程序集,版本 = 17.0.0.20501,文化 = 中性, publickeytoken=11140e03aaa52226,处理器架构=msil' 'mylib,版本=0.0.0.0,文化=中性,publickeytoken=null, processorarchitecture=msil' 不是兼容升级。
mylib.dll 编译时将 AssemblyVersion、AssemblyFileVersion 和 AssemblyInformationalVersion 都设置为“19.17.0.0”。是不是因为 SQL Server 认为 dll 是 0.0.0.0 版本?
作为测试,如果我执行这些命令:
alter assembly mylib1 from 'F:\Microsoft SQL Server (x86)\mylib.dll'
select clr_name from sys.assemblies where name='mylib1'
clr_name 的值为:
idclib1,版本=0.0.0.0,文化=中性,publickeytoken=null, 处理器架构=msil
所以我想我需要以某种方式指定版本,但我不知道该怎么做。
如果程序集未签名,则此链接指示版本显示为 0.0.0.0:https://feedback.azure.com/forums/908035-sql-server/suggestions/32900083--version-incorrectly-showing-as-0-0-0-0-in-sys-as。我将尝试签署程序集,看看是否能解决问题。
请帮忙!
【问题讨论】:
-
您还有其他引用 mylib 的程序集吗?他们可能在项目的程序集引用中设置了
SpecificVersion: true。 -
@AlwaysLearning 我希望我知道如何使用 T-SQL 进行检查。
-
您必须审核来自
select * from sys.assemblies的已注册程序集列表,并检查项目文件中是否有任何属于您的。在干净的服务器 [数据库] 上,我只希望看到来自 Microsoft 的Microsoft.SqlServer.Types。
标签: sql-server clr sql-server-2016