View
コマンドを使用してドロップできますDROP VIEW
。DROP TABLE
テーブルにビューがある場合に処理するための解決策はありますか?
私はのように試しました
DROP TABLE ORDER_TBL CASCADE;
最新のDBMSに別の方法はありますか?
View
コマンドを使用してドロップできますDROP VIEW
。DROP TABLE
テーブルにビューがある場合に処理するための解決策はありますか?
私はのように試しました
DROP TABLE ORDER_TBL CASCADE;
最新のDBMSに別の方法はありますか?
MSDNのドキュメントによると:
http://msdn.microsoft.com/en-us/library/ms173790.aspx
ドロップされたテーブルを参照するビューまたはストアドプロシージャは、DROPVIEWまたはDROPPROCEDUREを使用して明示的にドロップする必要があります。
つまり、MSSQLは自動的に警告を表示したり、ビューをドロップしたりすることはありません。ビューは単に無効になります。
MSDNは続きます:
テーブルへの依存関係を報告するには、sys.dm_sql_referencing_entitiesを使用します。
例えば:
http://sqlserverdownanddirty.blogspot.com/2011/07/finding-object-dependancies-in-sql.html
SELECT referencing_schema_name、referencing_entity_name、is_schema_bound、[definition] FROM sys.dm_sql_referencing_entities('mySchema.myTable'、'OBJECT')r INNER JOIN sys.sql_modules m ON r.referencing_id = m.object_id
データベースオブジェクト(テーブル、列、トリガーなど)を名前で検索する必要がある場合は、SQL検索と呼ばれる無料のRed-Gateツールを参照してください。このツールは、データベース全体であらゆる種類の文字列を検索します。
これは、DBAやデータベース開発者にとって必須のツールです。あらゆる種類の用途に完全に無料で使用できることはすでに述べましたか?
テーブルを削除する前にSQL検索を使用すると、そのテーブルに依存している他のオブジェクトを見つけることができます。いくつかの方法でそれらに対処する必要があります-依存関係を削除するか、テーブルと一緒にそれらのオブジェクトも削除します。
オプション1:
前にこのスクリプトを実行するDROP TABLE
と、テーブルに参照があるすべてのオブジェクトが一覧表示されます。
SELECT DISTINCT so.name,so.xtype
FROM syscomments sc
INNER JOIN sysobjects so ON sc.id=so.id
WHERE sc.TEXT LIKE '%YOUR TABLE%'
ビューだけが必要な場合は、上記のクエリをでフィルタリングできますAND s.xtype='V'
。
オプション2:
ビューの定義にWITHSCHEMABINDINGを追加して、ベースのテーブルを削除できないようにすることができます。