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

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

 

數據庫的升級總是比應用程序的升級要困難。應用程序升級不外乎就是完整的覆蓋文件。而數據庫的升級不能簡單的做文件整體覆蓋,而必須考慮用戶數據的存在,保證用戶數據是完整性和可用性。

 

以往我們升級數據庫的方法可以簡稱爲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。較有看法的文章。

 

 

 

發佈了4 篇原創文章 · 獲贊 0 · 訪問量 2309
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章