ฉันมีฐานข้อมูล dev SQL Server 2005 ที่เป็นสำเนา 30GB เราได้ลบข้อมูลบางส่วนที่ไม่ต้องการใน dev ซึ่งนำพื้นที่ไฟล์ข้อมูลที่ใช้ไปถึง 20GB ดังนั้นเราจึงไม่ได้ใช้ประมาณ 33%
ฉันต้องการเรียกคืนพื้นที่ซึ่งจะช่วยให้เรามีฐานข้อมูล dev ที่สองบนเซิร์ฟเวอร์ (ขึ้นอยู่กับรุ่นที่ตัดลง); อย่างไรก็ตามฉันไม่สามารถเรียกคืนพื้นที่ได้ฉันได้ทำสิ่งต่อไปนี้แล้ว:
ขนาดเริ่มต้นของไฟล์
SMS2_Data
คือ 30GBDBCC SHRINKFILE (N'SMS2_Data' , 0, TRUNCATEONLY)
ติดตามโดย
DBCC SHRINKFILE (N'SMS2_Data' , 19500)
ไม่มีความสุข ฉันได้ลองทำสำเนาสำรองสร้างฐานข้อมูลใหม่ที่มีขนาดเริ่มต้นต่ำแล้วกู้คืนไม่มีความสุขเมื่อขนาดเริ่มต้นถูกเขียนทับ ได้ลองแล้ว:
ALTER DATABASE SMS2HazSub MODIFY FILE (NAME = 'SMS2_Data', SIZE = 20000)
ข้อผิดพลาดนี้บอกว่า:
ไฟล์ MODIFY ล้มเหลว ขนาดที่ระบุน้อยกว่าขนาดปัจจุบัน
ฉันลอง 20,800 และจากนั้นก็ขึ้นไปเรื่อย ๆ จนถึง 29000 (29GB) และมันจะไม่ยอมให้ฉันเปลี่ยน
เสร็จสิ้นการย่อแล้วเปลี่ยนโหมดการกู้คืนจากFULL
ไปSIMPLE
และกลับมาอีกครั้ง ไม่มีความสุข
ฉันคิดว่ามันเกี่ยวข้องกับบางTEXT
สาขา เรามีประมาณ 6 ในระบบ ดังนั้นในการทดสอบฉันปล่อยมันทั้งหมดแล้วย่อขนาดของไฟล์และยังคงไม่เปลี่ยนแปลง
ตัวเลือกเดียวที่เหลือคือการนำเข้าข้อมูลไปยังฐานข้อมูลอื่น สิ่งนี้ไม่สามารถนำไปใช้ประโยชน์ได้จริงเพราะจะต้องทำในฐานข้อมูลสดซึ่งมีความเสี่ยงมากเกินไป เราคว้าสำเนาของฐานข้อมูลสดและเขียนทับ dev / test แบบกึ่งประจำ เรามีบางอย่างเช่น 500 ตาราง ฉันต้องการวิธีการที่จะไม่มีความเสี่ยงในการส่งออกข้อมูลไปยังฐานข้อมูลใหม่
ฉันพยายามย้ายข้อมูลไปยังไฟล์อื่นและคัดลอกทั้งหมดยกเว้น 5% ของข้อมูล นี่คือสิ่งที่ทำให้ฉันลองและวางคอลัมน์ข้อความทั้งหมด
เซิร์ฟเวอร์อยู่ในโหมดความเข้ากันได้ 90 แต่เป็น SP2 ตอนนี้ฉันได้ทำ 3 ครั้งต่อไปนี้: ทำดัชนีตารางทั้งหมดฐานข้อมูลสำรองไฟล์ย่อขนาดลดขนาดฐานข้อมูล ยังไม่มีความสุข
EXECUTE sp_spaceused
ผลตอบแทน:
database_name database_size unallocated space
SMS2Tests 31453.94 MB 13903.16 MB
reserved data index_size unused
16545568 KB 10602264 KB 4254360 KB 1688944 KB