여러 사용자 테이블을 삭제하는 Microsoft SQL Server Management Studio 2008


12

데이터베이스를 삭제하고 다시 작성하지 않고 데이터베이스에서 여러 테이블을 삭제하는 쉬운 방법이 있습니까? 이 경우 제거 할 100 개가 넘습니다.

모든 사용자 테이블 을 제거 하고 필요한 데이터를 다시 가져 오는 데 만족하지만 데이터베이스 보안 설정을 건드릴 수 없습니다.

답변:


26

개체 탐색기에서 원하는 데이터베이스로 이동합니다. 확장하고 Tables 폴더를 클릭합니다. F7을 눌러 오브젝트 탐색기 세부 사항을여십시오. 삭제하려는 테이블을 선택하고 삭제 키를 누르십시오.


제약은 어떻습니까?
Simon

2

T-SQL에서 직접 사용하지 않는 이유는 DROP TABLE무엇입니까? 그런 다음 적절한 SQL 스크립트를 작성하고 (삭제 해야하는 테이블 목록이 있으면 자동 생성 가능) 그냥 있습니다.


0

제안 된대로 Tsql 답변. 드롭 테이블을 tsql에서 작동시킬 수 없었지만 이것은 트릭을 수행했습니다.

declare @TABLE varchar(250)

declare select_cursor cursor for
select name from sysobjects where type='U'

open select_cursor

fetch next from select_cursor
into @TABLE

while @@FETCH_STATUS = 0
begin
    print 'DROP TABLE '+@TABLE

    fetch next from select_cursor
    into @TABLE
end

close select_cursor
deallocate select_cursor

이것은 foreigh 키 제약 조건이 없다고 가정합니다.
K. 브라이언 켈리

조금 더 노력하면 종속성을 크롤링하고 테이블을 삭제할 수 있습니다. <a href= stackoverflow.com/questions/352176/…>에 있는 stackoverflow 게시에는 이를위한 몇 가지 솔루션이 있습니다.
ConcernedOfTunbridgeWells

0

여러 테이블을 반복하고 다음을 실행하여 여러 테이블을 삭제할 수 있습니다.

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

그러나 외래 키로 참조되는 테이블을 삭제하려고하면 다음과 같은 오류가 발생합니다.

Msg 3726, Level 16, State 1, Line 1
Could not drop object 'dbo.Table1' because it is referenced by a FOREIGN KEY constraint.

수동으로 수행하려면 참조가있는 테이블이 삭제 될 때까지 명령문을 몇 번 반복하십시오 (예 : Table2에 Table1에 대한 참조가있는 경우 처음 실행하면 Table2를 삭제하는 동안 Table1을 삭제할 수 없으며 두 번째로 그런 다음 Table2가 더 이상 없기 때문에 실행 Table1을 삭제할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.