Tag Archive ล้าง

Byphunsanit

ล้างข้อมูลลบทุกตารางในฐานข้อมูล

นอกจากการ ลบตารางทั้งฐานข้อมูล SQL Server แล้วในช่วงการพัฒนา อาจจะต้องลบข้อมูลทิ้งทั้งหมด เพื่อทดสอบและแก้ bug

โดยปกติการล้างข้อมูลในเอสคิวเอล เซิร์ฟเวอร์จะใช้คำสั่ง

TRUNCATE TABLE table_name

แต่เป็นการทำครั้งละ 1 ตาราง ถ้ามี 20 table ก็จะเสียเวลา แถมต้องลบบางตารางตามลำดับ ถ้าผูกความสัมพันธ์กับตารางอื่นๆไว้ query ชุดนี้จะช่วยลบข้อมูลได้ทั้ง database ไม่ว่าทั้งฐานข้อมูลจะมีกี่ตาราง กี่แรคคอร์ด และตั้ง identity (คล้ายๆ auto increment ใน MySQL) ให้กลับไปที่จุดเริ่มต้น ตั้งแต่ 1 เหมือนตารางใหม่เลย

โปรดตั้งสติก่อนการปฏิบัติการ T-T
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'

และถ้าเปลี่ยน ‘DELETE FROM ?’ เป็น ‘DROP TABLE ?’ ก็จะเป็นการลบตารางออกไป คำสังแบบนี้ใช้กับ view ก็ได้เหมือนกัน ถ้าลบไม่ได้ลองลบข้อมูลออกไปก่อนตามวิธี ลบตารางทั้งฐานข้อมูล SQL Server