[SQL] SQL Server 데이터베이스에있는 모든 데이터를 삭제
SQLSQL Server 데이터베이스에있는 모든 데이터를 삭제
어떻게 내 데이터베이스의 모든 테이블에서 모든 레코드를 삭제할 수 있습니까? 나는 하나의 SQL 명령으로 그것을 아니면 하나 개의 테이블 당 하나의 SQL 명령에 필요한 수 있습니까?
해결법
-
==============================
1.SQLMenace의 솔루션은 데이터를 삭제하는 방법에 약간의 비틀기와 나를 위해 일한 - DELETE 대신 TRUNCATE의 FROM.
SQLMenace의 솔루션은 데이터를 삭제하는 방법에 약간의 비틀기와 나를 위해 일한 - DELETE 대신 TRUNCATE의 FROM.
-- disable referential integrity EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' GO EXEC sp_MSForEachTable 'DELETE FROM ?' GO -- enable referential integrity again EXEC sp_MSForEachTable 'ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL' GO
-
==============================
2.보통 난 그냥 문서화되지 않은 시저를 사용합니다 sp_MSForEachTable
보통 난 그냥 문서화되지 않은 시저를 사용합니다 sp_MSForEachTable
-- disable referential integrity EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' GO EXEC sp_MSForEachTable 'TRUNCATE TABLE ?' GO -- enable referential integrity again EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL' GO
참조 : (당신이 FKS있을 때) 데이터베이스에있는 모든 데이터를 삭제
-
==============================
3.
/* Drop all non-system stored procs */ DECLARE @name VARCHAR(128) DECLARE @SQL VARCHAR(254) SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'P' AND category = 0 ORDER BY [name]) WHILE @name is not null BEGIN SELECT @SQL = 'DROP PROCEDURE [dbo].[' + RTRIM(@name) +']' EXEC (@SQL) PRINT 'Dropped Procedure: ' + @name SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'P' AND category = 0 AND [name] > @name ORDER BY [name]) END GO /* Drop all views */ DECLARE @name VARCHAR(128) DECLARE @SQL VARCHAR(254) SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 ORDER BY [name]) WHILE @name IS NOT NULL BEGIN SELECT @SQL = 'DROP VIEW [dbo].[' + RTRIM(@name) +']' EXEC (@SQL) PRINT 'Dropped View: ' + @name SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 AND [name] > @name ORDER BY [name]) END GO /* Drop all functions */ DECLARE @name VARCHAR(128) DECLARE @SQL VARCHAR(254) SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] IN (N'FN', N'IF', N'TF', N'FS', N'FT') AND category = 0 ORDER BY [name]) WHILE @name IS NOT NULL BEGIN SELECT @SQL = 'DROP FUNCTION [dbo].[' + RTRIM(@name) +']' EXEC (@SQL) PRINT 'Dropped Function: ' + @name SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] IN (N'FN', N'IF', N'TF', N'FS', N'FT') AND category = 0 AND [name] > @name ORDER BY [name]) END GO /* 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
-
==============================
4.나는이 늦게 알고 있어요,하지만 난 오히려 테이블에서 데이터를 퍼지의 번거 로움을 통해가는 것보다, 스크립트 AlexKuznetsov의 제안 데이터베이스에 동의합니다. 자르는 솔루션을하지 작업, 그리고 많은 양의 데이터가 일어날 경우, 발행 DELETE 문은 시간이 오래 걸릴 수 있습니다 (로그인), 당신은 (시드되지 않은 식별자로, 즉 INSERT 문에 남아있을거야 ID 열이있는 테이블은 당신에게 50000의 ID 대신에 하나의 ID)를 얻을 것입니다.
나는이 늦게 알고 있어요,하지만 난 오히려 테이블에서 데이터를 퍼지의 번거 로움을 통해가는 것보다, 스크립트 AlexKuznetsov의 제안 데이터베이스에 동의합니다. 자르는 솔루션을하지 작업, 그리고 많은 양의 데이터가 일어날 경우, 발행 DELETE 문은 시간이 오래 걸릴 수 있습니다 (로그인), 당신은 (시드되지 않은 식별자로, 즉 INSERT 문에 남아있을거야 ID 열이있는 테이블은 당신에게 50000의 ID 대신에 하나의 ID)를 얻을 것입니다.
스크립트 SSMS에서 전체 데이터베이스에, 작업을 선택한 다음, 데이터베이스를 마우스 오른쪽 버튼으로 클릭 -> 스크립트를 생성합니다 :
마법사 시작 화면을 건너 뛰고 다음 스크립트로 원하는 오브젝트를 선택하려면 다음을 클릭합니다 :
설정 스크립트 옵션 화면에서, 당신은 모든 개별 개체의 개체 또는 별도의 스크립트를 한 스크립트를 생성 할 것인지와 같은 스크립팅에 대한 설정을 선택할 수 있으며, 유니 코드 또는 ANSI 파일을 저장할지 여부를 :
마법사는 '마침'을 클릭하여 당신이 원하는대로 모든 것이 확인하는 데 사용할 수있는 요약, 닫기를 표시합니다.
-
==============================
5.이 스크립트는 적절한 순서에 DELETE 문을 생성합니다. 다음 참조 테이블을 참조하는 것부터 시작
이 스크립트는 적절한 순서에 DELETE 문을 생성합니다. 다음 참조 테이블을 참조하는 것부터 시작
-
==============================
6.이 데이터베이스의 모든 개체에서 훨씬 빠르게 스크립트 보통이며, 또는 잘라 내기 테이블을 삭제하는 것으로, 빈 만듭니다.
이 데이터베이스의 모든 개체에서 훨씬 빠르게 스크립트 보통이며, 또는 잘라 내기 테이블을 삭제하는 것으로, 빈 만듭니다.
-
==============================
7.내가 SQL Server 데이터베이스에서 모든 데이터를 제거하는 데 사용하는 스크립트 아래
내가 SQL Server 데이터베이스에서 모든 데이터를 제거하는 데 사용하는 스크립트 아래
------------------------------------------------------------ /* Use database */ ------------------------------------------------------------- use somedatabase; GO ------------------------------------------------------------------ /* Script to delete an repopulate the base [init database] */ ------------------------------------------------------------------ ------------------------------------------------------------- /* Procedure delete all constraints */ ------------------------------------------------------------- IF EXISTS (SELECT name FROM sysobjects WHERE name = 'sp_DeleteAllConstraints' AND type = 'P') DROP PROCEDURE dbo.sp_DeleteAllConstraints GO CREATE PROCEDURE sp_DeleteAllConstraints AS EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' EXEC sp_MSForEachTable 'ALTER TABLE ? DISABLE TRIGGER ALL' GO ----------------------------------------------------- /* Procedure delete all data from the database */ ----------------------------------------------------- IF EXISTS (SELECT name FROM sysobjects WHERE name = 'sp_DeleteAllData' AND type = 'P') DROP PROCEDURE dbo.sp_DeleteAllData GO CREATE PROCEDURE sp_DeleteAllData AS EXEC sp_MSForEachTable 'DELETE FROM ?' GO ----------------------------------------------- /* Procedure enable all constraints */ ----------------------------------------------- IF EXISTS (SELECT name FROM sysobjects WHERE name = 'sp_EnableAllConstraints' AND type = 'P') DROP PROCEDURE dbo.sp_EnableAllConstraints GO -- .... -- .... -- ....
-
==============================
8.
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' EXEC sp_MSForEachTable 'ALTER TABLE ? DISABLE TRIGGER ALL' EXEC sp_MSForEachTable 'DELETE FROM ?' EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL' EXEC sp_MSForEachTable 'ALTER TABLE ? ENABLE TRIGGER ALL' EXEC sp_MSFOREACHTABLE 'SELECT * FROM ?' GO
-
==============================
9.다른 대답으로, 당신의 Visual Studio SSDT 또는 가능성이 레드 게이트는 SQL 비교하면, 당신은 단순히 당신이해야한다는 이유가 될 경우에 가능 (기존 데이터베이스를 삭제 먼저 백업을 스크립트 그것을 밖으로, 스키마 비교를 실행할 수 있습니다 데이터가), 후 비교 도구에 의해 생성 된 스크립트를 사용하여 새 데이터베이스를 만듭니다. 아주 작은 데이터베이스에이 더 많은 작업을 할 수 있지만, 매우 큰 데이터베이스에 훨씬 더 빨리 간단하게하는 것입니다 데이터베이스에있을 수있는 다른 트리거와 제약 조건으로 거래에 다음 데이터베이스를 놓습니다.
다른 대답으로, 당신의 Visual Studio SSDT 또는 가능성이 레드 게이트는 SQL 비교하면, 당신은 단순히 당신이해야한다는 이유가 될 경우에 가능 (기존 데이터베이스를 삭제 먼저 백업을 스크립트 그것을 밖으로, 스키마 비교를 실행할 수 있습니다 데이터가), 후 비교 도구에 의해 생성 된 스크립트를 사용하여 새 데이터베이스를 만듭니다. 아주 작은 데이터베이스에이 더 많은 작업을 할 수 있지만, 매우 큰 데이터베이스에 훨씬 더 빨리 간단하게하는 것입니다 데이터베이스에있을 수있는 다른 트리거와 제약 조건으로 거래에 다음 데이터베이스를 놓습니다.
-
==============================
10.네, 단 한 줄의 코드로 삭제할 수 있습니다
네, 단 한 줄의 코드로 삭제할 수 있습니다
SELECT 'TRUNCATE TABLE ' + d.NAME + ';' FROM sys.tables d WHERE type = 'U'
from https://stackoverflow.com/questions/3687575/delete-all-data-in-sql-server-database by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 SQL Server의 어떤 FOREIGN KEY 제약 조건 참조 테이블을 찾을 수 있습니까? (0) | 2020.06.20 |
---|---|
[SQL] 이 SQL 서버에 존재하는 경우에만 어떻게 외래 키 제약 조건을 삭제합니까? (0) | 2020.06.20 |
[SQL] 어떻게하지 널 확인하고 SQL 서버에 빈 문자열은 아닌가하는? (0) | 2020.06.20 |
[SQL] 어떻게 삽입 SQL 형식으로 테이블의 모든 데이터를 내보낼? (0) | 2020.06.20 |
[SQL] 데이터베이스에 "이벤트 반복"표현하는 가장 좋은 방법은 무엇입니까? (0) | 2020.06.20 |