Sql server SQL Server中的Alter assembly

Sql server SQL Server中的Alter assembly,sql-server,deployment,Sql Server,Deployment,我们的数据库中有一些用C编写的表值函数。我在VisualStudio中有数据库项目,在那里我使用解决方案资源管理器中的部署操作。然而,当我想在开发中的数据库服务器上测试数据库服务器时,我现在必须手动使用半脚本删除函数和程序集,然后创建程序集和创建函数 在99%的情况下,我们不会更改接口函数名、列名、列类型等 是否有一些简单的方法来改变组件和相关的功能/程序? 谢谢简短的回答似乎是没有别的办法了 删除并重新创建程序集和链接函数是数据库引擎验证接口是否有效和有效引用的唯一方法 编辑 有关程序集和引用

我们的数据库中有一些用C编写的表值函数。我在VisualStudio中有数据库项目,在那里我使用解决方案资源管理器中的部署操作。然而,当我想在开发中的数据库服务器上测试数据库服务器时,我现在必须手动使用半脚本删除函数和程序集,然后创建程序集和创建函数

在99%的情况下,我们不会更改接口函数名、列名、列类型等

是否有一些简单的方法来改变组件和相关的功能/程序?
谢谢

简短的回答似乎是没有别的办法了

删除并重新创建程序集和链接函数是数据库引擎验证接口是否有效和有效引用的唯一方法

编辑

有关程序集和引用函数之间关系的元数据存储在sys.assembly_modules表中:

从该元数据生成拖放脚本非常容易:

DECLARE @assembly_name sysname
SET @assembly_name = '<your assembly name>'


SELECT 'drop function ' + OBJECT_NAME(OBJECT_ID)
FROM sys.assemblies AS a
JOIN sys.assembly_modules AS am
ON   am.assembly_id = a.assembly_id
WHERE a.name = @assembly_name

SELECT 'drop assembly ' + @assembly_name

生成创建脚本要困难得多,因为无法知道接口是否已更改,也无法知道要上载的程序集dll的位置。

我对重新创建没有问题,除非必须手动重新创建。我在寻找某种方式,比如ALTER ASSEMLBY……诸如此类。。。自动删除和重新创建依赖对象的脚本。@TcKs-我不确定你的意思-你正在寻找一个脚本来删除和创建程序集吗?我不确定应该搜索什么。不过,该脚本将查找依赖于程序集的所有对象、删除它们、删除程序集、创建新程序集和创建依赖对象,这将非常棒,足以满足我的需要。@TcKs-我在元数据中做了一些探索;生成drop语句很容易,请参见编辑。生成create语句需要更多的工作,尤其是因为程序集dll的文件系统位置未知。
DECLARE @assembly_name sysname
SET @assembly_name = '<your assembly name>'


SELECT 'drop function ' + OBJECT_NAME(OBJECT_ID)
FROM sys.assemblies AS a
JOIN sys.assembly_modules AS am
ON   am.assembly_id = a.assembly_id
WHERE a.name = @assembly_name

SELECT 'drop assembly ' + @assembly_name