วิธีการลดขนาดฐานข้อมูล tempdb ใน SQL Server

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

เนื้อหาบนหน้านี้

สรุป

บทความนี้อธิบายวิธีการต่าง ๆ ที่คุณสามารถใช้เพื่อลดขนาดฐานข้อมูล tempdb ใน Microsoft SQL Server ก่อนที่คุณลดขนาดฐานข้อมูล tempdb โดยใช้วิธีการต่าง ๆ ที่อธิบายไว้ในบทความนี้ โปรดระวังต่อไปนี้:
  • ขนาด tempdb ถูกรีเซ็ตเป็นขนาดกำหนดไว้ล่าสุด (นั่นคือ ขนาดเริ่มต้นหรือขนาดล่าสุดที่ถูกตั้งค่า โดยใช้การดัดแปลงฐานข้อมูล) หลังจากเริ่มการทำงานแต่ละครั้ง ดังนั้น ยกเว้นว่าคุณจำเป็นต้องใช้ค่าที่แตกต่างกัน หรือขอรับ respite ในทันที ไม่ได้ใช้ของขั้นตอนที่มีในบทความนี้ คุณสามารถรอการรีสตาร์ทครั้งถัดไปของบริการ SQL Server เมื่อต้องการลดขนาด ขนาดฐานข้อมูล tempdb ที่ใหญ่ขึ้นจะไม่ส่งผลกระทบประสิทธิภาพการทำงานของ SQL Server
  • ใน SQL Server 2005 และรุ่นที่ใหม่กว่า ลดขนาดฐานข้อมูล tempdb จะไม่แตกต่างจากการลดขนาดฐานข้อมูลผู้ใช้ยกเว้นสำหรับข้อเท็จจริง tempdb ที่ตั้งค่าเป็นขนาดที่ตั้งค่าคอนฟิกหลังจากเริ่มการทำงานแต่ละอินสแตนซ์ของ SQL Server
  • เป็นการปลอดภัยที่จะทำงานได้ลดขนาดใน tempdb tempdb กิจกรรมอยู่อย่างต่อเนื่อง อย่างไรก็ตาม คุณอาจพบข้อผิดพลาดอื่น ๆ เช่นการบล็อค หยุดชะงัก และอื่น ๆ ที่สามารถป้องกันไม่ให้ลดขนาดให้เสร็จสมบูรณ์ ดังนั้น เพื่อที่จะตรวจสอบให้แน่ใจว่า จะสำเร็จการย่อขนาดของ tempdb เราขอแนะนำให้ คุณทำเช่นนี้ในขณะที่เซิร์ฟเวอร์อยู่ ในโหมดผู้ใช้คนเดียว หรือคุณได้หยุดกิจกรรม tempdb ทั้งหมด

ข้อมูล Tempdb

ฐานข้อมูล tempdb เป็นพื้นที่ทำงานชั่วคราว SQL Server ใช้ tempdb ทำงานได้ ระหว่างงานเหล่านั้นมีดังนี้:
  • จัดเก็บข้อมูลของตารางชั่วคราวที่สร้างขึ้นอย่างชัดเจน
  • Worktables ที่เก็บผลลัพธ์ของระดับกลางที่สร้างขึ้นในระหว่างการประมวลผล และการเรียงลำดับแบบสอบถาม
  • Materialized เคอร์เซอร์แบบคง
  • เก็บรุ่นเรกคอร์ดเมื่อใช้ระดับการแยกสแนปช็อตหรือระดับการแยกสแนปช็อตมุ่งมั่นอ่าน
