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 R2 資料庫映象配置方案SQLServer資料庫
- SQL Server 2008 R2並行資料倉儲簡介SZSQLServer並行
- SQL Server 2008中Analysis Services的新特性——深入SQL Server 2008SQLServer
- SQL Server 2008 R2雙機熱備方案SQLServer
- Q&A:SQL Server 2008的升級與部署知識SOSQLServer
- SQL Server 2000/2005/2008刪除或壓縮資料庫日誌的方法SQLServer資料庫
- 區分SQL Server 2008 R2資料中心和並行資料倉儲版本WBSQLServer並行
- 如何將SQL Server 2000備份的資料庫檔案還原(升級)為SQL Server 2005或更高版本的資料庫?SQLServer資料庫
- 在 .net core 3.1 的 docker 映象生成的容器中,連線 sql server 2008 r2 版本的資料庫,遇到錯誤DockerSQLServer資料庫
- win10怎麼安裝sql server2008 r2_win10如何安裝sql server2008 r2Win10SQLServer
- 13 使用SQL Apply 升級資料庫SQLAPP資料庫
- Windows Server 2008 R2 下載地址WindowsServer
- SQL Server 2008資料複製新特性及其帶來的價值(下)XDSQLServer
- SQL Server2008程式堵塞處理方法SQLServer
- SQL SERVER 2012資料庫自動備份的方法SQLServer資料庫
- SQL SERVER 2008安全配置SQLServer
- windows server2008安裝mysql資料庫WindowsServerMySql資料庫
- 資料庫映象 (SQL Server)資料庫SQLServer
- SQL Server資料庫安全SQLServer資料庫
- Windows server 2008 R2伺服器遠端桌面3389埠的修改方法WindowsServer伺服器
- Windows Server 2008 R2搭建WDS服務(PXE)WindowsServer
- Sql Server資料庫檔案丟失的恢復方法SQLServer資料庫
- SQL server資料庫高可用日誌傳送的方法SQLServer資料庫
- 伺服器Windows Server 2008 R2的安全設定伺服器WindowsServer
- AD域環境的搭建 基於Server 2008 R2Server
- sql server 資料庫收縮SQLServer資料庫
- Blazor使用sql server 資料庫BlazorSQLServer資料庫
- SQL Server資料庫巡檢SQLServer資料庫
- sql server 2005資料庫快照SQLServer資料庫
- SQL Server收縮資料庫SQLServer資料庫
- 管理SQL Server資料庫安全SQLServer資料庫
- SQL Server資料庫遷移SQLServer資料庫
- SQL Server資料庫建立新使用者及關聯資料庫的方法教程SQLServer資料庫
- SQL Server資料庫恢復,SQL Server資料恢復,SQL Server資料誤刪除恢復工具SQLRescueSQLServer資料庫資料恢復
- 解決無法連線SQL Server資料庫的方法BWSQLServer資料庫
- Android 中的升級資料庫最佳方法實踐Android資料庫
- Windows 10 下安裝Sql Server 2008 R2 連線到伺服器失敗WindowsSQLServer伺服器
- SQL Server 2017 AlwaysOn輔助副本資料庫的隔離級別SQLServer資料庫
- Oracle資料庫升級或資料遷移的方法探討Oracle資料庫