RSSSql Server

Làm một bài thực hành đơn giản về Backup & Restore

Trước khi nghĩ đến việc tăng tốc câu truy vấn thì ta phải xem xét hiệu năng (Performance) của nó. Có 3 tiêu chí chính để chúng ta xem xét đó là: Query Cost (Chi phí của câu truy vấn),  Page Reads (Số lượng trang được đọc) và Execution Time (Thời gian thực thi câu truy vấn).

Trong bài thực hành này, tôi giới thiệu một số kiến thức cơ bản ta cần lưu ý khi thực hiện tạo, Backup và Restore Database khi làm việc với SQL Server. Bài thực hành được thực hiện trên SQL Server 2008.

Trước hết, tôi tạo ra một thư mục ở ổ D tên là MyData, và tạo một Database cũng có tên là MyData trong thư mục này. Database MyData gồm có:

  • 1 file Database Primary tên là MyData (trong SQL ta chỉ có thể tạo duy nhất một file data Primary có đuôi là .mdf)
  • 1 file Database Secondary tên là MyDataFile1 (trong SQL ta có thể tạo được nhiều file data Secondary có đuôi là .ndf)
  • 1 file Database Log tên là MyData_log (trong SQL ta có thể tạo được nhiều file Log có đuôi là .ldf)

Đoạn script tạo Database như sau:
USE [master]
GO

CREATE DATABASE [MyData] ON PRIMARY
( NAME = N’MyData’, FILENAME = N’D:\MyData\MyData.mdf’ , SIZE = 2048KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ),
( NAME = N’MyDataFile1′, FILENAME = N’D:\MyData\MyDataFile1.ndf’ , SIZE = 2048KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N’MyData_log’, FILENAME = N’D:\MyData\MyData_log.ldf’ , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO

Kết quả khi tạo xong Database

Giả sử tôi đổi tên Database MyData lại thành YourData như bạn thấy trong hình sau:

Sau đó ta truy vấn thông tin về các file vật lý của mỗi Database trong hệ thống dùng câu lệnh sau:

SELECT database_id, name, physical_name, size FROM sys.master_files

Kết quả trả về cho ta thấy dù đã đổi tên, nhưng các file vật lý vẫn giữ nguyên tên gốc là MyData

Bây giờ tôi thực hiện Backup Database dùng lệnh sau:

BACKUP DATABASE YourData TO DISK=‘E:\MyBackup.bak’

Trong SQL mọi thao tác Backup hay Restore Database đều được lưu trữ thông tin trong Database hệ thống là msdb. Bây giờ ta xem thông tin về file Backup mới tạo ra dùng câu lệnh sau:

SELECT database_name, user_name as ExecutedBy, physical_device_name,
backup_finish_date
FROM msdb..backupset bckset
INNER JOIN msdb..backupmediafamily bckfmly
ON bckset.media_set_id = bckfmly.media_set_id

Kết quả trả về cho ta các thông tin hữu ích như:

  • database_name: tên Database, ở đây là YourData
  • ExecutedBy: tên user thực hiện Backup, tôi thực hiện Backup bằng User sa nên User sa được lưu lại
  • physical_device_name: tên file và vị trí lưu trữ
  • backup_finish_date: thời gian thực hiện xong Backup

Tiếp theo tôi xóa Database YourData và xóa luôn thư mục MyData ở ổ D

Bây giờ tôi thực hiện Restore Database từ file Backup dùng lệnh sau:

RESTORE DATABASE MyData FROM DISK=‘E:\MyBackup.bak’

Ta thấy xuất hiện lỗi, vì SQL không tìm thấy thư mục MyData ở ổ D, là thư mục vật lý được lưu trong file Backup


Để khắc phục lỗi này, tôi tạo lại thư mục MyData trong ổ D, và chạy lại câu lệnh Restore, lần này tôi đã thành công.

Bài thực hành đến đây là kết thúc.

Quang Vinh
mai.quangvinh@sqlvn.com

Tags:

Nếu bạn thấy bài viết hữu ích, hãy nhấn +1 và các liên kết chia sẻ để website ngày càng phát triển hơn. Xin cám ơn bạn!

Nếu là khách, bạn phải đăng ký tài khoản và kích hoạt tài khoản để bình luận được hiển thị ở đây.
Thông tin kích hoạt gửi đến mail của bạn.

Tin mới hơn

Tin cũ hơn

Lên trên đầu