2010-12-21 11 views

答えて

14

あなたはいつも、システム・カタログ・ビューを照会し、それが必要なDROPステートメントを生成するかもしれない:

SELECT 'DROP PROCEDURE [' + SCHEMA_NAME(schema_id) + '].[' + pr.NAME +']' 
FROM sys.procedures pr 
WHERE pr.is_ms_shipped = 0 

UNION 

SELECT 'DROP VIEW [' + SCHEMA_NAME(schema_id) + '].[' + v.NAME + ']' 
FROM sys.views v 
WHERE v.is_ms_shipped = 0 

UNION 

SELECT 'ALTER TABLE [' + SCHEMA_NAME(schema_id) + '].[' + OBJECT_NAME(fk.parent_object_ID) + '] DROP CONSTRAINT ' + fk.name 
FROM sys.foreign_keys fk 
WHERE is_ms_shipped = 0 

UNION 

SELECT 'DROP TABLE [' + SCHEMA_NAME(schema_id) + '].[' + t.NAME + ']' 
FROM sys.tables t 
WHERE t.is_ms_shipped = 0 

これはちょうど&が新しいSSMSにそれらをコピー&ペースト、DROP .....文の長いリストを生成します。ウィンドウを開き、それらを実行します。

+1

テーブルを削除する前に、すべての外部キー制約を削除する必要があります(テーブルがランダムな順序で削除されるため)。 –

+0

@Klaus Byskov Hoffmann:はい、良い点! –

+0

残念ながら、スキーマ名は含まれません。 ['+ name +'] ' – Jedidja

11

データベースを削除/再作成する方が簡単でしょうか?

DROP DATABASE yourdbname 
CREATE DATABASE yourdbname 
+0

SQL Serverのドロップ/再作成の場合は+1が高速です。 Oracleデータベースの場合、私は時間のかかるスクリプトを実際に使用します。 –

+3

あなたが誤ってマスタデータベースにテーブルを作成した場合を除いて:)私は元のポスターがこれを行ったかもしれないと推測しています。したがって、 "非システム"オブジェクトに関する質問です。 – Jedidja

関連する問題