Visual Studio2017數(shù)據(jù)庫架構(gòu)介紹

一、前言

開發(fā)的時候在測試服務(wù)器上和線網(wǎng)服務(wù)器上面都有我們的數(shù)據(jù)庫,當我們在線網(wǎng)上面修改或者新增一些字段后,線網(wǎng)的數(shù)據(jù)庫也需要更新,這個時候根據(jù)表的修改記錄,然后在線網(wǎng)上面一個一個增加修改很浪費效率而且容易出錯,那有沒有更好的方法解決這個問題呢?有!那就是vs自帶的架構(gòu)比較功能。

個人覺得在初期一個開發(fā)除了掌握必要的開發(fā)知識外,對開發(fā)工具的使用和了解程度同樣是至關(guān)重要的。就想對API了解程度一樣,熟練的使用讓你開發(fā)起來得心趁手。

二、關(guān)于

從Visual Studio 2005版本開始,VS就開始支持“比較和同步數(shù)據(jù)庫架構(gòu)”,微軟如此早就實現(xiàn)這個功能說明這是一個我們會經(jīng)常用到一個功能。這個功能我們自己也可以實現(xiàn)(在SQL Server中實現(xiàn)視圖、存儲過程及表結(jié)構(gòu)的比較),也可以將其打包成一個工具(自己開發(fā)MSSQL架構(gòu)和數(shù)據(jù)對比小工具)。對于新手來說稍微麻煩一些,這里就不做多說,感興趣的可以看看。

三、開始演練

本次演練使用VS2017自帶的SQL Server工具比較兩個數(shù)據(jù)庫的架構(gòu)并同步目標的架構(gòu)和源的架構(gòu)。

1.準備兩個要比較的數(shù)據(jù)庫

我這里有兩個數(shù)據(jù)庫,一個是本地的,一個是測試服務(wù)器的。本次演練我將連接這兩個數(shù)據(jù)庫。

2.連接源數(shù)據(jù)庫和目標數(shù)據(jù)庫

所謂的源數(shù)據(jù)庫和目標數(shù)據(jù)庫也就是字面的意思(源>目標)將源數(shù)據(jù)中新增修改的同步到目標數(shù)據(jù)庫中。

首先我們打開VS>工具>SQL Server>新建架構(gòu)比較。

Visual Studio2017數(shù)據(jù)庫架構(gòu)介紹

選擇源

Visual Studio2017數(shù)據(jù)庫架構(gòu)介紹

我們選擇數(shù)據(jù)庫,點擊選擇連接

Visual Studio2017數(shù)據(jù)庫架構(gòu)介紹

連接源服務(wù)器并驗證,別忘記了選擇數(shù)據(jù)庫

Visual Studio2017數(shù)據(jù)庫架構(gòu)介紹

選擇目標 操作和選擇源一樣

Visual Studio2017數(shù)據(jù)庫架構(gòu)介紹

連接目標服務(wù)器并驗證,別忘記了選擇數(shù)據(jù)庫

Visual Studio2017數(shù)據(jù)庫架構(gòu)介紹

3.比較源數(shù)據(jù)庫和目標數(shù)據(jù)庫

源數(shù)據(jù)庫和目標數(shù)據(jù)庫都選擇完成后,點擊左上角“比較”開始比較兩個數(shù)據(jù)庫

Visual Studio2017數(shù)據(jù)庫架構(gòu)介紹

下面就是源數(shù)據(jù)庫和目標數(shù)據(jù)庫的差異

Visual Studio2017數(shù)據(jù)庫架構(gòu)介紹

4.更新目標數(shù)據(jù)庫

比較完成后選擇左上角的更新,就會更新我們選擇要更新的字段數(shù)據(jù)(圖中紅標圈住的字段)

Visual Studio2017數(shù)據(jù)庫架構(gòu)介紹

Visual Studio2017數(shù)據(jù)庫架構(gòu)介紹

數(shù)據(jù)的同步其實就是差異生成對應(yīng)的腳本,然后在目標數(shù)據(jù)庫執(zhí)行。選擇查看結(jié)果就可以看到部署腳本

Visual Studio2017數(shù)據(jù)庫架構(gòu)介紹

看到提示我們知道更新完畢了。然后我們再執(zhí)行“比較”看一下差異。

Visual Studio2017數(shù)據(jù)庫架構(gòu)介紹

這個時候我們會發(fā)現(xiàn)剛才同步的已經(jīng)同步完成了,如果想全部同步,全部勾選就是啦,架構(gòu)比較就是這么簡單,本次演練就到這里。

四、常見的問題

1.為什么我的界面和你的不一樣
答:我這vs2017帶的工具,相比較其他版本可能會存在些差異,但是大體操作是一樣的。

2.為什么有些我會更新失敗
答:這個問題我也遇到過,這是因為可能因為這個操作會導致目標數(shù)據(jù)丟失,或者是因為權(quán)限不足等原因。這個我是手動操作的,你們要是知道好的解決辦法可以留言給我哦。

(48,1): SQL72014: .Net SqlClient Data Provider: 消息 50000,級別 16,狀態(tài) 127,第 6 行 檢測到行。由于可能丟失數(shù)據(jù),正在終止架構(gòu)更新。  (43,0): SQL72045: 腳本執(zhí)行錯誤。執(zhí)行的腳本:  IF EXISTS (SELECT TOP 1 1             FROM   [dbo].[CR_ClassRingNewsFeed])      RAISERROR (N'檢測到行。由于可能丟失數(shù)據(jù),正在終止架構(gòu)更新。', 16, 127)          WITH NOWAIT;    執(zhí)行批處理時出錯。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊7 分享