มีวิธีง่ายๆในการลบหลายตารางในฐานข้อมูลโดยไม่ทิ้งฐานข้อมูลและสร้างใหม่หรือไม่ ในกรณีนี้เรามีมากกว่า 100 รายการที่จะลบ
ฉันมีความสุขมากที่จะลบตารางผู้ใช้ทั้งหมดและนำเข้าข้อมูลที่จำเป็นอีกครั้ง แต่ไม่สามารถแตะการตั้งค่าความปลอดภัยฐานข้อมูลใด ๆ
มีวิธีง่ายๆในการลบหลายตารางในฐานข้อมูลโดยไม่ทิ้งฐานข้อมูลและสร้างใหม่หรือไม่ ในกรณีนี้เรามีมากกว่า 100 รายการที่จะลบ
ฉันมีความสุขมากที่จะลบตารางผู้ใช้ทั้งหมดและนำเข้าข้อมูลที่จำเป็นอีกครั้ง แต่ไม่สามารถแตะการตั้งค่าความปลอดภัยฐานข้อมูลใด ๆ
คำตอบ:
ใน object explorer ให้นำทางไปยังฐานข้อมูลที่คุณสนใจขยายออกและคลิกที่โฟลเดอร์ Tables กด F7 เพื่อแสดงรายละเอียด Object Explorer เลือกตารางที่คุณต้องการลบและกดปุ่มลบ
ด้วยเหตุผลใดก็ตามจะไม่ทำมันโดยตรงใน T-SQL (กับDROP TABLE
)? จากนั้นเป็นเพียงกรณีของการสร้างสคริปต์ SQL ที่เหมาะสม (อาจเป็นการสร้างอัตโนมัติหากคุณมีรายการของตารางที่คุณต้องลบ) และคุณไม่อยู่
คำตอบ 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
คุณสามารถวางหลายตารางโดยทำซ้ำผ่านพวกเขาและดำเนินการนี้:
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 จากนั้นเรียกใช้ครั้งแรกที่ Table1 ไม่สามารถทิ้งได้ในขณะที่ Table2 ถูกทิ้งและวินาที เรียกใช้ Table1 จากนั้นจึงสามารถดร็อปได้เนื่องจาก Table2 ไม่มาก)