2016-08-08 20 views
-1

バックエンドにSQL Server 2012を持つブログのWebサイトがあります。私はモバイルアプリケーションを構築しており、ブログをバックエンドに直接投稿したいと考えています。SQL Server 2012のデータベーステーブル間の依存関係を確認する方法

INSERT私はプライマリテーブルに投稿することができますが、投稿はウェブサイトに表示されません。

ブログ投稿を構成する追加データが含まれているテーブルが1つ以上あると思われますが、見つけられません。

関連する追加テーブルを効率的に見つける方法はありますか?データベースに「隠された」フィールドやテーブルが存在する可能性はありますか?

+0

依存関係ではなく、クエリに何が問題であるかを解説します。依存関係に誤りがある場合は、とにかく行を挿入できない可能性があります。 – DavidG

+0

@DavidGもちろん、RIがdbに正しく設定されていない限り、その場合、すべてのテーブルをトロールして把握してみることができます。 –

+0

最初のステップとして、SQL Query Designer内からINSERTを実行しています...挿入されたレコードをWebサイトに正しく表示されたものと比較し、唯一の違いはIDフィールドです。 。私はそのPOSTIDを含む他のテーブルを見つけることはできません。 –

答えて

1

最初のクエリでは、テーブルが参照するテーブルの一覧が表示され、2番目のテーブルではテーブルを参照するテーブルの一覧が表示されます。これは、参照整合性がテーブル間に設定されている場合にのみ機能します。

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、ありがとう!残念ながら、私がすでに見つけた関連テーブル。私は私の記録に間違ったものがあるはずだと思っています...私は調査を続けます...ありがとうございます!! –

関連する問題