問題

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

私はこれがいくつかの動的SQLとINFORMATION_SCHEMAテーブルで行うことができると思います。

  ベストアンサー

データベースに複数のデータがある場合は、所有者を含めるためにクエリを変更する必要があるかもしれません。

 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つの利点は、実際に実行される前に実行されるものの全体を見直す機会を与えることです。

私は、プロダクションデータベースに対してこれを行うつもりであれば、できるだけ慎重になることを知っています。

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

  同じタグがついた質問を見る

sqlsql-serverdynamic-sql