2011-04-04 40 views
3

我们拥有用C#编写的一些表值函数的数据库。我有Visual Studio中的数据库项目,我使用解决方案资源管理器中的“部署”操作。但是,当我想从开发数据库服务器测试数据库服务器时“改变”程序集和函数时,我必须手动(现在是半脚本化)拖放函数和程序集,然后创建程序集并创建函数。修改SQL Server中的程序集

在99%的情况下,我们不改变接口(函数名称,列名称,列类型等)。

如何改变程序集和相关函数/程序有一些简单的方法吗? 谢谢

回答

3

简短的答案似乎是没有其他办法。

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

编辑

有关的元数据集和引用功能之间的关系存储在sys.assembly_modules表:

SELECT *, OBJECT_NAME(OBJECT_ID) FROM 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要上传的位置。

+0

我没有问题重新创建,除非重新创建我必须手动。我搜索了一些方法,比如“ALTER ASSEMLBY ... blah_blah_blah ...”,它自动删除并重新创建依赖对象。 – TcKs 2011-04-04 14:39:32

+0

@TcKs - 我不确定你的意思 - 你正在寻找一个脚本来删除和创建程序集? – 2011-04-04 14:40:55

+0

我不确定我应该搜索什么。然而,根据程序集查找所有对象的脚本放弃它们,删除程序集,创建新的程序集并创建依赖对象对于我的目的来说真的很棒,而且足够了。 – TcKs 2011-04-04 14:49:14