ทำไมเราถึงใช้ FILE = 1 ในสคริปต์เพื่อกู้คืนฐานข้อมูล


13

เมื่อเร็ว ๆ นี้เมื่อฉันเจอสคริปต์เพื่อกู้คืนฐานข้อมูลฉันสงสัยว่าทำไมเราต้องใช้ " FILE = 1 "? เราไม่สามารถกู้คืนฐานข้อมูลโดยไม่มีคำสั่งนั้นได้หรือไม่! โดยพื้นฐานแล้วมันใช้ทำอะไร?

คำตอบ:


22

คุณได้รับอนุญาตให้บันทึกข้อมูลสำรองมากกว่าหนึ่งไฟล์ในไฟล์สำรองข้อมูล (เช่นอุปกรณ์) 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;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.