私は、主にデータベース内の1つのテーブルで使用され、いくつかの異なるテーブルで参照されるデータを持っています。私はデータを修正する必要があります。データベース内のすべてのテーブルを検索し、データが参照されているすべてのテーブルを返す「where-used」ステートメントを記述することは可能ですか?SQLで使用されるステートメント
私はSQL 2005を使用しています。
ありがとうございました。
私は、主にデータベース内の1つのテーブルで使用され、いくつかの異なるテーブルで参照されるデータを持っています。私はデータを修正する必要があります。データベース内のすべてのテーブルを検索し、データが参照されているすべてのテーブルを返す「where-used」ステートメントを記述することは可能ですか?SQLで使用されるステートメント
私はSQL 2005を使用しています。
ありがとうございました。
私は、このSQL文hereを見つけた - 私はそれらをフィルタリングすることは容易であるFK_で始まるすべての外部キー制約に名前を付けます。
図をデータベースに追加し、すべての表をその上にドロップしてみます。あなたの質問を正しく解釈したら、すでに存在するデータベーススキーマを理解しようとしていますか?ダイアグラムを使用する場合は、テーブル構造でデータがどこにリンクされているかを見ることができるように、参照を引きます。
SQLでは、ジョインや、異なるテーブルのデータをリンクする条件を使用できます。
「修正する」のは何ですか?
SELECT OBJECT_NAME(OBJECT_ID) AS NameofConstraint,
SCHEMA_NAME(schema_id) AS SchemaName,
OBJECT_NAME(parent_object_id) AS TableName,
type_desc AS ConstraintType
FROM sys.objects
WHERE type_desc LIKE '%CONSTRAINT'
AND OBJECT_NAME(OBJECT_ID) LIKE 'FK_%'
注:
私たちは、defsテーブルに2回入力されたディスクリプタです。私はそのうちの1つを削除する必要がありますが、IDはいくつかの異なるデータベースで使用されています。私は、正しいIDをマップし、既存の複製を削除する必要があります。 –
Management Studioでは、テーブル/ビュー/ストアドプロシージャを右クリックし、[View Depenencies]を選択できます。依存関係ウィンドウでは、選択した項目が依存するオブジェクトを表示するか、選択した項目に依存する項目を表示するかを選択できます。
実際にはできませんが、テーブル設計時には "ON UPDATE CASCADE"との関係を設定できます。
外部キーが物理的にデータベースに存在する場合、データベースをリバースエンジニアリングすることができます(これを行うスクリプトについてはthis postingを参照)。これが当てはまらない場合、あなたは手作業による探偵活動をしています。
Visio Professionalには、データベースをリバースエンジニアリングするツールがあります。あなたはどちらかが必要になりますので、2003年には、SQL Server 2005にうまく再生されない:それはスキーマ参照を生成し、にスクリプトをロードしないよう
Visio 2007の
は、上記にリンクされているスクリプトを変更しますSQL Server 2000データベース。その後、SQL 2000 DBからリバースエンジニアリングを行います。
あなたが外部キーを持っているか、不完全な外部キーのカバレッジを持っていない場合は、手動でそれらを探して(例えば、データを参照するために同様の探しているコードを持つフィールドを探してください)と、手動でキーに注釈を付けることができます図。 FMSをデータベースに戻そうとする可能性があるため、SSMSに付属のダイアグラムツールでこれを実行しないでください。
これは推移的な参照を処理しますか?TableAは主キー列A1を定義します。 TableBには、A1を参照する外部キー列B1がありますが、(B1、B2)に複合主キーがあります。 TableCは列(C1、C2)に複合外部キーを持っています。A1を参照しているTableCに明示的な外部キー制約はありませんが、ダイアグラムを作成すると、C1列のすべての値もA1列の値である必要があります。これは一般的な問題ではありません。それは避けられたかもしれませんが、それは本当の問題です。 –