1. ホーム
  2. sql-server

[解決済み】SQL Serverデータベースのすべてのテーブルを削除する方法は?

2022-04-16 20:25:04

質問

SQL Serverデータベースを完全に空にするスクリプトを書こうとしています。これは、私がこれまでに持っているものです。

USE [dbname]
GO
EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'
EXEC sp_msforeachtable 'DELETE ?'

Management Studioで実行すると、こうなります。

コマンドは正常に終了しました。

が、テーブルリストを更新すると、すべて残っています。何が間違っているのでしょうか?

解決方法を教えてください。

外部キーテーブルが複数ある場合、私の場合もうまくいきません。

私はあなたが試みるすべて(あなたのデータベースからすべてのテーブルを削除する)を動作し、そのコードを発見した。

DECLARE @Sql NVARCHAR(500) DECLARE @Cursor CURSOR

SET @Cursor = CURSOR FAST_FORWARD FOR
SELECT DISTINCT sql = 'ALTER TABLE [' + tc2.TABLE_SCHEMA + '].[' +  tc2.TABLE_NAME + '] DROP [' + rc1.CONSTRAINT_NAME + '];'
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc1
LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc2 ON tc2.CONSTRAINT_NAME =rc1.CONSTRAINT_NAME

OPEN @Cursor FETCH NEXT FROM @Cursor INTO @Sql

WHILE (@@FETCH_STATUS = 0)
BEGIN
Exec sp_executesql @Sql
FETCH NEXT FROM @Cursor INTO @Sql
END

CLOSE @Cursor DEALLOCATE @Cursor
GO

EXEC sp_MSforeachtable 'DROP TABLE ?'
GO

投稿を見つけることができます ここで . Grokerの投稿です。