เมื่อเร็ว ๆ นี้เมื่อฉันเจอสคริปต์เพื่อกู้คืนฐานข้อมูลฉันสงสัยว่าทำไมเราต้องใช้ " FILE = 1 "? เราไม่สามารถกู้คืนฐานข้อมูลโดยไม่มีคำสั่งนั้นได้หรือไม่! โดยพื้นฐานแล้วมันใช้ทำอะไร?
เมื่อเร็ว ๆ นี้เมื่อฉันเจอสคริปต์เพื่อกู้คืนฐานข้อมูลฉันสงสัยว่าทำไมเราต้องใช้ " FILE = 1 "? เราไม่สามารถกู้คืนฐานข้อมูลโดยไม่มีคำสั่งนั้นได้หรือไม่! โดยพื้นฐานแล้วมันใช้ทำอะไร?
คำตอบ:
คุณได้รับอนุญาตให้บันทึกข้อมูลสำรองมากกว่าหนึ่งไฟล์ในไฟล์สำรองข้อมูล (เช่นอุปกรณ์) FILE
ข้อช่วยให้คุณเข้าถึงดำเนินการสำรองข้อมูลโดยเฉพาะอย่างยิ่งเมื่อมีหลายให้เลือกจากภายใน.bak
ไฟล์
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกต่างๆของการคืนค่าคำสั่งโปรดดูเอกสาร MSDN ต่อไปนี้สำหรับการคืนค่าอาร์กิวเมนต์
หากคุณดูในส่วนตัวเลือกชุดสำรองข้อมูลคุณจะพบ:
FILE = { backup_set_file_number | @ backup_set_file_number }
ระบุชุดข้อมูลสำรองที่จะกู้คืน ยกตัวอย่างเช่นbackup_set_file_numberของ1บ่งชี้ว่าชุดการสำรองข้อมูลครั้งแรกในสื่อสำรองข้อมูลและbackup_set_file_numberของ2บ่งชี้ว่าชุดการสำรองข้อมูลที่สอง คุณสามารถขอรับbackup_set_file_numberของชุดการสำรองข้อมูลโดยใช้คำสั่ง RESTORE HEADERONLY
เมื่อไม่ได้ระบุค่าเริ่มต้นคือ 1 ยกเว้น RESTORE HEADERONLY ซึ่งในกรณีนี้ชุดการสำรองข้อมูลทั้งหมดในชุดสื่อจะถูกประมวลผล สำหรับข้อมูลเพิ่มเติมโปรดดู "การระบุชุดข้อมูลสำรอง" ในหัวข้อนี้
สิ่งสำคัญ
ตัวเลือก FILE นี้ไม่เกี่ยวข้องกับตัวเลือก FILE สำหรับการระบุไฟล์ฐานข้อมูล FILE = { logical_file_name_in_backup | @ logical_file_name_in_backup_var }
ใช่คุณควรจะสามารถเรียกคืนได้โดยไม่ต้องFILE = 1
เป็น1
ล่ะค่ะเริ่มต้น และหากคุณมีชุดการสำรองข้อมูลเพียงชุดเดียวในไฟล์สำรองข้อมูลก็ไม่น่าจะมีปัญหา
ตัวอย่างที่จะช่วยแสดงให้เห็นเมื่อคุณจะใช้FILE
ตัวเลือกต่อไปนี้คือตัวอย่าง Bจากหน้าคำสั่ง RESTORE MSDN (ลิงก์ด้านบน) มันแสดงให้เห็นว่าการคืนค่าสองไฟล์จากไฟล์สำรองข้อมูลเดียวRESTORE
คือครั้งแรกคือการสำรองข้อมูลเต็มรูปแบบและครั้งที่สองRESTORE
เป็นการสำรองข้อมูลที่ต่างกัน
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE = 6
NORECOVERY;
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE = 9
RECOVERY;