2013-10-18 47 views
0

當更新我們客戶的軟件和數據庫時,我們將他們的數據庫與我們的開發數據庫進行比較,以確保沒有表格丟失,並且所有表格看起來都一樣。比較兩個數據庫中的索引

這樣做很容易,因爲存儲在[DB].Information_Schema.Columns中的信息。

現在,我們想將客戶端數據庫中的所有索引與我們的開發數據庫進行比較,但我不知道要在哪裏查看來進行比較。那麼,我從哪裏開始尋找?

 

編輯:

我會愛一個TSQL的解決方案,而不是讓更多的軟件來完成這項工作。是的,我知道RedGate有一些很好的解決方案,但我不願意爲我可以免費做的事情付錢。這個問題不僅僅是爲了完成工作,而是爲了獲得關於SQL Server和學習的更多知識。

回答

1

你可以使用這個免費的實用工具SQL Server Database Comparison Tool嘗試。

有時候我們在大型數據庫上遇到了一些問題,但是對於其他問題,它確實有用。

希望它可以幫助

2

其顯示在您的Microsoft SQL Server數據庫索引的腳本是:

USE [database name]; 

SELECT 
    t.name tableName, 
    ind.name indexName, 
    col.name columnName, 
    key_ordinal columnOrder 
FROM 
    sys.indexes ind 
INNER JOIN 
    sys.index_columns ic ON ind.object_id = ic.object_id and ind.index_id = ic.index_id 
INNER JOIN 
    sys.columns col ON ic.object_id = col.object_id and ic.column_id = col.column_id 
INNER JOIN 
    sys.tables t ON ind.object_id = t.object_id 
WHERE 
    ind.is_primary_key = 0 
    AND ind.is_unique = 0 
    AND ind.is_unique_constraint = 0 
    AND t.is_ms_shipped = 0 
ORDER BY 
    t.name, ind.name, ind.index_id, ic.index_column_id 

我寫上面的腳本在使用查詢,可以幫助在兩個數據庫比較指標。 https://github.com/dlevsha/compalex

Compalex是一個比較兩個數據庫模式的輕量級腳本。它 支持MySQL,MS SQL Server和PostgreSQL。

截圖(鍵進行比較):

enter image description here