2009-06-03 58 views
1

對於我的團隊正在開發的應用程序,我創建了一個數據庫副本,以獨立地處理系統的某些可能功能。這樣做,我改變了一些存儲過程。與此同時,該團隊的其他成員繼續在另一個數據庫上工作並更改其中一些存儲過程。在兩個數據庫之間同步存儲過程?

該代碼仍然調用相同的SP名稱,所以我需要知道哪些存儲過程已更改,以便作出正確的修復。有沒有辦法從一個數據庫中獲取所有存儲過程,並將其與另一個數據庫中具有相同名稱的SP進行匹配,以查看哪些不同(除了USES [DB1]和USES [DB2]之外)。

感謝

回答

0

嘿所有。我考慮了所有的答案,下載新軟件對我來說不是一種選擇。經過進一步的研究,這是我如何解決這個問題的方法。

我只是查詢兩個數據庫的所有存儲過程及其最近更改日期的列表。然後我比較了他們的修改日期,並手動查看了他們的來源並進行了修改。源代碼控制肯定會對此有所幫助,但有時候事情不在我的控制之下。

獲取我所有SP名稱和更改日期列表的代碼如下。

select ROUTINE_NAME, LAST_ALTERED 
from information_schema.routines 
WHERE 
Routine_Type='procedure' 
AND specific_Catalog='DATABASE_NAME' ORDER BY LAST_ALTERED 
1

哎喲,這是你應該早考慮。一種方法:將SP代碼提取到文件並使用像Windiff這樣的工具。

或者如果您必須在數據庫中執行此操作,請查看these tools

將來,將您的SP腳本放入源代碼控制。您可以分支併合並更改。

5

我會推薦購買(或只是評估)一個專門的工具來實現這一點。目前市場上的一些產品,包括: Apex SQL DiffRedgate SQL Compare

我已經使用的Apex SQL DIFF了數年時間,而且全心全意地推薦它。

+1

我終於設法說服我的老闆投資SQL比較。這個產品是一個救生員。 – TheTXI 2009-06-03 15:18:28

+0

確實RedGate SQL比較是一個偉大的工具!希望我也可以說服我的老闆..... – 2009-06-03 15:47:29

1

Visual Studio內部可用的功能之一稱爲模式比較,它將比較表,視圖,sprocs等所有數據庫對象。不確定是否有該工具可供您使用。

另一個功能可以讓您比較已經成爲救世主的數據庫中的數據。

0

發現,當事情變這樣使用:

SELECT 
    CONVERT(varchar(23),modify_date,121) AS modify_date 
     ,type_desc 
     ,name 
    FROM sys.objects 
    WHERE is_ms_shipped=0 
    ORDER BY 1 DESC 

它會列出以下類型的項目:

CHECK_CONSTRAINT 
DEFAULT_CONSTRAINT 
FOREIGN_KEY_CONSTRAINT 
PRIMARY_KEY_CONSTRAINT 
SQL_SCALAR_FUNCTION 
SQL_STORED_PROCEDURE 
SQL_TABLE_VALUED_FUNCTION 
SQL_TRIGGER 
UNIQUE_CONSTRAINT 
USER_TABLE 
VIEW 

此外,您可能想看看像CVS或SourceSafe的,所以你可以在代碼中籤出/合併/分支功能。

腳本一切單獨的文件,並使用像超越工具比較(有免費試用)http://www.scootersoftware.com/moreinfo.php它可以比較目錄,並允許您查看每個文件的diff也與合併功能等

相關問題