2011-09-19 70 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/,但還有其他一些示例!)

此工具將生成一個更新腳本,您可以在舊數據庫上運行該腳本以使其與最新數據庫同步。

相關問題