開發的時候在測試服務器上和線網服務器上面都有咱們的數據庫,當咱們在線網上面修改或者新增一些字段後,線網的數據庫也須要更新,這個時候根據表的修改記錄,而後在線網上面一個一個增長修改很浪費效率並且容易出錯,那有沒有更好的方法解決這個問題呢?有!那就是VS自帶的架構比較功能。數據庫
我的以爲在初期一個開發除了掌握必要的開發知識外,對開發工具的使用和了解程度一樣是相當重要的。就想對API瞭解程度同樣,熟練的使用讓你開發起來得心趁手。服務器
從Visual Studio 2005版本開始,VS就開始支持「比較和同步數據庫架構」,微軟如此早就實現這個功能說明這是一個咱們會常常用到一個功能。這個功能咱們本身也能夠實現(在SQL Server中實現視圖、存儲過程及表結構的比較),也能夠將其打包成一個工具(本身開發MSSQL架構和數據對比小工具)。對於新手來講稍微麻煩一些,這裏就不作多說,感興趣的能夠看看。架構
本次演練使用VS2017自帶的SQL Server工具比較兩個數據庫的架構並同步目標的架構和源的架構。ide
我這裏有兩個數據庫,一個是本地的,一個是測試服務器的。本次演練我將鏈接這兩個數據庫。工具
所謂的源數據庫和目標數據庫也就是字面的意思(源>目標)將源數據中新增修改的同步到目標數據庫中。開發工具
首先咱們打開VS>工具>SQL Server>新建架構比較。測試
選擇源3d
咱們選擇數據庫,點擊選擇鏈接code
鏈接源服務器並驗證,別忘記了選擇數據庫blog
選擇目標 操做和選擇源同樣
鏈接目標服務器並驗證,別忘記了選擇數據庫
源數據庫和目標數據庫都選擇完成後,點擊左上角「比較」開始比較兩個數據庫
下面就是源數據庫和目標數據庫的差別
比較完成後選擇左上角的更新,就會更新咱們選擇要更新的字段數據(圖中紅標圈住的字段)
數據的同步其實就是差別生成對應的腳本,而後在目標數據庫執行。選擇查看結果就能夠看到部署腳本
看到提示咱們知道更新完畢了。而後咱們再執行「比較」看一下差別。
這個時候咱們會發現剛纔同步的已經同步完成了,若是想所有同步,所有勾選就是啦,架構比較就是這麼簡單,本次演練就到這裏。
1.爲何個人界面和你的不同
答:我這vs2017帶的工具,相比較其餘版本可能會存在些差別,可是大致操做是同樣的。
2.爲何有些我會更新失敗
答:這個問題我也遇到過,這是由於可能由於這個操做會致使目標數據丟失,或者是由於權限不足等緣由。這個我是手動操做的,大家要是知道好的解決辦法能夠留言給我哦。
(48,1): SQL72014: .Net SqlClient Data Provider: 消息 50000,級別 16,狀態 127,第 6 行 檢測到行。因爲可能丟失數據,正在終止架構更新。 (43,0): SQL72045: 腳本執行錯誤。執行的腳本: IF EXISTS (SELECT TOP 1 1 FROM [dbo].[CR_ClassRingNewsFeed]) RAISERROR (N'檢測到行。因爲可能丟失數據,正在終止架構更新。', 16, 127) WITH NOWAIT; 執行批處理時出錯。