SQL Server จะบันทึกเฉพาะข้อมูลเพียงพอในล็อกธุรกรรม tempdb เพื่อย้อนกลับธุรกรรม แต่ไม่ใช่ กับทำธุรกรรมระหว่างการกู้คืนฐานข้อมูล คุณลักษณะนี้ช่วยเพิ่มประสิทธิภาพการทำงานของคำสั่งที่แทรกใน tempdb นอกจากนี้ คุณไม่มีการบันทึกข้อมูลการทำซ้ำธุรกรรมใด ๆ เนื่องจาก tempdb ถูกสร้างขึ้นทุกครั้งที่คุณเริ่มต้น SQL Server อีกครั้ง ดังนั้น มีไม่มีธุรกรรม การย้อนไปข้างหน้า หรือย้อนกลับ เมื่อเริ่มต้น SQL Server, tempdb ถูกสร้างขึ้นใหม่อีกครั้ง โดยใช้สำเนาของฐานข้อมูลแบบจำลอง และ tempdb ถูกรีเซ็ตเป็นขนาดที่กำหนดไว้ล่าสุด ขนาดกำหนดไว้เป็นขนาดถ้อยคำสุดท้ายที่ถูกตั้งค่า โดยใช้การดำเนินการเช่นการดัดแปลงฐานข้อมูลที่ใช้ตัวปรับเปลี่ยนแฟ้มหรือคำสั่งDBCC SHRINKFILEการเปลี่ยนขนาดแฟ้ม

โดยค่าเริ่มต้น ฐานข้อมูล tempdb ถูกกำหนดค่าให้ขยายอัตโนมัติตามความจำเป็น ดังนั้น ฐานข้อมูลนี้อาจโดยไม่คาดคิดเติบโตในเวลาให้มีขนาดใหญ่กว่าขนาดที่ต้องการ เริ่มการทำงานอย่างง่ายของ SQL Server ตั้งค่าขนาดของ tempdb เป็นขนาดที่กำหนดไว้ล่าสุด

ใน SQL Server 2005 และรุ่นที่ใหม่กว่า คุณสามารถใช้หนึ่งในวิธีต่อไปนี้เพื่อเปลี่ยนขนาดของ tempdb

ยุบตารางนี้ขยายตารางนี้
วิธีการต้องเริ่มใหม่หรือไม่ข้อมูลเพิ่มเติม
ดัดแปลงฐานข้อมูลใช่ให้ตัวควบคุมกับขนาดของแฟ้มเริ่มต้น tempdb (tempdev และ templog) ให้เสร็จสมบูรณ์
DBCC SHRINKDATABASEไม่ใช่ทำงานภายในระดับของฐานข้อมูล
DBCC SHRINKFILEไม่ใช่ช่วยให้คุณสามารถลดขนาดแฟ้มแต่ละแฟ้ม
Studio จัดการของเซิร์ฟเวอร์ SQLไม่ใช่นี้โดยมูลฐานแล้วเป็นวิธีการลดขนาดแฟ้มฐานข้อมูลที่ผ่านการ GUI

หมายเหตุ Studio จัดการของ SQL Server ใน SQL Server 2005 แสดงขนาดของแฟ้ม tempdb ถูกต้องหลังจากการดำเนินการย่อขนาด ค่า "อยู่ในขณะนี้พื้นที่ที่จัดสรร" จะถูกดึงมาจาก sys.master_files DMV เสมอ และค่านี้ไม่ได้รับการปรับปรุงหลังจากการดำเนินการย่อขนาดเกิดขึ้นสำหรับฐานข้อมูล tempdb การค้นหาขนาดของแฟ้ม tempdb ถูกต้องหลังจากการดำเนินการย่อขนาด ดำเนินการคำสั่งต่อไปนี้ใน Studio จัดการของเซิร์ฟเวอร์ SQL:

use tempdb

select (size*8) as FileSizeKB from sys.database_files
วิธีการสามอันดับแรกมีการกล่าวถึงที่นี่

หมายเหตุ สำหรับการติดตั้ง SQL Server 2000 คุณจะต้องใช้ตัววิเคราะห์คำถาม SQL Studio จัดการของเซิร์ฟเวอร์ คำสั่ง DBCC จะต้องให้คุณย้ายฐานข้อมูลในโหมดผู้ใช้คนเดียว

คุณสามารถใช้วิธีการสามวิธีดังต่อไปนี้เพื่อลดขนาด tempdb ให้มีขนาดที่เล็กกว่าขนาดที่กำหนดไว้

วิธีที่ 1: ใช้คำสั่ง Transact-SQL

วิธีที่ 2: ใช้คำสั่ง DBCC SHRINKDATABASE

