數據層應用程序(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):服務器
二,遷移數據庫架構示例架構
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
參數解釋:
若是使用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實例。