ดิสก์ระบบมีเนื้อที่ไม่เพียงพอเมื่อเรียกใช้แบบสอบถาม SQL จำนวนมากใน SQL Server 2012


14

ฉันค่อนข้างใหม่กับ SQL Server 2012 ฉันจะขอบคุณถ้ามีคนช่วย ฉันกู้คืนสำเนาของฐานข้อมูลขนาดใหญ่เป็น SQL Server 2012 และฉันพยายามเรียกใช้แบบสอบถามแบบง่าย ๆ

ฉันพยายามเรียกใช้แบบสอบถามแบบใช้เลือกข้อมูลกับตารางของฐานข้อมูล136898115บรรทัด SELECTแบบสอบถามนี้มีWHEREข้อง่าย ๆเท่านั้น ทุกครั้งที่ฉันเรียกใช้คิวรีนี้มันล้มเหลวเพราะดิสก์ของระบบ (พาร์ติชันที่ติดตั้ง Windows - C:\) หมดพื้นที่ (พาร์ติชันนี้มีพื้นที่ว่างเพียง 6GB) และฉันไม่เข้าใจว่าทำไม ฉันกำหนด tempdb ของฉันให้อยู่ในไดรฟ์อื่นซึ่งมีพื้นที่ว่างมากกว่า 14 เทราไบต์ แน่นอนว่าฐานข้อมูลของฉันอยู่ในไดรฟ์อื่นเช่นกัน

อะไรทำให้พาร์ติชั่นระบบของฉันไม่มีที่ว่าง? มันเป็นไฟล์หน้าหรือไม่


2
ฉันกำลังวิ่งออกจากพื้นที่จากระบบที่กำลังเรียกใช้ SSMS แต่มันเป็นเครื่องเดียวกัน ฉันใช้ SSMS บนเซิร์ฟเวอร์ SQL จริง
royv

2
โดยทั่วไปจะไม่แนะนำให้เรียกใช้แอปพลิเคชันอื่น ๆ บนกล่อง SQL Server ( ไม่ใช่ SSMS) ของ Windows หรือตรวจสอบให้แน่ใจว่าการตั้งค่าหน่วยความจำสูงสุดต่ำพอที่จะให้มี RAM เพียงพอ ดูคำตอบของฉันที่นี่: dba.stackexchange.com/a/19776/2718
Jon Seigel

คำตอบ:


12

SSMS ส่งผลลัพธ์แคชไปยังไดรฟ์ C: โดยค่าเริ่มต้น ไปที่ Tool \ Options ดูเอกสารแนบ. เปลี่ยนเป็นไดรฟ์ข้อมูลอื่นที่มีพื้นที่เก็บข้อมูลเพิ่มขึ้น

ป้อนคำอธิบายรูปภาพที่นี่


1
หากคุณเลือกผลลัพธ์เป็นไฟล์นั่นคือที่กล่องโต้ตอบบันทึกเป็นจะเปิดขึ้นตามค่าเริ่มต้น ฉันไม่คิดว่า SSMS จะบันทึกผลการตั้งค่าเป็นดิสก์ตามค่าเริ่มต้น แต่อาจผิด
Jon Seigel

1
ผลลัพธ์ที่คุณได้รับในหน้าต่างแบบสอบถามของคุณจะถูกแคชต่อโพสต์ของฉัน ตรวจสอบไดรฟ์ของคุณเรียกใช้คิวรีขนาดใหญ่ใน SSMS และตรวจสอบอีกครั้ง คุณจะเห็นพื้นที่จัดเก็บข้อมูลสูญหายในไดรฟ์ C: หากคุณไม่ได้ระบุเป็นอย่างอื่น
Eric Higgins

1
นั่นเป็นเรื่องจริง มันไม่เกี่ยวข้องกับไฟล์หน้าของฉัน ฉันย้ายไฟล์หน้าไปยังไดรฟ์อื่นและไดรฟ์ C: ของฉันไม่มีพื้นที่เหลือ
royv

11

