2011-09-19 85 views
1

要更新现有数据库,我们包含安装程序运行的更新sql文件。它看起来是否存在一个表,如果不存在,那么它会创建它和字段。这是一些nHibernate功能自动生成的文件。如何在不丢失表格的情况下更新数据库模式

IF NOT EXISTS (select * from dbo.sysobjects where id = object_id(N'[dbo].[TableA]') 
and OBJECTPROPERTY(id, N'IsUserTable') = 1) 
BEGIN 
create table 

这工作得很好创建一个新的数据库,但是当表的内容正在改变,这意味着测试部门不得不放弃他们的数据库,并从头开始开发过程中。这对他们来说非常耗时,因为他们必须再次使用新数据填充表格。我对sql的知识非常有限,迄今为止我对解决方案的搜索都没有成功。

有没有办法让表更新,无论它们是否存在,而不必删除架构并重新启动?

非常感谢

回答

1

你在找什么是ALTER TABLE,ADD语句。

http://msdn.microsoft.com/en-us/library/ms190273.aspx

ALTER TABLE Comments ADD newColumn INT 

作为一个例子。

那么问题就变成了如何为整个数据库做这件事情? 您需要的是有一个SQL Delta工具。 (以下是一个示例,其中有一个http://www.sqldelta.com/,但还有其他一些示例!)

此工具将生成一个更新脚本,您可以在旧数据库上运行该脚本以使其与最新数据库同步。

相关问题