名前が特定の文字列で始まるすべてのテーブルを削除する 質問する

名前が特定の文字列で始まるすべてのテーブルを削除する 質問する

特定の文字列で始まる名前を持つすべてのテーブルを削除するにはどうすればよいですか?

これは、動的 SQL とテーブルを使用して実行できると思いますINFORMATION_SCHEMA

ベストアンサー1

データベースに所有者が複数存在する場合は、所有者を含めるようにクエリを変更する必要がある場合があります。

DECLARE @cmd varchar(4000)
DECLARE cmds CURSOR FOR
SELECT 'drop table [' + Table_Name + ']'
FROM INFORMATION_SCHEMA.TABLES
WHERE Table_Name LIKE 'prefix%'

OPEN cmds
WHILE 1 = 1
BEGIN
    FETCH cmds INTO @cmd
    IF @@fetch_status != 0 BREAK
    EXEC(@cmd)
END
CLOSE cmds;
DEALLOCATE cmds

これは、スクリプトを生成して実行するという 2 段階のアプローチを使用するよりもクリーンです。ただし、スクリプト生成の利点の 1 つは、実際に実行する前に、実行される内容全体を確認できることです。

これを本番データベースに対して実行する場合には、できる限り注意する必要があることはわかっています。

編集コードサンプルを修正しました。

おすすめ記事