SQL Server 2005を使用しています。最初は学習目的で多数のテーブルを作成しましたが、現在私は取り組んでいます。 1つの有用なテーブル以外のデータベースからすべてのテーブルを削除できるコードやクエリはありますか? 私が思う一つの方法は、SELECT INTO...
節を使ってそのテーブルを新しいデータベースにコピーし、そのデータベースを削除することですが、これはこの問題を解決する良い方法です。SQL Server 2005のデータベースからすべてのテーブルを1つのテーブル以外のステートメントにドロップする方法
答えて
テーブルのサイズがそれほど大きくない場合は、SSMSの[オブジェクトエクスプローラの詳細]ウィンドウですべてを選択してから削除してください。
プログラムで解決のためには、(別のテーブルには、それを参照FKを持っている場合は、テーブルを削除することはできません)どちらの方法がFK関係に関わるすべてのテーブルを削除するために繰り返し実行する必要があるかもしれません
EXEC sys.sp_MSforeachtable
N'IF OBJECT_ID(''?'') <> OBJECT_ID(''dbo.YourTableToKeep'')
DROP TABLE ?
'
を使用することができます。
UIソリューションで少し詳しく説明します。F7はObject Explorer Detailsのキーボードショートカットです。オブジェクトエクスプローラツリービューでオブジェクトを複数選択することはできませんが、ツリービューでテーブルノードを選択し、F7キーを押してオブジェクトエクスプローラの詳細を表示することができます。これは –
sqlを使用すると、必要なすべてのドロップステムを作成できます。たとえば、次のSQLクエリ
USE [MyDatabase];
GO
SELECT
replace(
replace('DROP TABLE [{Schema}].[{TableName}];'
,'{Schema}',TABLE_SCHEMA)
,'{TableName}',TABLE_NAME)
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_NAME NOT IN ('TableNameOne','TableNameTwo')
を取得し、クエリを実行した結果を取得します。
クエリの最初の列をコピーし、新しいクエリウィンドウに貼り付けます。
あなたが、「TableNameOne」と「TableNameTwo」を除くすべてのテーブルのドロップstamentsのリストを取得することを、見やすいです...
イムは、それは非常に単純だと思う...
/* Drop all Foreign Key constraints */
DECLARE @name VARCHAR(128)
DECLARE @constraint VARCHAR(254)
DECLARE @SQL VARCHAR(254)
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME)
WHILE @name is not null
BEGIN
SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
WHILE @constraint IS NOT NULL
BEGIN
SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint) +']'
EXEC (@SQL)
PRINT 'Dropped FK Constraint: ' + @constraint + ' on ' + @name
SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
END
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME)
END
GO
/* Drop all Primary Key constraints */
DECLARE @name VARCHAR(128)
DECLARE @constraint VARCHAR(254)
DECLARE @SQL VARCHAR(254)
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)
WHILE @name IS NOT NULL
BEGIN
SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
WHILE @constraint is not null
BEGIN
SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint)+']'
EXEC (@SQL)
PRINT 'Dropped PK Constraint: ' + @constraint + ' on ' + @name
SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
END
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)
END
GO
/* Drop all tables */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)
SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 ORDER BY [name])
WHILE @name IS NOT NULL
BEGIN
SELECT @SQL = 'DROP TABLE [dbo].[' + RTRIM(@name) +']'
EXEC (@SQL)
PRINT 'Dropped Table: ' + @name
SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 AND [name] > @name ORDER BY [name])
END
GO
です。ありがとう – ben
- 1. SQL Server 2005で1つのテーブルからデータをピボットする方法
- 2. SQL Server 2005のテーブルからすべての行を削除する方法
- 3. 1つのSQL Serverテーブルから別のSQL Serverテーブルに行をコピーする方法
- 4. Ecliselinkを使用してドロップ&作成テーブルから1つのテーブルを除外する方法は?
- 5. SQL Server 2005:指定されたテーブルを参照しているすべてのテーブルを特定する方法
- 6. SQL Server 2005のテーブル列をトリミングする
- 7. SQL Server 2005で外部キーなしで2つのテーブルからデータにアクセスする方法
- 8. SQL 2005データベースからすべてのテーブルを削除する最も良い方法
- 9. SQL Server 2005のテーブルとフィールドを文書化する方法
- 10. 1つのテーブルから別のテーブルにデータを挿入するステートメントを挿入
- 11. OracleテーブルからSQL Serverテーブルにデータをプッシュする方法は?
- 12. 1つのデータベースに2つのテーブルを作成する方法
- 13. 2つのSQL Server 2005データベースを同期する方法は?
- 14. SQL Server 2005 - 列後のテーブルの変更
- 15. SQL ServerからMS Accessデータベースから1つ以上のテーブル列のデータを更新する方法を教えてください。
- 16. 複数のSQLテーブルを1つのステートメントで照会する
- 17. SQL Server 2005でテーブルをエクスポートする
- 18. データベースバックアップから1つのテーブルを復元する方法
- 19. SQL Server 2005一時テーブル
- 20. EF4 2つ以上のテーブルにテーブルを結合する方法
- 21. SQL Server 2005でテーブルをレプリケートする方法は?
- 22. SQLデータベース内の1つのフィールドにテーブルを保存する方法
- 23. SQLクエリ:1つの異なる列にbasiedテーブルから行(すべての列)
- 24. SQL Server 2005 ExpressテーブルのVFP ComboBoxコンテンツ
- 25. SQL Server 2005でsyslanguagesテーブルが見つからないのはなぜですか?
- 26. デフォルトの制約の制約をすべてテーブルにドロップする方法
- 27. あるデータベースから別のデータベースにテーブル構造をコピーする方法は? 1つのデータベースからテーブル構造をコピーする方法を
- 28. 複数のデータベースをSQL Serverにドロップする方法
- 29. SQL Serverテーブルの除外
- 30. 他のテーブルのデータベースで1つのテーブルのデータを使用する方法
テーブルがあまり大きくない場合は、SSMSの[オブジェクトエクスプローラの詳細]ウィンドウですべてを選択してから削除してください。 –
ありがとう@MartinSmithこれは良い方法ですが、文を使って同じことをすることができる方法はありますか? – Manish