demoshop

demo, trying to be the best_

有時候我們無法直接連線至需要比對的資料庫因此我們無法直接使用 DB Schema Compare來作比對,但DB Schema Compare有一個特殊功能,利用 dbschema  檔來比對,本文就來介紹如何產出 dbschema 檔。

先來敘說一下案發經過:客戶辦了一個活動就在昨天結束,但是今天因為某各原因導致資料庫損壞,而他們的技術人員也很帥的直接拿出了備份檔預計還原, 還原也算是一個解決方案但淒涼的是竟然使用半個月前的備份檔,而這半個月改過不少東西,倒至於恢復網站以後也因為 db Schema 不同網站根本不能用,這時候我直接想利用 DB Schema Compare來作比對但客戶的 db 是放於區網內,因此我們無法直接使用 DB Schema Compare來作比對,那就來產生一個 dbschema 檔好讓我們取回來比對。


本文以下必須要安裝  Visual Studio Team System 2008 Database Edition GDR R2 才可使用。

我們需要複製以下幾個必須的檔案
移動至「x:\Program Files (x86)\Microsoft Visual Studio 9.0\VSTSDB\Deploy」資料夾複製
VSDBCMD.EXE
Microsoft.Data.Schema.dll
Microsoft.Data.Schema.ScriptDom.dll
Microsoft.Data.Schema.ScriptDom.Sql.dll
Microsoft.Data.Schema.Sql.dll


然後移至 「Extensions\SqlServer」資料夾複製
DatabaseSchemaProviders.Extensions.xml


在將「2008\DBSchemas」資料夾複製
Microsoft.SqlTypes.dbschema


將以上的檔案複製到一個自建的資料夾中(本例為sqldump)開啟「命令提示字元(cmd.exe)」移動至資料夾內


指令碼範例


  1. 		vsdbcmd /a:import /cs:"Data Source=127.0.0.1;Initial Catalog=demo;Persist Security Info=True;User ID=sa;Password=12345" /dsp:Sql /model:demo.dbschema 

以上範例對於有使用過資料庫的應該都不難,一個連線字串加上一些參數而已,指令可以匯出可用的 dbschema 檔,如果你還想要更深入的研究整各指令的使用方式建議利用 vsdbcmd /? 來查詢


產生檔案後就可以來 Compare 了 我們可以看到第一步我們選擇的是直接連結到本機的開發資料庫,而 Target 端選擇的是 dbschema 檔,剩下的使用方式就一樣了。


此可怕的事情我們在客戶告知災難以後不到30分鐘內就處理完畢,因此擁有一個好工具並且熟悉你的工具絕對是必需且必要的。

回應討論