SQL Server cung cấp một cách dễ dàng để tạo bản sao lưu cơ sở dữ liệu. Sao lưu có thể được thực hiện bằng Transact-SQL, PowerShell hoặc thông qua SQL Server Management Studio GUI.
Ở đây, tôi sẽ trình bày cách tạo bản sao lưu bằng GUI của Hệ thống quản lý SQL Server, sau đó sử dụng Transact-SQL, cuối cùng là với SQL Server Powershell.
Tạo bản sao lưu qua GUI
-
Khởi chạy Cơ sở dữ liệu sao lưu Hộp thoại
Trong Trình khám phá đối tượng, nhấp chuột phải vào cơ sở dữ liệu bạn muốn sao lưu và chọn Tác vụ> Sao lưu ... từ menu ngữ cảnh.
-
Xem lại Cài đặt sao lưu
Hộp thoại này cho bạn cơ hội thay đổi bất kỳ cài đặt nào nếu được yêu cầu.
Đối với ví dụ của chúng tôi, hãy để nó ở cài đặt mặc định và nhấp vào OK để tạo bản sao lưu.
Bạn có thể thay đổi cơ sở dữ liệu tại đây nếu bạn vô tình chọn sai ở bước trước.
-
Hoàn tất sao lưu
Bạn sẽ nhận được thông báo khi sao lưu hoàn tất.
Nhấp vào OK để đóng thư và hộp thoại.
Tệp sao lưu bây giờ sẽ được đặt tại vị trí đã chỉ định.
Sao lưu cơ sở dữ liệu bằng Transact-SQL
-
Bạn có thể thực hiện sao lưu tương tự như trên bằng cách sử dụng SQL.
Để thực hiện việc này, hãy mở một cửa sổ truy vấn mới và thực thi
BACKUP
tuyên bố.BACKUP
câu lệnh chấp nhận các tùy chọn khác nhau (giống như tùy chọn GUI), nhưng bạn cũng có thể chạy một bản sao lưu đơn giản với tối thiểu mã.Mã mẫu
Dưới đây là ví dụ về một tập lệnh sao lưu đơn giản chỉ định cơ sở dữ liệu để sao lưu và vị trí để sao lưu nó.
Sau khi chạy mã này, tệp sao lưu sẽ được đặt tại vị trí được chỉ định.
BACKUP DATABASE Music TO DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\Music.bak';
Bạn có thể xem cú pháp đầy đủ cho
BACKUP
tuyên bố trên trang web của Microsoft.
Sao lưu cơ sở dữ liệu bằng PowerShell
SQL Server 2016 hỗ trợ Windows PowerShell, là một trình bao kịch bản, thường được sử dụng để tự động hóa các tác vụ quản trị và triển khai.
Ngôn ngữ PowerShell hỗ trợ logic phức tạp hơn so với các tập lệnh Transact-SQL, mang đến cho bạn khả năng xây dựng các tập lệnh phức tạp hơn cho các bản sao lưu và các tác vụ khác của bạn.
-
Mở PowerShell
Nhấp chuột phải vào cơ sở dữ liệu và chọn Start Powershell .
-
Chạy lệnh sao lưu
Nhập lệnh để tạo bản sao lưu và nhấn Enter (hoặc Trả lại , tùy thuộc vào bàn phím của bạn).
Bản sao lưu sẽ chạy ngay lập tức.
Mã mẫu
Đoạn mã sau sẽ tạo một bản sao lưu giống như các ví dụ trước. Chỉ cần thay thế
MyServer
với tên máy chủ của bạn.Sau khi chạy mã này, tệp sao lưu sẽ được đặt ở vị trí mặc định.
Backup-SqlDatabase -ServerInstance MyServer -Database Music
Bạn cũng có thể chỉ định một vị trí
Backup-SqlDatabase -ServerInstance MyServer -Database Music -BackupFile 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\Music.bak'
Bạn cũng có thể chỉ định
-BackupAction Database
để tuyên bố rõ ràng rằng nó là một bản sao lưu đầy đủ. Tuy nhiên, đây là tùy chọn mặc định.Bạn có thể xem tài liệu đầy đủ cho
Backup-SqlDatabase
lệnh tại trang web của Microsoft.
Ghi đè các tệp sao lưu
Nếu bạn đã chạy tất cả các ví dụ trên chính xác như hiện tại, bạn có thể nhận thấy rằng mỗi lần bạn chạy nó, kích thước tệp của tệp sao lưu sẽ tăng lên.
Điều này là do mỗi bản sao lưu liên tiếp đang thêm chính nó vào tệp hiện có.
Nó làm được điều này bởi vì chúng tôi đang sử dụng cùng một tên tệp và chúng tôi chưa chỉ định rõ ràng rằng mỗi bản sao lưu sẽ ghi đè lên bất kỳ tệp hiện có nào.
Có một tùy chọn cho phép bạn ghi đè lên tệp hiện có.
- Sử dụng GUI , nhấp vào Tùy chọn phương tiện trong menu bên trái của Cơ sở dữ liệu sao lưu hộp thoại và chọn Ghi đè tất cả các bộ sao lưu hiện có trong Phương tiện ghi đè phần.
- Sử dụng SQL thêm
WITH INIT
vào câu lệnh SQL. - Sử dụng Powershell , thêm
-Initialize
vào lệnh.
Lưu tệp sao lưu
Tuy nhiên, bạn nên tạo một bản sao lưu đầy đủ với một tên tệp duy nhất (thường bao gồm ngày trong tên tệp). Có một tên tệp duy nhất sẽ có nghĩa là mỗi bản sao lưu sẽ là một tệp riêng biệt.
Ngoài ra, tùy thuộc vào kích thước cơ sở dữ liệu của bạn và lượng dữ liệu mới đang được nhập vào đó, bạn có thể muốn bổ sung các bản sao lưu đầy đủ của mình bằng các bản sao lưu khác nhau. Một bản sao lưu khác biệt chỉ nắm bắt dữ liệu đã thay đổi kể từ lần sao lưu đầy đủ gần đây nhất.