簡體   English   中英

如何比較/驗證sql架構

[英]how to compare/validate sql schema

我正在尋找一種在更新應用程序版本后驗證生產數據庫上的SQL模式的方法。 如果應用程序與數據庫架構版本不匹配,則應該有一種方法來警告用戶並列出所需的更改。

是否有一個工具或框架(以編程方式使用)具有內置功能來做到這一點? 或者是否有一些簡單的算法來運行這種比較?

更新:紅門列出“從$ 395”。 有空嗎? 或者比保留版本號更加萬無一失?

試試這個SQL。
- 針對每個數據庫運行它。
- 將輸出保存到文本文件。
- 區分文本文件。

/* get list of objects in the database */
SELECT name, 
       type 
FROM  sysobjects
ORDER BY type, name

/* get list of columns in each table / parameters for each stored procedure */
SELECT so.name, 
       so.type, 
       sc.name, 
       sc.number, 
       sc.colid, 
       sc.status, 
       sc.type, 
       sc.length, 
       sc.usertype , 
       sc.scale 
FROM   sysobjects  so , 
       syscolumns  sc 
WHERE  so.id = sc.id 
ORDER BY so.type, so.name, sc.name

/* get definition of each stored procedure */
SELECT so.name, 
       so.type, 
       sc.number, 
       sc.text 
FROM   sysobjects  so , 
       syscomments sc 
WHERE  so.id = sc.id 
ORDER BY so.type, so.name, sc.number 

我希望我能提供幫助 - 這是我建議閱讀的文章:

自動比較SQL Server數據庫模式

它描述了如何使用T-SQL,SSMS或第三方工具自動執行SQL Server架構比較和同步過程。

您可以通過查看兩個數據庫的數據字典(sys.objects,sys.columns等)並進行比較來以編程方式執行此操作。 但是,還有像Redgate SQL Compare Pro這樣的工具可以幫到你。 我現在已將此作為數據倉庫系統QA工具的一部分指定,包括我目前正在進行的工作。 在我目前的演出中,這根本不是問題,因為DBA已經在使用它了。

使用這些工具的基本方法是維護一個構建數據庫的參考腳本,並將其保留在版本控制中。 將腳本運行到臨時數據庫並將其與目標進行比較以查看差異。 如果您有這種傾向,它也會生成補丁腳本。

據我所知,除非你想寫自己的,否則沒有任何自由。 Redgate足夠便宜,可能也是免費的。 即使作為QA工具來證明生產數據庫不在配置中,它也意味着它會在一次事故后為您節省購買價格。

您現在可以免費使用我的SQL Admin Studio來運行架構比較數據比較和同步更改。 不再需要從此處下載許可證密鑰http://www.simego.com/Products/SQL-Admin-Studio

也適用於SQL Azure。

[更新:是的我是上述計划的作者,因為它現在免費我只是想與社區分享]

如果您正在尋找可以比較兩個數據庫的工具,並向您展示Red Gate使SQL Compare的差異

您沒有提到您正在使用的RDMBS:如果您的RDBMS中提供了INFORMATION SCHEMA視圖,並且您可以從同一主機引用這兩個模式,則可以查詢INFORMATION SCHEMA視圖以識別以下內容中的差異:-tables - columns -column types -constraints(例如主鍵,唯一約束,外鍵等)

為了過去的工作,我在SQL Server上為這個目的編寫了一組查詢 - 它可以很好地識別差異。 許多查詢使用帶有IS NULL的LEFT JOIN來檢查是否缺少預期的項目,其他查詢正在比較列類型或約束名稱等內容。

這有點乏味,但它可能。

我發現這個小而免費的工具可以滿足我的大部分需求。 http://www.wintestgear.com/products/MSSQLSchemaDiff/MSSQLSchemaDiff.html

這是非常基本的,但它顯示了兩個數據庫的架構差異。 它沒有任何花哨的東西,如自動生成的腳本,以消除差異,它不會比較任何數據。

它只是一個小的免費實用程序,可以顯示架構差異:)

制作一張桌子並在那里存儲您的版本號。 只需確保根據需要進行更新。

CREATE TABLE version (
    version VARCHAR(255) NOT NULL
)
INSERT INTO version VALUES ('v1.0');

然后,您可以在應用程序設置期間或方便的位置檢查存儲在數據庫中的版本號是否與應用程序代碼匹配。

這是哪個RDBMS,潛在的變化有多復雜?

也許這只是比較每個表的行數和索引計數的問題 - 如果您還要擔心觸發器和存儲過程版本,那么您需要更具工業性的東西

嘗試dbForge Data Compare for SQL Server 它可以比較和同步任何數據庫,甚至是非常大的數據庫。 快速,簡單,始終提供正確的結果。 在您的數據庫上試用它並對產品進行評論。

我們可以為您推薦一個可靠的SQL比較工具,它可以在SQL Server數據庫中提供3倍更快的表數據比較和同步。 它是SQL Server的dbForge數據比較。

主要優點:

  • 更快速地比較和同步大型數據庫
  • 支持本機SQL Server備份
  • 表,列和模式的自定義映射
  • 調整比較和同步的多個選項
  • 生成比較和同步報告

加上30天免費試用和免費購買,30天退款保證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM