我比較兩個SQL服務器數據庫(分別爲開發和實時環境,SQL2005和SQL2008)以檢查兩者之間的差異。如果我爲每個數據庫生成一個腳本,我可以使用簡單的文本比較來突出顯示差異。如何對生成的SQL腳本的輸出進行排序?
問題是腳本需要採用相同的順序以簡化比較,避免存儲過程順序不同但內容相同的簡單差異。
所以,如果我生成這個從發展:
1: CREATE TABLE dbo.Table1 (ID INT NOT NULL, Name VARCHAR(100) NULL)
2: CREATE TABLE dbo.Table2 (ID INT NOT NULL, Name VARCHAR(100) NULL)
3: CREATE TABLE dbo.Table3 (ID INT NOT NULL, Name VARCHAR(100) NULL)
這從現場:
1: CREATE TABLE dbo.Table1 (ID INT NOT NULL, Name VARCHAR(100) NULL)
2: CREATE TABLE dbo.Table3 (ID INT NOT NULL, Name VARCHAR(100) NULL)
3: CREATE TABLE dbo.Table2 (ID INT NOT NULL, Name VARCHAR(100) NULL)
兩條相比較亮點線2和3不同,但他們實際上是相同的,只是生成腳本嚮導在實時環境的表2之前執行了table3。添加100個表格,存儲過程,視圖等,這很快就變成了一團糟。
我目前的選擇是:
- 手動比較
- 前的內容進行排序創建一個程序在一個特定的順序
- 找到一個免費的應用程序,排序生成的腳本來創建腳本
- 支付作爲其套件工具的一部分的產品
- (其他方式)
希望我只缺少說「按名稱排序腳本」的複選框,但我看不到任何這樣做。我認爲我不應該爲「排序輸出」選項或許多其他不需要的工具這樣簡單的事情付費,所以選項4應該是最後的選擇。
編輯 我有充分的機會,以兩個環境,但生活環境被鎖定和託管虛擬服務器上,具有遠程desktoping訪問現場的典型方式。我的首選是將我能做的事複製到那裏進行開發和比較。我可以爲數據庫中的每種對象生成腳本作爲單獨的文件(表格,SP,函數等)
您可能在通過查找CREATE腳本中的文本差異來比較數據庫模式時遇到問題,但也許只是像使用Notepad2或其他東西來首先對所有行進行排序? –
@Mike:如果他按字母順序對腳本中的所有行進行排序,他將如何分辨不同的對象是什麼? – codeulike
任何文件比較工具,如「fc」.. –