Microsoft SQL Server Management Studio 2008 menghapus beberapa tabel pengguna

12

Apakah ada cara mudah untuk menghapus beberapa tabel dalam database tanpa menjatuhkan database dan membuatnya kembali? Dalam hal ini kami memiliki lebih dari 100 untuk dihapus.

Saya cukup senang menghapus semua tabel pengguna dan mengimpor kembali data yang diperlukan tetapi tidak dapat menyentuh pengaturan keamanan basis data apa pun.

Ryaner
sumber

Jawaban:

26

Di objek explorer, navigasikan ke database yang Anda minati. Buka dan klik pada folder Tables. Tekan F7 untuk memunculkan Rincian Obyek Explorer. Pilih tabel yang ingin Anda hapus dan tekan tombol hapus.

GilaMonster
sumber
bagaimana dengan kendala?
Simon
2

Ada alasan untuk tidak melakukannya langsung di T-SQL (with DROP TABLE)? Maka itu hanya kasus membuat skrip SQL yang sesuai (sangat mungkin autogenerasi jika Anda punya daftar tabel yang perlu Anda hapus) dan Anda pergi.

Jon Skeet
sumber
0

Jawab tsql seperti yang disarankan. Saya tidak bisa mendapatkan drop table untuk bekerja di tsql tetapi ini berhasil.

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
Ryaner
sumber
Ini mengasumsikan tidak ada kendala utama yang sudah ada sebelumnya.
K. Brian Kelley
Anda dapat merangkak dependensi dan menjatuhkan tabel agar dengan sedikit usaha lebih. Posting stackoverflow di <a href= stackoverflow.com/questions/352176/...> memiliki beberapa solusi untuk melakukan ini.
ConcernedOfTunbridgeWells
0

Anda dapat menjatuhkan beberapa tabel dengan mengulanginya dan menjalankan ini:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

Namun, jika Anda mencoba menjatuhkan tabel yang direferensikan oleh kunci asing, Anda akan mendapatkan kesalahan seperti

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

Jika Anda hanya ingin melakukannya secara manual maka cukup ulangi pernyataan itu beberapa kali sampai tabel dengan referensi dijatuhkan (misalnya jika Table2 memiliki referensi ke Table1, maka pada awalnya jalankan Table1 tidak dapat dijatuhkan saat Table2 dijatuhkan, dan pada kedua jalankan Table1 kemudian dapat dijatuhkan karena Table2 tidak ada lagi).

Ole Lynge
sumber