- ประเด็นมีอยู่ว่าจะทำ backup db ใน SQL Server 2005 บน Windows Server 2003 R2
- โดยใช้ bat file ด้วยคำสั่ง sqlcmd ดังนี้
sqlcmd -Q "backup database mydb to disk='E:\db_bak\%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%_mydb.bak'"
- เมื่อเราเปิด cmd ขึ้นมาแล้วพิมพ์คำสั่งแบบด้านบนนี้ ผลคือ คำสั่งทำงานได้ผลลัพธ์ที่ต้องการ
- ที่นี้เราก็ทำการสร้าง file.bat โดยใช้คำสั่งดังนี้
@echo off
sqlcmd -Q "backup database mydb to disk='E:\db_bak\%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%_mydb.bak'"
- แล้ว add task เข้าไปใน scheduled tasks ของระบบ ตั้งเวลาเรียบร้อยทดสอบ
- อืม พอถึงเวลาเรียก task ทำงาน มันก็เปิด file.bat ขึ้นมาอยู่นะ แล้วก็รันคำสั่ง แต่ผลที่ได้คือ หน้า console มันแสดงคำสั่งนี้ แบบ loop เหมือนประมาณเรา echo คำสั่งนี้แล้ววนลูปแสดงไปเรื่อยๆ แบบนั้นเลย
- งง ทำไมตอนทดสอบก่อนหน้ามันใช้ได้ หว่า แต่พอเพิ่มเข้าไปใน scheduled tasks แล้วมันใช้ไม่ได้หว่า
- ลองเปลี่ยน sqlcmd => sqlcmd.exe ใน bat file เรา แล้วมันได้เฉยเลยแฮะ
@echo offRelated
sqlcmd.exe -Q "backup database mydb to disk='E:\db_bak\%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%_mydb.bak'"
- http://juuier.blogspot.com/2009/06/sqlcmd-utility-in-sql-server.html
- http://juuier.blogspot.com/2009/07/backup-and-restore-mssql-database-by.html
- http://juuier.blogspot.com/2009/05/restore-mssql-database-with-bak-file.html
- http://juuier.blogspot.com/2009/01/backup-all-ms-sql-server-databases.html
อ้างอิง
- มั่วเอา อืมยังไม่ค่อยเข้าใจเหตุและผล หว่า ทำไม การใช้งานใน scheduled tasks ต้องพิมพ์ ชื่อ process แล้วต้องเติม extension .exe ด้วยนะ
No comments:
Post a Comment