วิธีการใช้คำสั่ง SHRINKFILE DBCC เพื่อลดขนาดแฟ้มล็อกธุรกรรมใน SQL Server 2005

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 907511 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

บทนำ

ใน Microsoft SQL Server 2005 คุณสามารถลดขนาดแฟ้มล็อกธุรกรรมในฐานข้อมูลและการเอาออกเพจต่าง ๆ ที่ไม่ได้ใช้ โปรแกรมฐานข้อมูลการ reuses ช่องว่างอย่างมีประสิทธิภาพ อย่างไรก็ตาม เมื่อแฟ้มล็อกธุรกรรม grows อย่างกะทันหันคุณอาจต้องการลดขนาดแฟ้มล็อกธุรกรรมด้วยตนเอง

บทความนี้อธิบายวิธีการใช้คำสั่ง SHRINKFILE DBCC เพื่อลดขนาดแฟ้มล็อกธุรกรรมภายใต้รูปแบบจำลองการกู้คืนข้อมูลทั้งหมดในฐานข้อมูล SQL Server 2005 ด้วยตนเอง วิธีการที่คุณใช้เพื่อลดขนาดแฟ้มล็อกธุรกรรมใน SQL Server 2005 อาจแตกต่างจากวิธีการที่คุณใช้เพื่อลดขนาดแฟ้มล็อกธุรกรรมใน SQL Server 2000สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการลดขนาดแฟ้มล็อกธุรกรรมใน SQL Server 2000 คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
272318ลดขนาดแฟ้มบันทึกของธุรกรรมใน SQL Server 2000 ด้วย DBCC SHRINKFILE

ข้อมูลเพิ่มเติม

ใน SQL Server 2005 การดำเนินการย่อขนาด (DBCC SHRINKFILE) พยายามจะลดขนาดแฟ้มล็อกธุรกรรมที่ระบุขนาดที่ร้องขอในทันที เมื่อต้องการลดขนาดแฟ้มล็อกธุรกรรมภายใต้รูปแบบจำลองการกู้คืนข้อมูลเต็มรูปแบบด้วยตนเอง ก่อนสำรองแฟ้มล็อกธุรกรรม แล้ว ใช้คำสั่ง SHRINKFILE DBCC เพื่อลดขนาดแฟ้มล็อกธุรกรรม

โดยทั่วไป การลดขนาดแฟ้มล็อกธุรกรรมใน SQL Server 2005 ได้เร็วกว่าการลดขนาดแฟ้มล็อกธุรกรรมใน SQL Server 2000 เหตุผลมีสร้างตัวจัดการแฟ้มบันทึกของ SQL Server 2005 หรือ reuses ไฟล์บันทึกเสมือนที่ไม่ได้ใช้งานตามใบสั่งการจัดเก็บดิสก์ทางกายภาพ ดังนั้น ส่วนที่ไม่ทำงานของแฟ้มล็อกธุรกรรมได้โดยปกติเมื่อสิ้นสุดของแฟ้ม

ตัวอย่างเช่น แฟ้มล็อกธุรกรรมอาจมีไฟล์บันทึกเสมือน 100 และแฟ้มล็อกเสมือน 2 เท่านั้นที่จะใช้ sql Server 2000 อาจเก็บแรกใช้เสมือนล็อกไฟล์เมื่อเริ่มต้นแฟ้มล็อกธุรกรรม และวินาทีที่ใช้แฟ้มบันทึกเสมือนในกึ่งกลางของแฟ้มล็อกธุรกรรม เมื่อต้องการลดขนาดแฟ้มล็อกธุรกรรมให้กับแฟ้มบันทึกเสมือนเพียง 2, SQL Server กรอกข้อมูลส่วนที่เหลือของแฟ้มสองของล็อกเสมือน โดยใช้รายการล็อก dummy SQL Server moves the start of the logical log to the next available virtual log file that is specified by the log manager. The log manager may create a virtual log file in the middle of the transaction log file just ahead of the last active virtual log file. In that case, you have to use multiple log backup operations and multiple shrink operations to successfully shrink the transaction log file to 2 virtual log files. In the worst case of this example, you may have to use 50 log backup operations and 50 shrink operations to successfully shrink the transaction log file to 2 virtual log files.

However, in SQL Server 2005, you can perform one DBCC SHRINKFILE statement to shrink the transaction log file immediately to 2 virtual log files. You can do this because the SQL Server 2005 log manager creates 2 virtual log files by following the physical disk storage order. Both of these virtual log files are at the start of the transaction log file.

When you try to shrink a transaction log file that has little free space in SQL Server 2005, you may have to perform an additional log backup operation. The additional log backup operation truncates the transaction log file to a smaller size. This log backup operation is in addition to the three steps that you perform to shrink the transaction log file in SQL Server 2000. For more information, see the Microsoft Knowledge Base article that is mentioned in the "Introduction" section. To shrink a transaction log file that has little free space in SQL Server 2005, follow these steps:
  1. Back up the transaction log file to make most of the active virtual log files inactive. Therefore, the inactive virtual log files can be removed in a later step. To do this, run a Transact-SQL statement that is similar to the following Transact-SQL statement.
    BACKUP LOG <DatabaseName> TO DISK = '<BackupFile>'
    หมายเหตุ:ในคำสั่งนี้<databasename></databasename>is a placeholder for the name of the database that you are backing up. ในคำสั่งนี้<backupfile></backupfile>is a placeholder for the full path of the backup file.

    For example, run the following Transact-SQL statement.
    BACKUP LOG TestDB TO DISK='C:\TestDB1.bak'
  2. Shrink the transaction log file. To do this, run a Transact-SQL statement that is similar to the following Transact-SQL statement.
    DBCC SHRINKFILE (<FileName>, <TargetSize>) WITH NO_INFOMSGS
    หมายเหตุ:ในคำสั่งนี้<filename></filename>is a placeholder for the name of the transaction log file. ในคำสั่งนี้<targetsize></targetsize>is a placeholder for the target size that you want the transaction log file to be. The target size must be reasonable. For example, you cannot shrink the transaction log file to a size that is less than 2 virtual log files.
  3. If the DBCC SHRINKFILE statement does not shrink the transaction log file to the target size, run the BACKUP LOG statement that is mentioned in step 1 to make more of the virtual log files inactive.
  4. Run the DBCC SHRINKFILE statement that is mentioned in step 2. After this operation, the transaction log file should be similar to the target size.
In summary, the log manager's algorithm for picking up the next virtual log file changed in SQL Server 2005. Therefore, shrinking the transaction log file in SQL Server 2005 may differ from shrinking the transaction log file in SQL Server 2000:
  • If a log file has lots of free space, shrinking the transaction log file in SQL Server 2005 is faster than shrinking the transaction log file in SQL Server 2000.
  • If a log file has no free space, shrinking the transaction log file in SQL Server 2005 is the same as shrinking the transaction log file in SQL Server 2000.
  • If a log file has little free space, you may have to perform an additional log backup operation in SQL Server 2005 than you have to perform in SQL Server 2000.

ข้อมูลอ้างอิง

For more information, see the following topics in SQL Server 2005 Books Online:
  • Shrinking the transaction log
  • DBCC SHRINKFILE (Transact-SQL)
  • Truncating the transaction log

คุณสมบัติ

หมายเลขบทความ (Article ID): 907511 - รีวิวครั้งสุดท้าย: 17 กันยายน 2554 - Revision: 3.0
ใช้กับ
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL 2005 Server Workgroup
Keywords: 
kbsql2005engine kbinfo kbmt KB907511 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:907511

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com