우수 답변
In SSMS :
데이터베이스를 마우스 오른쪽 버튼으로 클릭
“작업”으로 이동
“스크립트 생성”을 클릭합니다.
“개체 선택”섹션에서 “전체 데이터베이스 및 모든 데이터베이스 개체 스크립트”를 선택합니다.
“스크립트 옵션 설정”섹션에서 “고급”버튼을 클릭합니다.
“Script DROP and CREATE”에서 “Script CREATE”를 “Script DROP”으로 전환하고 확인을 누릅니다.
그런 다음 파일, 클립 보드 또는 새 쿼리 창에 저장합니다.
스크립트 실행
이제 데이터베이스를 포함한 모든 항목이 삭제됩니다. 삭제하지 않으려는 항목에 대한 코드를 제거해야합니다. 또는 “객체 선택”섹션에서 전체 데이터베이스를 스크립팅하도록 선택하는 대신 제거 할 항목을 선택하기 만하면됩니다.
스크립트를 사용하여 :
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
https://stackoverflow.com/questions/8439650/how-to-drop-all-tables-in-a-sql-server-database/43128914
Answer
현재 IT 시장과 기술을 이해하고 SQL Server를 비롯한 다양한 데이터베이스 기술을 사용해 온 사람의 의견 기반 답변입니다. 위로 10 년 : SQL Server의 미래는 SQL을 쿼리 언어로 사용할 미래에 달려 있습니다. 우리가 알고있는 관계형 데이터베이스 관리 시스템은 지난 20 년 동안 실제로 많이 변경되지 않았지만 컴퓨팅과 관련된 다른 모든 주제는 변했습니다. SQL의 성공은 “단순성”에 있으며 추상화 수준이 낮 으면 항상 이와 같은 기술이 필요합니다. 그러나 SQL 및 RDBMS “가 현재 형태로는 제공하지 못하는 요구 사항이 몇 가지 있습니다. 메타 데이터가있는 데이터 유형과 관련하여 어려움을 겪고 있습니다. 예를 들어이 날짜가 누군가의 생일을 나타 냅니까? 이 nvarchar (50)이 전자 메일 주소를 나타 냅니까? 이 두 값이 한 항목이 다른 항목보다 크지 않아야하는 날짜 범위를 나타 냅니까? SQL Server는이를 트리거로 처리하지만 이러한 종류의 트리거를 제자리에 배치하는 데 너무 많은 시간이 소요되므로 기업은 종종 작업을 건너 뛰고 대신 소프트웨어 계층에 의존하여이 문제를 해결합니다. 이로 인해 프로젝트 전반에 걸쳐 조직 및 일관성이 부족합니다. 추상화 된 방식으로 복제 기반 요구를 처리하지 않습니다. 예를 들어 두 개의 연결이 끊긴 시스템이 테이블에 새 레코드를 생성해야하는 경우 어떤 새 IDENTITY 키를 생성해야합니까? 이 문제는 복합 키나 GUID 또는 기타 몇 가지 방법을 사용하여 해결할 수 있지만 SQL 소비자는 이러한 복잡성에 신경을 써야합니다. 추상적 인 방식으로 양방향 시간 관리를 처리하지 않습니다. 예를 들어 2013 년 7 월에 진실이라고 생각했지만 사실을 추적해야하는 경우 또한 2016 년까지 배우지 않은 2013 년에 대한 수정 된 데이터를 저장해야합니다.이를 처리하고 참조 무결성을 유지하기위한 스키마를 만드는 것은 매우 복잡합니다.이 문제를보다 쉽게 처리 할 수있는 방법에 대한 제안은 이미 있지만 현재의 사고 방식은 그것을 해결하지 마십시오. 데이터의 “모델”을 통합하지 못합니다. 물리적 스키마는 “This Boolean”과 같은 간단한 내용을 잘 설명하지 못합니다. 값은 참 또는 거짓을 나타냅니다. “또는”이 날짜는 다음 몇 달이 될 가능성이 있으므로 다른 날짜가 과거 년이 될 달력 컨트롤을 사용하십시오. 따라서 mm / dd / yyyy에 드롭 다운을 사용하십시오. ” . 이와 같이 수많은 “비즈니스 인텔리전스”또는 “보고”도구가 이러한 기능을 제공하기 위해 이러한 시스템 위에 구축되었지만 대부분은 여전히 독점적이며 모든 사람이 사용할 수있는 훌륭한 솔루션이 아직 제공되지 않았기 때문에 해마다 바뀌고 있습니다. 독점적 인 방식으로 (너무 좋게 경쟁을 없애고 자체 표준을 설정합니다). 허용 된 오래된 데이터를 처리하지 않습니다. 데이터를 요청할 때 클러스터 내의 서버에있는 오래된 데이터를 나타낼 수있는 쉬운 방법은 없습니다. 더 빨리 찾을 수 있다면 old는 허용됩니다. 이로 인해 성능 문제가 발생하고 “NoSQL”데이터베이스가 나타나는 주요 원인 중 하나입니다. 수많은 “NoSQL 기술”이이 문제의 작은 부분에 대한 솔루션을 제공하지만 단순히 해결되지 않은 많은 문제가 있습니다. 예를 들어 분산 시스템은 주요 성능 문제를 일으키지 않고 트랜잭션 기반 격리와 잘 작동하지 않습니다.우리가 데이터에 대한 질문을 할 때 의사 소통 할 수있는 것들이 있습니다. 어떤 이유로 든이 데이터가 변경 될 경우 알림을 받고 싶습니까? 가까운 장래에 내가 요청한 데이터를 변경하고 싶을까요, 아니면 미래의 변경 의도가없는 읽기 전용일까요? 다른 문제도 많이 있지만 중요한 점은 SQL Server의 미래는 경제와 새로운 아이디어의 가용성 및 구현에 의해 주도 될 것입니다 … 저는 SQL이 질문을하는 가장 인기있는 방법 인 최소 5 ~ 8 년 동안 데이터를 변경하고 데이터 변경을 요청합니다.하지만 단점이 있으며이 컴퓨팅 영역은 “새로운 큰 문제”가 필요합니다. 디스크 속도의 발전, 비용의 디스크 크기, 비용의 램 크기, 그리고 아마도 수직이 아닌 수평으로 확장하여 “클라우드 컴퓨팅”을 사용한다는 아이디어의 대부분은 소프트웨어 아키텍처가 여전히 어려움을 겪고있는 데이터 세계의 모든 새로운 변수입니다. 따라 잡다. SQL Server의 미래는 점진적이지만 지속 가능한 데이터 작업 방식으로의 변화입니다. 이름이 변경되고 쿼리 언어로서의 SQL에서 멀어지고 현대 소프트웨어 아키텍트가 제공하는 문제를 더 잘 해결하는 더 강력한 언어로 전환 될 가능성이 높습니다.