web-dev-qa-db-ja.com

Microsoft SQL Server Management Studio 2008による複数のユーザーテーブルの削除

データベースを削除して再作成せずに、データベース内の複数のテーブルを削除する簡単な方法はありますか?この場合、削除する必要があるのは100以上です。

私はallユーザーテーブルを削除して必要なデータを再インポートするだけで十分満足していますが、データベースのセキュリティ設定を変更できません。

12
Ryaner

オブジェクトエクスプローラーで、目的のデータベースに移動します。データベースを展開して、[テーブル]フォルダーをクリックします。 F7キーを押して、オブジェクトエクスプローラーの詳細を表示します。削除するテーブルを選択して、Deleteキーを押します。

26
GilaMonster

T-SQLで直接実行しない理由( DROP TABLE )?次に、適切なSQLスクリプトを作成するだけで(削除する必要のあるテーブルのリストを取得した場合は、おそらく自動生成します)、そのままです。

2
Jon Skeet

複数のテーブルを繰り返し処理してこれを実行することで、複数のテーブルを削除できます。

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

ただし、外部キーによって参照されているテーブルを削除しようとすると、次のようなエラーが発生します。

Msg 3726, Level 16, State 1, Line 1
Could not drop object 'dbo.Table1' because it is referenced by a FOREIGN KEY constraint.

手動で実行したい場合は、参照を持つテーブルが削除されるまで、ステートメントを数回繰り返します(たとえば、Table2がTable1への参照を持っている場合、最初の実行ではTable2が削除されている間、Table1は削除できません。 Table2はもうないので、Table1を実行すると削除できます。

0
Ole Lynge

Tsqlは提案通りに答えます。ドロップテーブルをtsqlで機能させることができませんでしたが、これでうまくいきました。

declare @TABLE varchar(250)

declare select_cursor cursor for
select name from sysobjects where type='U'

open select_cursor

fetch next from select_cursor
into @TABLE

while @@FETCH_STATUS = 0
begin
    print 'DROP TABLE '+@TABLE

    fetch next from select_cursor
    into @TABLE
end

close select_cursor
deallocate select_cursor
0
Ryaner