2017-05-08 305 views
1

我有一個包含數據的Sql數據庫。我被要求使用所有必需的主數據填充新的相同數據庫,以便應用程序能夠啓動併爲新客戶運行。在sql數據庫中查找表之間的依賴關係

First approach

從數據庫中刪除所有數據,運行應用程序,相信我不會甚至能夠登錄。觀察錯誤,確定需要主數據的表格(至少確定User表格),插入數據。然後假設我要訪問一個模塊。但沒有一些主數據,它會給我錯誤。觀察錯誤,確定需要主數據的表格,插入數據。 但這似乎不實際。

Second approach

在保持數據庫中的數據,採取一代表的時間,使用查詢或SQL Server Management Studio中的工具,找到所有相關的表。保留父表數據並刪除子表數據。對所有表格執行此操作。在第二輪考慮其餘的父表。某些表格的數據是從應用程序插入的。識別並刪除它們。這樣我可以在最後得到相關的主數據。但我不知道如何解決這個問題。

這些都是我的想法。當然,可能有更多的方法比這些更精確,更容易。我對做什麼感到困惑。請指導我。謝謝!

+0

我希望它能幫助,http://stackoverflow.com/questions/3829271/how-can-i-clone-an-sql-server-database-on-the-same-server-in-sql-server- 2008-EXP –

+0

並以'sp_depends'用於獲取相關性:https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-depends-transact-sql –

回答

0

這裏有幾個疑問,你可以用它來找出哪些表和列所引用的表和列...

select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
select * from INFORMATION_SCHEMA.columns 
select * from INFORMATION_SCHEMA.tables 
select * from sys.foreign_keys 
select * from sys.foreign_key_columns 
select * from [sys].[objects] where [name] = 'your_tablename' 

更多,開放的對象資源管理器(視圖菜單),展開:

數據庫/系統數據庫/主/視圖/系統視圖。

此外,檢查出任何數據庫圖表有可能是在對象資源管理器:

數據庫/ Your_db_name /數據庫圖表。

0

數據庫有多大?

無論你有什麼需要做適當的文檔,那麼最好從文檔開始。 如果它是主表,則必須逐個列出所有表以及標識。

記住差異。在刪除或截斷之間。

雖然以上查詢將會派上用場。

保存查詢和文檔以備將來需要。

最重要的是,不應該有任何錯誤,即使任何表是空的。

0

要查找表之間的外鍵依賴條件,您可以使用

SELECT FKT.name 'Parent table', CHT.name 'Child table' FROM sys.foreign_keys FK 
JOIN sys.tables CHT ON FK.parent_object_id = CHT.object_id 
JOIN sys.tables FKT ON FK.referenced_object_id = FKT.object_id 

也有方法可以找到使用中的系統視圖數據庫視圖依賴性。