Posts Tagged ‘restore’

 

Di Chuyển File Khi Khôi Phục Dữ liệu

Khi bạn cần khôi phục (restore) database từ file backup từ một server khác, sự phân bố file trên server kia có thể khác với server này và khi restore bạn cần lưu ý đến điều đó. Ví dụ, trên server nguồn (server 1) data file nằm ở ổ E: và log file nằm ở ổ F:; trong khi server mà bạn đang restore lên (server 2) không có ổ E: và F: mà thay vào đó data file được chứa ở ổ P: và log file ở ổ Q:. Khi đó lệnh RESTORE thông thường sẽ gây ra thông báo lỗi:

RESTORE FILELISTONLY
FROM DISK='\\Server1\E$\Backup\TestDB.bak' 
--kết quả
--LogicalName	PhysicalName
--TestDB	E:\Data\TestDB.mdf
--TestDB_log	F:\Log\TestDB_log.LDF
 
RESTORE DATABASE TestDB
FROM DISK='\\Server1\E$\Backup\TestDB.bak'


Msg 5133, Level 16, State 1, Line 1
Directory lookup for the file “E:\Data\TestDB.mdf” failed with the operating system error 3(The system cannot find the path specified.).
Msg 3156, Level 16, State 3, Line 1
File ‘TestDB’ cannot be restored to ‘E:\Data\TestDB.mdf’. Use WITH MOVE to identify a valid location for the file.
Msg 5133, Level 16, State 1, Line 1
Directory lookup for the file “F:\Log\TestDB_log.LDF” failed with the operating system error 2(The system cannot find the file specified.).
Msg 3156, Level 16, State 3, Line 1
File ‘TestDB_log’ cannot be restored to ‘F:\Log\TestDB_log.LDF’. Use WITH MOVE to identify a valid location for the file.
Msg 3119, Level 16, State 1, Line 1
Problems were identified while planning for the RESTORE statement. Previous messages provide details.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.

Lỗi dài dòng nhưng tóm lại là nó phàn nàn là không thể restore data file vào ổ E và log file vào ổ F như yêu cầu, và gợi ý dùng “WITH MOVE” để chọn địa điểm khác. Cách khắc phục là bạn đưa lựa chọn “WITH MOVE” vào lệnh RESTORE và cung cấp địa điểm thích hợp:

RESTORE DATABASE TestDB
FROM DISK='\\Server1\E$\Backup\TestDB.bak' 
WITH MOVE 'TestDB' TO 'P:\Data\TestDB.mdf',
MOVE 'TestDB_log' TO 'Q:\Log\TestDB_log.ldf'
Posted on 13/8/2013 by Vũ Huy Tâm | Categories: Database Administration

Xem Thông Tin File Backup

Khi có 1 file database file backup mà bạn muốn xem thông tin file đó chứa nội dung gì, backup của database nào, ngày giờ nào… bạn có thể dùng một số option của lệnh RESTORE mà không cần phải restore toàn bộ database.
1. FILELISTONLY: trả về thông tin các file bao gồm data file và log file của database.

RESTORE FILELISTONLY
FROM  DISK = N'D:\Backup\SomeDB.bak'

Thông thường nếu bạn tạo database mà không có thêm filegroup nào thì database chỉ gồm có 1 data file và 1 log file. Khi bạn tạo thêm filegroup và thêm file vào từng filegroup thì database sẽ xuất hiện thêm nhiều data file.
Các thông tin chính mà lệnh trên trả về bao gồm:
LogicalName: tên logic của file
PhysicalName: tên đầy đủ kèm theo đường dẫn của từng file
Type: loại file, D là Data, L là Log
FileGroupName: tên filegroup mà mỗi file thuộc vào
Size: kích thước của file tại thời điểm được backup

2. HEADERONLY

RESTORE HEADERONLY
FROM  DISK = N'D:\Backup\SomeDB.bak'

Lựa chọn này trả về thông tin ở trong phần header của file backup. Các thông tin chính bao gồm:
DatabaseName: tên của database được tạo từ file backup
BackupStartDate: thời điểm chạy backup
BackupTypeDescription: Kiểu backup (database, differential hay log backup)
ServerName: tên của server mà database được backup

Posted on 28/2/2012 by Vũ Huy Tâm | Categories: Database Administration, Tip & Trick

Lấy Lại Dữ Liệu Sau Khi Xóa

Bạn đã bao giờ nhỡ tay xóa mất một bảng (DROP TABLE) hoặc xóa sạch dữ liệu trong bảng (DELETE) của một database đang hoạt động rất nhộn nhịp, để rồi giật mình nhận ra mình vừa phạm một lỗi tày đình? Mồ hôi vã ra đầm đìa, nghe chuông điện thoại kêu mà giật mình thon thót, đầu óc quay cuồng nghĩ cách ăn nói thế nào cho phải… Hì hì làm cho kịch tính tí, nhưng quả thật những hoàn cảnh tương tự như vậy không phải hiếm. Đối với các DBA thường xuyên phải làm việc trực tiếp trên dữ liệu, những sự cố xảy ra do nhầm lẫn là không tránh khỏi. Rất may SQL Server đã tính đến tình huống này, và cung cấp các phương tiện cần thiết để lấy lại dữ liệu, với điều kiện database phải có những thiết lập đúng đắn từ trước. … đọc tiếp »

Posted on 7/12/2010 by Vũ Huy Tâm | Categories: Database Administration

Một Ví Dụ Sao Lưu/Khôi Phục Dữ Liệu

Tiếp theo bài “Các Kiểu Backup Trong SQL Server“, trong bài này tôi sẽ giới thiệu script để thực hiện việc sao lưu/khôi phục sử dụng cả ba loại backup đã nêu.

Script 1. backup database

USE master
GO
IF DB_ID('TEST') IS NOT NULL DROP DATABASE TEST
GO
CREATE DATABASE TEST
GO
USE TEST
GO
CREATE TABLE dbo.Table1(c INT)
GO
INSERT dbo.Table1 VALUES(1)
 
-- thời điểm t1: full backup
BACKUP DATABASE TEST TO DISK = 'D:\Backup\Test_FULL.bak' WITH INIT
 
-- thêm một bản ghi mới
INSERT dbo.Table1 VALUES(2)
 
-- thời điểm t2: differential backup
BACKUP DATABASE TEST TO DISK = 'D:\Backup\Test_DIFF.bak'
WITH INIT, DIFFERENTIAL
 
-- thêm một bản ghi mới thứ ba
INSERT dbo.Table1 VALUES(3)
 
-- thời điểm t3: transaction log backup
BACKUP LOG TEST TO DISK = 'D:\Backup\Test_TRAN.trn'
WITH INIT
 
-- thêm một bản ghi mới thứ tư
INSERT dbo.Table1 VALUES(4)
 
-- thời điểm t4: transaction log backup lần nữa
BACKUP LOG TEST TO DISK = 'D:\Backup\Test_TRAN.trn'

… đọc tiếp »

Posted on 13/9/2010 by Vũ Huy Tâm | Categories: Database Administration