2013-01-15 56 views
0

我想生成一個顯示數據庫中所有表的報告。對於每個表格,報告都會記錄它所引用的表格以及它所引用的表格。還包括用於引用的外鍵。SQL Server:引用表和外鍵的報告

我以前試過使用Red Gate SQL Dependency Tracker,它給了我一個易讀,可用的報告 - 缺乏的只是每個表關聯的外鍵。

如果任何人都可以成爲一個偉大的替代軟件,可以做我想做的事情,或者提供某種形式的替代方法,我會非常感激!我的主要目的是爲客戶提供某種形式的可讀模式,以便客戶可以理解數據庫中的互連關係......我嘗試過使用數據庫關係圖,但由於可讀性。

謝謝!

回答

0

我在一天結束時使用了Toad for SQL Server。雖然數據庫文檔實際上可能不是標準的,但它比Red Gate更具定製性。使用報告生成器,我能夠爲每個外鍵以及它們引用的列提供相關性......

非常感謝所有的答案,他們爲我提供了寶貴的見解。

0

sp_help <table_name>輸出表引用的外鍵以及將其列作爲外鍵引用的表。詢問sys.tables並使用sp_help應該會給你所需的所有信息。

+0

是的,但我想輸出它的可讀格式...我知道我可以應用自己的格式並編寫自己的代碼來完成所有這些,但似乎太麻煩了。 – matt

1

我使用這個腳本查詢一些系統目錄視圖

SELECT 
    fk.name 'FK Name', 
    tpar.name 'Parent Table', 
    colpar.name 'Parent Column', 
    tref.name 'Referenced Table', 
    colref.name 'Referenced Column', 
    fk.delete_referential_action_desc 'Delete Action', 
    fk.update_referential_action_desc 'Update Action' 
FROM 
    sys.foreign_keys fk 
INNER JOIN 
    sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id 
INNER JOIN 
    sys.tables tpar ON fk.parent_object_id = tpar.object_id 
INNER JOIN 
    sys.columns colpar ON fkc.parent_object_id = colpar.object_id AND fkc.parent_column_id = colpar.column_id 
INNER JOIN 
    sys.tables tref ON fk.referenced_object_id = tref.object_id 
INNER JOIN 
    sys.columns colref ON fkc.referenced_object_id = colref.object_id AND fkc.referenced_column_id = colref.column_id 

和它產生的輸出是這樣的:

FK Name Parent Table Parent Column Referenced Table Referenced Column Delete Action Update Action 

這很好地爲我工作。隨意適應您自己的需求。

1

依賴項跟蹤器默認情況下不顯示外鍵,但如果您單擊「顯示約束作爲對象」按鈕,它會執行此操作。

0

你試過ApexSQL Clean?它具有可視化顯示所有參考文獻的選項,深入挖掘所有關係,並且...

如果您的目標是隻創建顯示所有數據的文檔,您應該查看一些文檔工具,並且有很多這些在那裏。我使用的是ApexSQL Doc,但我想你不能與任何其他大型廠商的流行工具出現問題。

+0

請試試看,謝謝! – matt