วิธีที่ 3: ใช้คำสั่ง DBCC SHRINKFILE

2501 และ 8909 ข้อผิดพลาดเมื่อคุณเรียกใช้การดำเนินการย่อขนาด

ถ้าคุณกำลังใช้ tempdb และ ถ้าคุณพยายามที่จะลดขนาดได้ โดยใช้คำสั่งDBCC SHRINKDATABASEหรือDBCC SHRINKFILEคุณอาจได้รับข้อความที่คล้ายกับต่อไปนี้ ขึ้นอยู่กับรุ่นของ SQL Server ที่คุณกำลังใช้:

SQL Server 2005 และรุ่นที่ใหม่กว่า

เซิร์ฟเวอร์: ข่าวสารเกี่ยวกับ 8909 ระดับ 16 สถานะ 1 บรรทัด 1 ตารางข้อผิดพลาด: รหัสออบเจ็กต์ 0 ดัชนี ID -1, 0 รหัสหน่วย%การปันส่วน 0 (ชนิดที่ไม่รู้จัก) ID การแบ่งพาร์ติชัน รหัสหน้าไม่ถูกต้องในส่วนหัวของหน้าประกอบด้วย ID ของหน้า (6:8040) การ PageId ในส่วนหัวของหน้า = (0:0)

SQL Server 2000
เซิร์ฟเวอร์: ข่าวสารเกี่ยวกับ 2501 ระดับ 16 สถานะ 1 บรรทัดที่ 1 อาจไม่พบตารางที่มีชื่อว่า '1525580473' ตรวจสอบ sysobjects หรือไม่

เซิร์ฟเวอร์: ข่าวสารเกี่ยวกับ 8909 ระดับ 16 สถานะ 1 บรรทัด 0 ตารางทำให้เสียหาย: วัตถุ ID 1, ID ดัชนี 0 หน้าหมายเลข% S_PGID การ PageId ในส่วนหัวของหน้า =% S_PGID



หมายเหตุ
  • ข้อผิดพลาดเหล่านี้ระบุว่า ความเสียหายที่แท้จริงใน tempdb อย่างไรก็ตาม โปรดทราบว่า อาจมีสาเหตุอื่น ๆ สำหรับข้อผิดพลาดความเสียหายของข้อมูลที่มีอยู่จริงเช่นข้อผิดพลาด 8909 และว่า เหตุผลเหล่านั้นมีปัญหาระบบย่อย I/O ดังนั้น ถ้าเกิดข้อผิดพลาดภายนอกการดำเนินการย่อขนาด คุณควรทำการตรวจสอบเพิ่มเติม
  • ใน SQL Server 2005 และรุ่นที่ใหม่กว่า ถึงแม้ว่าข้อความ 8909 จะถูกส่งกลับ ไปยังโปรแกรมประยุกต์ หรือผู้ใช้ที่กำลังดำเนินการการดำเนินการย่อขนาด การดำเนินการย่อขนาดจะไม่ล้มเหลว
  • ใน SQL Server 2000 และรุ่นก่อนหน้านี้ ข้อผิดพลาดเหล่านี้จะทำให้เกิดการลดขนาดการดำเนินงานล้มเหลว ดังนั้น เพื่อลดขนาดฐานข้อมูล tempdb คุณจะต้องเริ่มการทำงานของเซิร์ฟเวอร์ SQL tempdb ที่สร้างใหม่ สำหรับข้อมูลเพิ่มเติม คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
    277848 ข้อผิดพลาดข้อความ "เสียวัตถุรหัสตาราง 0, ID ดัชนี 0, ID ของหน้า" เกิดขึ้นเมื่อคุณเรียกใช้การ DBCC DBREINDEX ใน SQL Server


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

คุณสมบัติ

หมายเลขบทความ (Article ID): 307487 - รีวิวครั้งสุดท้าย: 30 เมษายน 2557 - Revision: 6.1
ใช้กับ
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Parallel Data Warehouse
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Web
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Parallel Data Warehouse
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
Keywords: 
kbsqlsetup kbhowtomaster kbmt KB307487 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:307487

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

 

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