データベースを削除して再作成せずに、データベース内の複数のテーブルを削除する簡単な方法はありますか?この場合、削除する必要があるのは100以上です。
私はallユーザーテーブルを削除して必要なデータを再インポートするだけで十分満足していますが、データベースのセキュリティ設定を変更できません。
オブジェクトエクスプローラーで、目的のデータベースに移動します。データベースを展開して、[テーブル]フォルダーをクリックします。 F7キーを押して、オブジェクトエクスプローラーの詳細を表示します。削除するテーブルを選択して、Deleteキーを押します。
T-SQLで直接実行しない理由( DROP TABLE
)?次に、適切なSQLスクリプトを作成するだけで(削除する必要のあるテーブルのリストを取得した場合は、おそらく自動生成します)、そのままです。
複数のテーブルを繰り返し処理してこれを実行することで、複数のテーブルを削除できます。
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を実行すると削除できます。
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