2016-08-08 49 views
-1

Ich habe eine Blog-Website mit SQL Server 2012 im Back-End. Ich baue eine mobile App und möchte Blogs direkt ins Backend posten.So finden Sie Abhängigkeiten zwischen Datenbanktabellen in SQL Server 2012

Ich bin in der Lage zu INSERT ein Beitrag in die primäre Tabelle, aber der Beitrag wird nicht auf der Website angezeigt.

Ich vermute, es gibt eine oder mehrere Tabellen, die zusätzliche Daten enthalten, die einen Blogbeitrag bilden, aber ich kann sie nicht finden.

Gibt es eine effiziente Möglichkeit, die zusätzlichen verknüpften Tabellen zu finden? Ist es möglich, dass sich in der Datenbank "versteckte" Felder oder Tabellen befinden?

+0

Finden Sie heraus, was mit Ihrer Abfrage nicht stimmt, nicht die Abhängigkeiten. Wenn die Abhängigkeiten fehlerhaft waren, war es wahrscheinlich nicht möglich, die Zeile trotzdem einzufügen. – DavidG

+0

@DavidG, es sei denn, die RI wurde nicht korrekt auf der db eingerichtet. In diesem Fall müssen alle Tabellen durchsucht werden, um herauszufinden, ob sie richtig sind. –

+0

Als ersten Schritt, mache ich die INSERT aus SQL Query Designer ... Ich verglich die eingefügten aufgezeichneten zu denen, die auf der Website angezeigt werden, und der einzige Unterschied ist die POSTID, die das Identity-Feld ist. .Ich kann anscheinend keine andere Tabelle finden, die diese POSTID enthält. –

Antwort

1

Die erste Abfrage gibt Ihnen eine Liste der Tabellen, auf die Ihre Tabelle verweist, und die zweite gibt Ihnen eine Liste der Tabellen, die auf Ihre Tabelle verweisen. Dies funktioniert nur, wenn zwischen den Tabellen eine intellectual Integrität eingerichtet wird.

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

Hey Phritzy, vielen Dank dafür! Leider sind die zugehörigen Tabellen wo ich schon gefunden habe. Ich denke, dass mit meiner Platte etwas nicht stimmt ... Ich werde weiter nachforschen ... Vielen Dank !! –