sql server 2008 R2 Data-tier Application 提供新的資料庫升級方法

kitesky發表於2010-08-11
資料庫的升級總是比應用程式的升級要困難。應用程式升級不外乎就是完整的覆蓋檔案。而資料庫的升級不能簡單的做檔案整體覆蓋,而必須考慮使用者資料的存在,保證使用者資料是完整性和可用性。[@more@]

資料庫的升級總是比應用程式的升級要困難。應用程式升級不外乎就是完整的覆蓋檔案。而資料庫的升級不能簡單的做檔案整體覆蓋,而必須考慮使用者資料的存在,保證使用者資料是完整性和可用性。

以往我們升級資料庫的方法可以簡稱為Create then Alter 。這個方法常常有兩個檔案構成,一個為Create.sql,一個是Alter.sql .Create.sql 建立1.0的資料庫(包括模式和資料),Alter.sql 可以在任何版本的使用者資料庫上執行,然後把這個資料庫升級到最新版本。整個alter.sql內,必須詳細的說明從1.0以來到最新版本的全部變化——需要小心編寫這個檔案——做很多的檢查來適應不同版本的資料庫,並且不能破壞任何使用者資料。

比如說我們做了一個應用,1.0 版本中有一個表

CREATE TABLE [dbo].[Person]

(

id int NOT NULL,

name int NOT NULL

)

在版本2.0的時候,需要為Person表新增一個新的欄位,email

那麼我們必須在Alter.sql內新增一個過程語句。表明從1.0的資料庫模式 如何變成2.0的模式:

Alter table Person Add Column email varchar(50) null;

就是說,開發者必須自己用過程的方法,告訴sql server,資料庫模式如何一步步的從1.0 2.0 的。

這樣的變化非常的多,多年的經驗說明,資料庫版本的升級可以新增表,刪除表,填寫資料,修改欄位名稱,欄位型別,約束等等。其間的繁瑣冗長,可以想得到。

sql server 2008 R2 DAC提供了新的升級方法。

DAC的定義:A Data-tier Application (DAC) is an entity that contains all of the database and instance objects that are required to support an application, like stored procedures, tables, views, logins, etc.DAC 是一個實體,內含全部資料庫和例項的物件,比如儲存過程,表,檢視,登入帳號等等)

這個定義很準確,但是不容易看出應用的範圍。我的個人看法可以簡而言之:DAC 提供了資料庫的宣告型的升級,而不是過程型升級。

同樣以Person為例。DAC的做法,就是直接說明新的模式如下:

CREATE TABLE [dbo].[Person]

(

id int NOT NULL,

name int NOT NULL

email varchar(50) null

)

然後 ,由DAC 自動比較新老模式的差異,自動升級模式和遷移。假設要升級的資料庫為 People ,那麼具體過程如下:

_ 以新的模式定義檔案,建立一個新的資料庫,比如 people_new

_ 複製 People 的資料到 people_new

_ 老資料庫 People 改名(新名稱和現有資料庫不能重複)

_ people_new 改名為people

這樣整個升級完成。

宣告型升級相比過程型升級的好處就是開發者只要說明新版本的模式是怎樣的就行了,而不必擔心如何做,以及怎樣遷移資料。

DAC相當的程度上做到了宣告型升級。使用 Data-Tier Application,開發者只需要為新的版本編譯出新的dacpac包檔案,DBA 定位到現存的DAC然後選擇升級功能,升級嚮導會比對新老版本差異,然後自動確定需要升級的操作。

DAC模式是有限定的。以欄位的調整為例,修改欄位的型別、約束,新增欄位,刪除欄位都可以自動的完成資料的遷移。

修改欄位名稱這樣的資料庫模式升級是無法自動遷移資料的。而必須自己編寫指令碼來完成—— 因為和刪除一個欄位然後在新增一個欄位無法區別。

Visual Studio 2010 可以提供 DAC應用 開發的支援。開發工程的模板為 Data-tier Application

本文強調了兩種資料庫升級方法的思想差異和DAC模式的限定。具體操作方面的內容和我的文章參考的內容,可以從以下資源獲得(沒有指明URL,因為你可以自己搜尋):

1. SQL Server 2008 R2 Update for Developers Training Kit@microsoft. 非常翔實,具體而容易操作。有PPTVideo,動手試驗三方面的內容構成。

2. SQL Server 2008 R2資料管理新紀元@it168。初步的,新特性級別的描述,容易閱讀。

3. 主資料管理和實施 @developerworks。原來我們的基本資訊諸如商品,科目,倉庫等是有一個統一的名字,叫做主資料!

4. Is SQL Server 2008 R2 For You? 200020052008的不同的使用者角度分析R2帶來的新特性。

5.Master Data Management and Customer Data Integration Data Warehousing Folks Don’t Get It。沒有仔細看。

6. Why SQL Server 2008 R2 Matters to Small Business。沒有仔細看。

7. Why Upgrading to SQL Server 2008 R2 Is Not a Given。沒有仔細看。

8. SQL Server 2008 R2 August CTP Available Today。新特性,概覽以下就行。

9.Frequently Asked Questions: SQL Server 2008 R2。新特性,概覽以下就行。

10. SQL Server 2008 R2: The DAC Pack。較有看法的文章。

11.SQL Server 2008 R2: Into the Clouds。較有看法的文章。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/66009/viewspace-1036634/,如需轉載,請註明出處,否則將追究法律責任。

相關文章