日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL SERVER data tier application 的作用及如何使用SSDT进行SQL数据库的自动化部署到生产环境和版本控制

發(fā)布時間:2023/12/10 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL SERVER data tier application 的作用及如何使用SSDT进行SQL数据库的自动化部署到生产环境和版本控制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這個是管理員用來發(fā)布數(shù)據(jù)庫所有的腳本用的,自SQL2008以后,微軟開始將數(shù)據(jù)庫的開發(fā)整合到VS2010上,用戶可以將數(shù)據(jù)所有的相關(guān)對象打包成一個DAC包,讓管理通過extract data-tier application發(fā)布到服務(wù)器上。就好像你把代碼變成dll去發(fā)布一樣,而不用管里面寫的內(nèi)容。register as data-tier appliccation 反之亦然。
?

簡介

在開發(fā)過程,我們常常會遇到數(shù)據(jù)庫環(huán)境部署的問題,當(dāng)部署正式環(huán)境中,數(shù)據(jù)庫產(chǎn)生的多文件腳本在管理上就容易出現(xiàn)混亂,特別是你還沒有權(quán)限訪問正式環(huán)境的情況,就更為困難。SSDT為我們提供了很好的解決方案。

SSDT: Sql Server Data Tool,數(shù)據(jù)庫工具,這里主要針對其作用于數(shù)據(jù)庫版本控制的功能。

在VS中,SSDT主要添加了兩項功能:SQL Server Database Project和DACPAC(Data-Tier Application Package)

簡單介紹下DACPAC,DACPAC文件包含整個數(shù)據(jù)庫的信息和SQL相關(guān)的查詢數(shù)據(jù)。當(dāng)部署新版本數(shù)據(jù)庫到一個文件中時,DACPAC類似于備份功能,會將數(shù)據(jù)部署到每一張表中。

SQL Server DataBase Project

顧名思義,SSDP就是一個SQL數(shù)據(jù)庫的項目。添加一個數(shù)據(jù)庫項目,可以導(dǎo)入相關(guān)的數(shù)據(jù)庫信息,如存儲過程、試圖等等。還可以擁有DACPAC文件,用于備份和版本控制功能。

如何添加?

1、在項目中添加SQL Server Database Project

2、將數(shù)據(jù)庫導(dǎo)入到項目中

3、創(chuàng)建Data文件夾以及部署后執(zhí)行的“PostDeployment”Sql腳本。創(chuàng)建后,SSDT還提供一系列的功能便于對比,如語法、數(shù)據(jù)對比等。

數(shù)據(jù)庫的發(fā)布

SSDT提供多種發(fā)布部署的方法

  • 如果你有權(quán)限可以通過VS直接連接SQL的,那么通過右鍵項目的“Publish”選項,即可以完成部署功能
  • 如果你沒有權(quán)限訪問數(shù)據(jù)庫,比如正式產(chǎn)品環(huán)境的數(shù)據(jù)庫。這時候你就需要使用DACPAC進行部署
  •     首先先介紹下如果生成DACPAC文件,在數(shù)據(jù)庫項目中,右鍵“Snapshot Project”,將會生成當(dāng)前數(shù)據(jù)庫的版本,存在于文件夾Snapshots下,如下圖

        

        其次關(guān)于部署DACPAC方式也包含兩種:

        a. 通過Sql Server 2012的Tasks里的Upgrade DACPAC功能實現(xiàn)

    ?

        

        b. 通過運行Code方式實現(xiàn)

        如果在MVC項目下,你可以將code寫于Global.asax的Application_Start方法下,這里舉例用新建Console Application的方式執(zhí)行。

        

        在Proram下,我們添加入下代碼

        1. 針對單個DACPAC文件部署到正式環(huán)境。

    ?

    class Program{static void Main(string[] args){try{//1. 單個DACPAC文件的部署const string ConnectionStringName = "Data Source=.;initial catalog=Template;Integrated Security=True;";//可以寫到app.config中var dacPackage = DacPackage.Load(ConnectionStringName);var dacServices = new DacServices(ConnectionStringName);var targetDatabaseName = (new SqlConnectionStringBuilder(ConnectionStringName)).InitialCatalog;dacServices.Deploy(dacPackage, targetDatabaseName, true);}catch (Exception ex){Console.WriteLine(ex.ToString());}Console.WriteLine("<Press any key to exit.>");Console.ReadKey();} }

    ?

        2. 針對Snapshots下多個DACPAC文件一鍵部署,則需要對比數(shù)據(jù)庫快照的版本號,部署最新版本

    ?

    //2. Snapshots文件夾下多個DACPAC文件的部署,通過遍歷需要判斷版本號部署const string SnapshotFolder = "Snapshots";foreach (var dacpacFileName in Directory.GetFiles(SnapshotFolder, "*.dacpac").OrderBy(name => name)){var databaseVersion = GetCurrentDacVersionFromDatabase(ConnectionStringName);if (dacPackage.Version <= databaseVersion){continue;}var dacDeployOptions = new DacDeployOptions { RegisterDataTierApplication = true };dacServices.Deploy(dacPackage, targetDatabaseName, true, dacDeployOptions);}

    ?

        需要一個方法來判斷當(dāng)前的版本號

    ?

    private static Version GetCurrentDacVersionFromDatabase(string connectionString){var returnValue = new Version();const string SqlStatement = "SELECT TOP 1 type_version FROM msdb.dbo.sysdac_instances_internal WHERE instance_name = db_name()";try{using (var connection = new SqlConnection(connectionString)){connection.Open();using (var command = new SqlCommand(SqlStatement, connection)){using (var reader = command.ExecuteReader()){if (reader.Read()){var stringVersion = reader[0].ToString();Version.TryParse(stringVersion, out returnValue);}}}}}catch{}return returnValue;}

    小結(jié)和注意事項

    1、在做部署的時候,應(yīng)記得在本地備份一個數(shù)據(jù)庫

    2、需要有文檔,注釋升級了哪些數(shù)據(jù)庫內(nèi)容

    3、”Publish”用于可以連接數(shù)據(jù)庫,DACPAC部署用于無權(quán)限連接數(shù)據(jù)庫

    4、在用Code部署DACPAC文件的時候,需要注意判斷下版本號

    5、SSDT的安裝目錄 C:\Program Files (x86)\Microsoft SQL Server\120\DAC\bin\

    如果使用的是VS2012或者最低版本的VS,路徑C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\,因為SSDT最新版本為了避免與VS的目錄發(fā)生沖突進而將安裝目錄放于120。

    總結(jié)

    以上是生活随笔為你收集整理的SQL SERVER data tier application 的作用及如何使用SSDT进行SQL数据库的自动化部署到生产环境和版本控制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。