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. 非常翔實,具體而容易操作。有PPT,Video,動手試驗三方面的內容構成。
2. SQL Server 2008 R2資料管理新紀元@it168。初步的,新特性級別的描述,容易閱讀。
3. 主資料管理和實施 @developerworks。原來我們的基本資訊諸如商品,科目,倉庫等是有一個統一的名字,叫做主資料!
4. Is SQL Server 2008 R2 For You? 從2000,2005,2008的不同的使用者角度分析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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 怎樣從SQL Server2008升級到SQL Server 2008 r2SQLServer
- SQL Server 2008 R2新特性:主資料管理SQLServer
- SQL Server 2008資料庫級別的角色SQLServer資料庫
- SQL Server2008 R2 資料庫映象配置方案SQLServer資料庫
- SQL Server2008 R2新特性解析SQLServer
- SQL Server 2008升級顧問SQLServer
- sql點滴38—SQL Server 2008和SQL Server 2008 R2匯出資料的選項略有不同SQLServer
- SQL SERVER 2008 指定允許的對錶的鎖進行升級的方法SQLServer
- asp連線sql server 2008資料庫SQLServer資料庫
- SQL Server 2008 完整資料庫備份SQLServer資料庫
- SQL Server 2008資料庫引擎優化SQLServer資料庫優化
- SQL SERVER 2008 MASTER資料庫損壞SQLServerAST資料庫
- 移動sql server 2008 master 資料庫SQLServerAST資料庫
- 重建 SQL Server 2008 系統資料庫SQLServer資料庫
- 谷歌升級雲端資料庫Cloud SQL谷歌資料庫CloudSQL
- SQL Server 2008 R2並行資料倉儲簡介SZSQLServer並行
- rac 升級crs 升級資料庫軟體,升級資料庫資料庫
- SQL Server 2008匯入、匯出資料庫SQLServer資料庫
- SQL Server 2008還原資料庫備份SQLServer資料庫
- SQL Server 2008 建立完整資料庫備份SQLServer資料庫
- 如何將SQL Server 2000備份的資料庫檔案還原(升級)為SQL Server 2005或更高版本的資料庫?SQLServer資料庫
- 淺析SQL Server 2008企業級新特性SQLServer
- Q&A:SQL Server 2008的升級與部署知識SOSQLServer
- SQL Server 2008資料庫新增資料檔案後Standby庫的恢復SQLServer資料庫
- 13 使用SQL Apply 升級資料庫SQLAPP資料庫
- MS SQL Server 資料庫備份方法SQLServer資料庫
- SQL Server置疑資料庫解決方法SQLServer資料庫
- SQL Server 2008企業版中的資料庫加密SQLServer資料庫加密
- SQL Server 2008系統資料庫的恢復模式SQLServer資料庫模式
- SQL Server 2008固定資料庫角色的許可權SQLServer資料庫
- SQL Server資料庫級別觸發器SQLServer資料庫觸發器
- 本人新書《SQL Server 2008資料庫技術內幕》前言--已出版新書SQLServer資料庫
- SQL Server 2008連線區域網內的SQL Server 2000資料庫SQLServer資料庫
- SQL Server 2008中Analysis Services的新特性——深入SQL Server 2008SQLServer
- SQL Server資料庫的簡單實現方法SQLServer資料庫
- ASP建立SQL Server資料庫的兩種方法SQLServer資料庫
- Microsoft® SQL Server® 2008 R2 Best Practices AnalyzerROSSQLServer
- SQL Server 2008選擇資料庫恢復模式SQLServer資料庫模式