sql-server - 如何在 MS-SQL 中更新程序集及其依赖程序集?

标签 sql-server sqlclr

情况是这样的:

我有一个 Trigger.dll 和一个 Trigger.XmlSerializer.dll。

我使用 CREATE ASSEMBLY 在 MSSQL 中注册它们。

现在,我已经编译了两者的新版本。

我想使用 ALTER ASSEMBLY 来更新它们,但是一次只能更新一个。如果您尝试更新具有依赖项的版本,它会提示。这样做有什么技巧吗?

我不想删除并重新创建,因为我必须删除所有触发器等,并且数据库会停机。

最佳答案

根据microsoft support你可以通过技巧来使用它。

注释

  • 这些步骤在“如何升级或降级程序集”部分中描述的场景中升级或降级程序集 A。
  • 此示例假设两个程序集的版本均为 1.0.0.0,并且程序集均使用 C# 编写。当您按照这些步骤操作时,您将尝试将程序集 A 和程序集 B 升级到版本 2.0.0.0。

要升级或降级程序集 A,请按照以下步骤操作。

  1. 将程序集 B 的版本 1.0.0.0 备份到文件夹。
  2. 修改程序集 B,然后将其重新编译为版本 2.0.0.0。
  3. 使用 ALTER ASSEMBLY 语句升级 SQL Server 2005 中的程序集 B。
  4. 修改程序集 A,然后将其重新编译为版本 2.0.0.0。执行此操作时,请从步骤 1 中所做的备份中引用程序集 B 的版本 1.0.0.0。为此,请结合使用 Csc.exe 编译器工具和/reference 开关。例如,使用以下命令: csc/target:library/out:AssemblyA.dll AssemblyA.cs AssemblyInfo.cs/reference:"BackupFolder\AssemblyB.dll" 注意:要验证程序集 A 元数据中程序集 B 的版本,请使用 Ildasm.exe 实用程序打开程序集 A。然后,验证 MANIFEST 部分下引用的程序集的元数据信息。
  5. 使用 ALTER ASSEMBLY 语句升级 SQL Server 2005 中的程序集 A。

关于sql-server - 如何在 MS-SQL 中更新程序集及其依赖程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/514485/

相关文章:

mysql - "stored procedures are pre-compiled"是什么意思?

c# - 如何防止 SQL 数据库中的相似(重复)条目?

SQL语句打印表名及其列名

c# - INSERT 和 UPDATE 的执行状态 - MS SQL Server

.net - 找不到非对称 key ——因为它不存在或您没有权限

sqlclr - Sql CLR 函数行作为输入

c# - SQL Server 中的 CLR 存储过程的性能

c# - 如何使 SqlContext.Pipe.Send(string str) 立即刷新到 SSMS?

sql-server - tSQLt-如何检查表值是否已更改某些值

sql-server - CLR 表如何对函数 'streaming' 进行赋值?