2016-08-08 73 views
-1

我有一個博客網站,後端有SQL Server 2012。我正在構建移動應用程序,並希望將博客直接發佈到後端。如何查找SQL Server 2012中數據庫表之間的依賴關係

我可以將INSERT張貼到主表中,但帖子未顯示在網站上。

我懷疑有一個或多個表包含構成博客帖子的其他數據,但我無法找到它們。

是否有任何有效的方法來找到額外的相關表?數據庫中是否存在「隱藏」字段或表?

+0

找出你的查詢出了什麼問題,而不是依賴關係。如果依賴關係出錯,您可能無法插入行。 – DavidG

+0

@DavidG除非當然沒有在數據庫上正確設置RI,在這種情況下,這是一種通過所有表格進行拖網的情況,試圖找出它。 –

+0

作爲第一步,我正在從SQL查詢設計器中執行INSERT ...我將插入記錄與網站上正確顯示的記錄進行了比較,唯一的區別是POSTID,即標識字段。我似乎無法找到任何其他包含該POSTID的表。 –

回答

1

第一個查詢將爲您提供您的表引用的表的列表,第二個查詢將爲您提供引用您的表的表的列表。這隻有在表格之間建立了引用完整性時纔有效。

DECLARE @TableName VARCHAR(MAX) = 'myTable', 
     @SchemaName VARCHAR(MAX) = 'dbo' 

SELECT DISTINCT 
     s.name AS SchemaName, 
     o2.name AS TableName 
FROM sys.foreign_keys fk 
JOIN sys.objects o 
ON fk.parent_object_id = o.object_id 
JOIN sys.schemas s 
ON o.schema_id = s.schema_id 
JOIN sys.objects o2 
ON fk.referenced_object_id = o2.object_id 
JOIN sys.schemas s2 
ON o2.schema_id = s2.schema_id 
WHERE o.name = @TableName 
     AND s.name = @SchemaName 
ORDER BY SchemaName, 
     TableName 

SELECT DISTINCT 
     s.name SchemaName, 
     o.name TableName 
FROM sys.foreign_keys fk 
JOIN sys.objects o 
ON fk.parent_object_id = o.object_id 
JOIN sys.schemas s 
ON o.schema_id = s.schema_id 
JOIN sys.objects o2 
ON fk.referenced_object_id = o2.object_id 
JOIN sys.schemas s2 
ON o2.schema_id = s2.schema_id 
WHERE o2.name = @TableName 
     AND s2.name = @SchemaName 
ORDER BY SchemaName, 
     TableName 
+0

嗨Phritzy,非常感謝!不幸的是,我已經找到了相關表格。我認爲我的記錄肯定有問題......我會繼續調查......非常感謝! –