要更新现有数据库,我们包含安装程序运行的更新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的知识非常有限,到目前为止,我对搜索解决方案的搜索已经证明没有结果。
有没有办法让表更新,无论它们是否存在,都不必丢弃架构并重新开始?
非常感谢
答案 0 :(得分: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/的示例,但还有其他人!)
然后,此工具将生成一个更新脚本,您可以在旧数据库上运行该脚本以使其与最新数据库同步。