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


12

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

すべてのユーザーテーブルを削除、必要なデータを再インポートできますが、データベースのセキュリティ設定に触れることはできません。

回答:


26

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


制約はどうですか?
サイモン

2

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


0

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

これは、重要なキー制約がないことを前提としています。
K.ブライアンケリー

もう少し手間をかけて、依存関係をクロールし、順番にテーブルを削除できます。<ahref= stackoverflow.com / questions / 352176/ >にあるstackoverflowの投稿には、これを行うためのソリューションがいくつかあります。
ConcernedOfTunbridgeWells

0

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

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を実行できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.