โอเคฉันคิดออกแล้ว: เอริคกับฉันถูกทั้งคู่!

  • เส้นทางในกล่องโต้ตอบเป็นอย่างที่ฉันพูดเพียงเส้นทางเริ่มต้นสำหรับการบันทึกผลลัพธ์แบบสอบถาม
  • ผลลัพธ์การสืบค้นถูกแคชไว้ในดิสก์ (ฉันผิด) แต่ในโฟลเดอร์tempของโปรไฟล์ท้องถิ่น( C:\Users\<UserName>\AppData\Local\Tempในกรณีของฉันที่นี่) ฉันตรวจสอบแล้วและดูเหมือนจะไม่มีวิธีที่ชัดเจนในการปิดการแคชนี้

ดังนั้นประเด็นคือ:

  • หลีกเลี่ยงการเรียกใช้ SSMS โดยตรงบนกล่อง SQL
  • อย่าSELECT *มาจากตารางขนาดใหญ่ใน SSMS เว้นแต่ว่าชุดผลลัพธ์จะพอดีกับโฟลเดอร์โปรไฟล์
  • ตรวจสอบให้แน่ใจว่าการตั้งค่าหน่วยความจำสูงสุดของเซิร์ฟเวอร์ SQL ได้รับการกำหนดค่าอย่างถูกต้อง (อาจหรืออาจไม่มีส่วนเกี่ยวข้องกับปัญหานี้เกี่ยวกับการเติบโตของไฟล์หน้า)

7

ฉันเพิ่งประสบปัญหาเดียวกัน หลังจากอ่านคำตอบข้างต้นฉันพบสิ่งต่อไปนี้

เครื่องมือ | ตัวเลือกไม่ใช่คำตอบ Mine ถูกตั้งค่าเป็น Y: ฉันยังได้ดูขณะที่ข้อความค้นหาของฉันวิ่งและพื้นที่บน C: ไดรฟ์พุ่งจาก 2.9GB เป็น 5.04MB (ก่อนที่ฉันจะฆ่าข้อความ)

ดังนั้นฉันคิดว่าอาจเป็นผลการแคช (เนื่องจากมีขนาดใหญ่มากกับทุกแถวที่มี XML จำนวนมาก) ไปยังไดเรกทอรีชั่วคราวซึ่งเป็นสิ่งที่จอนพูด แต่เขาไม่แน่ใจว่าคุณจะเปลี่ยนมันอย่างไร

สิ่งที่ฉันทำเพื่อเปลี่ยนตำแหน่งที่เขียนไฟล์ temp คือการเปิดตัวแปรสภาพแวดล้อมของฉันและแก้ไขตัวแปรผู้ใช้ TEMP และ TMP (ซึ่งทั้งคู่ถูกตั้งค่าเป็น C: \ Temp) เพื่อเขียนไปยัง Z: \ Temp

ฉันสามารถยืนยันได้ว่าหลังจากการเปลี่ยนแปลงนี้ฉันดูแบบสอบถามสร้างไฟล์ที่มีขนาดใหญ่มากในไดเรกทอรี Z: \ Temp ของฉัน


ข้อมูลที่ยอดเยี่ยมเมื่อมีกระบวนการที่คุณต้องทำเพื่อรับการอัพเกรดพื้นที่ HD ของ vm และมีที่เก็บข้อมูลเครือข่ายมากมาย ฉันอยากรู้อยากเห็นว่าถ้าคุณมีปัญหาเครือข่ายคอขวดอัตราการถ่ายโอนไฟล์อาจย้ายนอก c: \ slow การดำเนินการแบบสอบถามของคุณ?
GibralterTop

เมื่อ 3 ปีก่อนและฉันจำไม่ได้ว่าสถานการณ์ตอนนั้นเป็นอย่างไร ตอนนี้ฉันมีแล็ปท็อปที่มี RAM ที่น่าสมเพชและกำลังการประมวลผลซึ่งเป็นอีกเรื่องหนึ่ง ฉันค่อนข้างแน่ใจว่าไดรฟ์ Z: เป็นเพียงไดรฟ์ "ภายในเครื่อง" บน VM ของฉัน ไม่แน่ใจว่าทำไมพวกเขาไม่ติดป้ายกำกับมัน D: หรือ E: แต่ส่วนนั้นอยู่นอกเหนือการควบคุมของฉัน ดังนั้นสำหรับฉันไม่มีปัญหาเครือข่ายจริงๆ
Nick Ryan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.