ฉันไม่ใช่ DBA แต่สิ่งต่าง ๆ ที่เป็นอยู่ฉันต้องสวมหมวก DBA และตั้งค่าแผนการบำรุงรักษาบนอินสแตนซ์ SQL Server ของฉัน
ดังนั้นในขณะที่ฉันได้รับการมีกระบวนการในชั่วข้ามคืน SSIS ของฉันทำงานดำเนินงาน SQLเพื่อดำเนินการสำรองข้อมูล - พื้นทำงานเพื่อให้แน่ใจว่าปลายทางโฟลเดอร์ที่มีอยู่แล้วmaster.dbo.xp_create_subdir
BACKUP DATABASE [DbName] TO DISK = 'G:\Backups\DbName\DbName.bak' WITH INIT
เมื่อใดก็ตามที่งานนั้นล้มเหลวส่วนที่เหลือของกระบวนการจะยกเลิกและฉันจะได้รับการแจ้งเตือนและจะเข้ามาในเช้าวันรุ่งขึ้นเพื่อสังเกตว่าไดรฟ์สำหรับบันทึกการทำธุรกรรมนั้นเต็มไปด้วยความจุและดังนั้นฉันจึงตัดทอน .. จนกระทั่งเรื่องราวซ้ำไปซ้ำมาและบันทึกการทำธุรกรรมเกินพื้นที่ว่างในดิสก์อีกครั้ง
สคริปต์ "manual truncate" มีลักษณะดังนี้:
use Staging; alter database Staging set recovery simple alter database Staging set recovery full dbcc shrinkfile ('Staging_log', 0, truncateonly); go
ดังนั้นฉันเริ่มเบื่อกับสิ่งนี้และฉันตัดสินใจที่จะลองทำสิ่งต่าง ๆ ให้ถูกต้องและทำตามขั้นตอนที่นี่และสร้างแผนการบำรุงรักษาจริง:
สิ่งที่ฉันไม่เคยทำมาก่อนดังนั้นฉันมีคำถามสองสามข้อ:
- จะสำรองข้อมูลบันทึกธุรกรรมเช่นนี้โดยอัตโนมัติหรือไม่?
- การเรียกใช้ข้อมูลและการสำรองข้อมูลบันทึกธุรกรรมพร้อมกันหรือไม่ ถ้าไม่เช่นนั้นวิธีที่เหมาะสมในการทำเช่นนี้คืออะไร?
- มีการรับไฟล์สำรองข้อมูลข้ามคืนโดยกระบวนการอื่นที่คว้าไฟล์ทั้งหมดบนเซิร์ฟเวอร์และเก็บไว้ที่อื่น - เป็นความคิดที่ดีไหมที่จะหมดอายุชุดข้อมูลสำรองหลังจาก 2 วัน? ฉันต้องทำให้มันหมดอายุหรือเปล่า?
- งานล้างตามลำดับลบ "เก่า" บากและไฟล์ .trn
G:\Backups
ภายใต้โฟลเดอร์ย่อยของ มันสมเหตุสมผลไหม - การทำเช่นนี้จะดีกว่าไหมใน SSIS ดังนั้นฉันสามารถ ETL ของฉันล้มเหลวได้หาก / เมื่อการสำรองข้อมูลล้มเหลว หรือกระบวนการ ETL ของฉันควรดูแลด้วยหรือไม่
ขออภัยถ้านี่เป็นคำถามที่มากเกินไปสำหรับหนึ่งโพสต์หากจำเป็นฉันจะแก้ไขและถามคำถามหลายข้อแทน - ฉันคิดว่าพวกเขาทั้งหมดเกี่ยวข้องกันอย่างแน่นหนา