數據庫的遷移


數據層應用程序(Data-tier AppliCation,簡稱DAC)是一個數據庫邏輯架構的管理工具,DAC定義了用於管理單個SQL Server數據庫對象(包括table,view,以及實例級別對象login等)的元數據。使用DAC,用戶能夠很方便地將數據庫打包成一個DAC package文件,后綴名是DACPAC,只需要簡單的操作,就能將數據庫部署在其他服務器上,類似於數據庫的完整備份,只不過dacpac文件不包含數據,只包括數據庫對象的元數據,用戶使用這些元數據能夠創建一個空的,一模一樣的數據庫。使用DAC,用戶也能夠將數據庫對象的架構和數據打包成一個backup package文件,后綴名是bacpac。使用該文件,用戶能夠在另外一個SQL Server實例中創建新的數據庫,新的數據庫含有原始數據庫的所有數據和架構(Schema)信息。

通過DAC實現數據庫的架構遷移,DACPAC文件主要用於部署數據庫的架構(Schema),創建產品數據庫的測試環境,對新業務需求進行代碼邏輯測試;而BACPAC文件在邏輯上等價於數據庫的完整備份,主要用於數據庫架構和數據的整體遷移,BACPAC文件支持EXPORT操作,用於備份數據庫,IMPORT操作用於在目標服務器上創建新的數據庫,類似數據庫的還原操作。

一,使用DAC實現數據庫的架構遷移

完整的架構遷移操作,分為抽取(Extract)、注冊(Register),部署(Deploy)和升級(Upgrade):

  • 抽取(Extract)DAC是根據現存的數據庫創建DAC package文件,抽取數據庫對象的定義和相關的實例級別的元素,比如Login,以及Login 和User之間的關系。
  • 注冊(Register)DAC是根據DACpackage中包含的數據庫對象的元數據,在目標SQL Server實例中注冊數據庫對象。
  • 部署(Deploy)DAC是在目標SQL Server 實例級別上,使用DAC package包含的數據庫元數據創建新的DB
  • 升級(Upgrade) DAC是指對現存的數據庫元數據進行升級,是DAC作為輕量型的數據庫架構遷移工具的特征;

二,遷移數據庫架構示例

1,抽取DAC,打開Extract DAC向導

選擇遷移數據庫DAC_Study的架構,右擊DAC_Study,打開菜單,一次點擊“Tasks”->“Extract Data-tier Application...”,打開Extract DAC向導

從開始界面(Introduction)可以看出,抽取(Extract)DAC主要分為三步:設置DAC屬性,驗證和創建Package,需要用戶配置的是設置DAC的屬性,在抽取DAC package時,必須填寫一個唯一的應用程序名(Application name),該屬性用於標識DAC。

2,拆包(unpack)DAC

unpack DAC 就是拆包,用於打開dacpac文件,查看文件的內容。選中一個dacpac文件,右擊彈出“Unpack...”,將拆分文件存放到指定的目標文件夾。

一個DACPAC文件,供拆解成四個文件,三個XML文件,一個TSQL腳本文件,包含用於創建數據庫對象的代碼,如圖:

3,注冊(Register)DAC

在目標SQL Server實例上創建一個空的數據庫,新的數據庫不一定和原來的數據庫同名,將新數據庫命名為DAC_Test,右擊該數據庫,一次點擊“Tasks”->“Register as Data-tier Application...”,彈出注冊(Register)DAC向導

注冊DAC的過程,主要分為三步:設置屬性,驗證和注冊DAC,需要用戶配置的是“設置屬性”,用戶必須填寫正確的Application Name,該屬性必須和DACPAC文件中的Application Name 相同。

4,部署(Deploy)DAC

在一個SQL Server 實例上部署(Deploy)DAC,實際上,是使用DACPAC文件創建新的數據庫,實現數據庫架構的遷移,和注冊DAC不同的時,部署DAC不需要手動創建空的數據庫。

在部署DAC時,右擊DataBases,彈出快捷菜單,點擊 “Deploy Data-tier Application...”,彈出部署DAC向導,

部署DAC的過程主要分為四部:選擇DACPAC文件,配置部署,Review和部署。根據向導,選擇需要部署的dacpack文件,配置新建的數據庫名稱,在name 屬性中輸入新的數據庫名稱,可以和原有的數據庫名稱不同,查看之后,點擊Next,進行部署。部署完成之后,在當前的SQL Server實例中成功創建一個空的數據庫。

4,升級(Upgrade)DAC

升級(Upgrade)DAC 是對現存數據庫的架構(Schema)進行更新和升級,前提是必須有存在數據庫,和注冊(Register)DAC類似。

選擇升級的數據庫,右擊彈出快捷菜單,依次點擊“Tasks”->“Upgrade Data-tier Application...”,打開升級(Upgrader)DAC向導

升級DAC的過程十分簡單,只需要選擇包含最新元數據的dacpac文件,根據向導的提示,直接點擊Next就能完成對現存數據庫的升級。

三,從 Backup Package(.bacpac)創建新的數據庫

使用bacpac文件,能夠創建一個新的數據庫,包含架構(schema)和數據(data),功能類似數據庫的還原,都能創建一個新的、包含數據和架構的數據庫。

方法一,使用SSMS向導

右擊Databases,打開“Import Data-tier Application”,打開Wizard,按照UI提示配置即可

方法二,使用SqlPackage.exe 實現自動導入DAC

命令的調用示例,為了便於查看,我將命令格式化,在DOS命令行工具中,請不要換行。

“C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\sqlpackage.exe” 
/a:Import 
/sf:C:\DataExtraction\Tailspintoys.bacpac 
/tsn:cgrd7z8kac.database.windows.net 
/tdn:Tailspintoys 
/tu:mysysadmin@cgrd7z8kac 
/tp:Pa55w0rd

參數解釋:

  • sf   – 指定bacpac文件
  • tsn – 指定SQL Server實例名,用於存儲新的目標數據庫
  • tdn – 指定目標數據庫的名稱
  • tu   – 指定用於訪問SQL Server實例的登錄名
  • tp   – 指定用於訪問SQL Server實例的登錄名對應的密碼

如果使用Windows 驗證方式登陸,可以使用ttsc差數代替 tu 和 tp。

C:\Program Files (x86)\Microsoft SQL Server\130\DAC\bin\SqlPackage.exe 
-a:Import -sf:C:\TestDAC\dac_name.bacpac -tsn:server_name -tdn:db_name -ttsc:true

參數:ttsc:{True | False} 指定是否使用Secure Socket Layer (SSL) 加密,以Windows驗證方式登錄目標SQL Server實例。

 

將數據庫遷移到SQL Azure的三種工具


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM