數據庫的遷移

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

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

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

完整的架構遷移操做,分爲抽取(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嚮導wordpress

選擇遷移數據庫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...」,將拆分文件存放到指定的目標文件夾。spa

一個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的三種工具

相關文章
相關標籤/搜索