Sao lưu và khôi phục cơ sở dữ liệu máy chủ SQL của bạn từ dòng lệnh
Phần quan trọng nhất của kế hoạch bảo trì SQL Server là sao lưu cơ sở dữ liệu của bạn thường xuyên. Để sao lưu cơ sở dữ liệu, bạn không thể chỉ cần sao chép các tệp MDF và LDF tương ứng của cơ sở dữ liệu vì SQL Server có khóa trên các tệp này. Thay vào đó, bạn cần tạo một tệp sao lưu thực sự thông qua SQL Server.
Mặc dù điều này có thể được thực hiện bằng cách phát triển Kế hoạch bảo trì bên trong SQL Management Studio, các phiên bản Express Express miễn phí của SQL Server không cung cấp giao diện này. Để khắc phục điều này, bạn có thể dễ dàng sao lưu cơ sở dữ liệu của mình bằng cách chạy lệnh bên dưới trong khi đăng nhập với tư cách Quản trị viên Windows:
SqlCmd -E -S Server_Name -Q, BACKUP DATABASE [Name_of_Database] TO DISK = "X: PathToBackupLocation [Name_of_Database] .bak"
Các ví dụ dưới đây sẽ giúp.
Ví dụ máy chủ SQL mặc định:
SqlCmd -E -S MyServer -Q BACKUP DATABASE [MyDB] TO DISK = "D: BackupsMyDB.bak"
Ví dụ máy chủ SQL được đặt tên:
SqlCmd -E -S MyServerMyInstance -Q VACK BACKUP DATABASE [MyDB] TO DISK = "D: BackupsMyDB.bak"
Ở trên tạo ra một bản sao lưu dự phòng đầy đủ có thể lưu lại được của My MyDB vào tập tin D: Sao lưu MYDB.bak Cảnh có thể được sử dụng để khắc phục thảm họa. Tất nhiên, bạn có thể thay đổi vị trí sao lưu và tệp thành bất cứ thứ gì bạn cần, nhưng hãy đảm bảo bạn chỉ định vị trí thư mục tồn tại trên máy cục bộ. Tập tin sao lưu này sau đó có thể được sao chép vào ổ đĩa băng hoặc một vị trí sao lưu bên ngoài khác.
Một câu hỏi phổ biến là có thể tạo một tập tin sao lưu vào ổ đĩa được ánh xạ hoặc vị trí UNC không? Và câu trả lời nhanh là không. Lý do là vì SQL Server Windows Service chạy như một tài khoản người dùng chỉ có quyền truy cập vào máy cục bộ. Bạn có thể thay đổi tài khoản mà dịch vụ chạy, nhưng điều này không được khuyến khích vì lý do bảo mật.
Khôi phục sao lưu cơ sở dữ liệu từ dòng lệnh
Để khôi phục cơ sở dữ liệu từ tệp sao lưu, chỉ cần sử dụng lệnh:
SqlCmd -E -S Server_Name -Q, RESTORE DATABASE [Name_of_Database] TỪ DISK = "X: PathToBackupFile [File_Name] .bak"
Ví dụ:
SqlCmd -E -S MyServer -Q hung RESTORE DATABASE [MyDB] TỪ DISK = "D: BackupsMyDB.bak"
Lệnh trên sẽ khôi phục lại bản sao lưu của My MyDB từ dữ liệu được lưu trong tập tin sao lưu D: BackupsMyDB.bak. Mọi thay đổi được thực hiện đối với MyDB kể từ khi tệp sao lưu được tạo sẽ bị mất.
Một điều quan trọng cần nhớ khi sử dụng lệnh trên là nó được sử dụng trên cùng một Máy chủ SQL mà tệp sao lưu tương ứng đã được tạo. Các tệp sao lưu SQL lưu trữ thông tin 'đằng sau hậu trường' kiểm soát các tệp dữ liệu trong tệp sao lưu được sao chép ở đâu và như thế nào. Nếu bạn đang khôi phục bản sao lưu từ một Máy chủ SQL khác, các vị trí đường dẫn trong tệp sao lưu có thể không khớp với máy chủ mà bạn đang khôi phục và sẽ xảy ra lỗi. Mặc dù điều này có thể được giải quyết, nhưng việc khôi phục các bản sao lưu được tạo trên một Máy chủ SQL khác bằng công cụ SQL Management Studio sẽ dễ dàng hơn nhiều.
Lưu ý: các lệnh trên sẽ hoạt động trên SQL 2005 trở lên (bất kỳ phiên bản nào). Đối với SQL 2000 trở về trước, thay thế 'SqlCmd' bằng 'oSql'.