ฉันจะตัดทอนบันทึกธุรกรรมในฐานข้อมูล SQL Server 2008 ได้อย่างไร


9

ฉันจะตัดทอนบันทึกธุรกรรมในฐานข้อมูล SQL Server 2008 ได้อย่างไร

อะไรคือวิธีที่ดีที่สุดที่เป็นไปได้?

ฉันลองสิ่งนี้จากบล็อกดังนี้:

1) จากฐานข้อมูลการตั้งค่าไปจนถึงการกู้คืนอย่างง่ายการลดขนาดไฟล์และตั้งค่าอีกครั้งในการกู้คืนแบบเต็มคุณจะสูญเสียข้อมูลบันทึกที่มีค่าของคุณและจะไม่สามารถกู้คืนจุดได้ทันเวลา ไม่เพียงแค่นั้นคุณจะไม่สามารถใช้ไฟล์บันทึกที่ตามมาได้อีกด้วย

2) ลดขนาดไฟล์ฐานข้อมูลหรือฐานข้อมูลเพิ่มการกระจายตัว

มีหลายสิ่งที่คุณสามารถทำได้ ก่อนอื่นให้เริ่มต้นการสำรองข้อมูลบันทึกอย่างเหมาะสมโดยใช้คำสั่งต่อไปนี้แทนการตัดทอนข้อมูลเหล่านั้นและทำให้ข้อมูลสูญหายบ่อยครั้ง

BACKUP LOG [TestDb] TO  DISK = N'C:\Backup\TestDb.bak'
GO

ลบรหัสของการหดไฟล์ หากคุณทำการสำรองข้อมูลแฟ้มบันทึกที่เหมาะสมโดยปกติแล้วไฟล์บันทึกของคุณ (โดยปกติจะยกเว้นกรณีพิเศษ) จะไม่ใหญ่มาก


2
ตกลงและเกิดอะไรขึ้นเมื่อคุณลองมัน

คำตอบ:


4

วิธีที่ปลอดภัยและถูกต้องในการตัดทอนไฟล์บันทึกหากฐานข้อมูลอยู่ในโหมดการกู้คืนแบบเต็มจะทำการสำรองข้อมูลล็อกธุรกรรม (โดยไม่ต้องTRUNCATE_ONLYนี่จะเป็นการเลิกใช้ในรุ่นอนาคตและไม่แนะนำให้ทำ)

ดูเหมือนว่าคุณต้องการลดขนาดไฟล์บันทึกของคุณในภายหลังซึ่งในกรณีนี้คุณจะเรียกใช้DBCC SHRINKFILE(yourTLogName)คำสั่ง มีพารามิเตอร์ตัวเลือกที่สองสำหรับขนาดที่ร้องขอเพื่อย่อให้เป็น


8

คุณสามารถสำรองข้อมูลบันทึกไปยังอุปกรณ์ null:

backup log [databasename] to disk = 'nul';

หรือคุณสามารถเปลี่ยนรูปแบบการกู้คืนเป็นแบบง่าย ๆ จากนั้นกลับไปเป็นแบบเต็มจำนวนมาก


ฉันได้ +1 สิ่งนี้เพราะนี่เป็นเครื่องมือในกล่องเครื่องมือ dbas และคำตอบของคุณไม่ควรได้รับคะแนนโหวตติดลบฉันคิดว่า ฉันเห็นด้วยกับความเชื่อมั่นว่าวิธีที่ดีที่สุดคือใช้การสำรองข้อมูล transactionlog แต่เฮ้เครื่องมือที่ดีทั้งหมดสามารถใช้ในวิธีที่ถูกต้องหรือในทางที่ไม่ดี
Martin Sjöberg

6

หากคุณไม่สนใจเกี่ยวกับข้อมูลบันทึกของคุณและเพียงแค่ต้องการกำจัดมัน:

เปลี่ยนรูปแบบการกู้คืนจากเต็มเป็นแบบธรรมดาจากนั้นกลับเป็นเต็ม ย่อขนาดไฟล์โดยใช้DBCC SHRINKFILEด้วยอาร์กิวเมนต์ TRUNCATEONLY

คำสั่งต่อไปนี้จะเปลี่ยนรูปแบบการกู้คืนจากเต็มเป็นแบบง่าย

ALTER DATABASE <databse_name> SET RECOVERY SIMPLE

คำสั่งต่อไปนี้จะเปลี่ยนรูปแบบการกู้คืนเต็ม

ALTER DATABASE <databse_name> SET RECOVERY FULL

เพื่อค้นหาชื่อของไฟล์บันทึกคุณสามารถใช้แบบสอบถามต่อไปนี้

SELECT name 
FROM sys.master_files
WHERE database_id = DB_ID('<databse_name>')

ย่อขนาดไฟล์

DBCC SHRINKFILE (N'<logical_file_name_of_the_log>' , 0, TRUNCATEONLY)

ดูคำสั่งตัดทอนไฟล์บันทึกของ SQL Server คืออะไร สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.