Cách sao lưu cơ sở dữ liệu SQL vào mạng chia sẻ
Sao lưu cơ sở dữ liệu SQL thường xuyên là phải. Chúng tôi đã đề cập đến các cách để có thể dễ dàng sao lưu tất cả các cơ sở dữ liệu máy chủ SQL của bạn vào ổ cứng cục bộ, nhưng điều này không bảo vệ chống lại ổ đĩa và / hoặc lỗi hệ thống. Là một lớp bảo vệ bổ sung chống lại loại thảm họa này, bạn có thể sao chép hoặc trực tiếp tạo bản sao lưu của mình trên mạng chia sẻ.
Sao lưu cục bộ và sau đó Sao chép vào Mạng Chia sẻ
Cách ưa thích và trực tiếp nhất để thực hiện nhiệm vụ này chỉ đơn giản là tạo bản sao lưu cục bộ của cơ sở dữ liệu và sau đó sao chép tệp sao lưu tương ứng vào mạng chia sẻ. Bạn có thể làm điều này bằng cách tạo một tập lệnh bó giống như thế này:
SET LocalFolder = C: Chương trình FilesMicrosoft SQL ServerMSQuery.1MSSQLBackup
SqlCmd -E -Q Cơ sở dữ liệu sao lưu MyDB vào đĩa = "% LocalFolder% MyDB.bak"
XCopy 21% LocalFolder% MyDB.bak phạm \ \ 192.168.16.55BackupDatabase Tấn / Z / V
GIAO DỊCH% LocalFolder% MyDB.bak
Kịch bản này thực hiện như sau (từng dòng):
- Đặt một biến cho thư mục sao lưu SQL cục bộ.
- Tạo bản sao lưu SQL của MyDB (sử dụng Xác thực Windows) vào thư mục sao lưu SQL cục bộ.
- Sao chép tệp sao lưu cục bộ vào mạng chia sẻ.
- Xóa tập tin sao lưu cục bộ.
Một lần nữa, đây là phương pháp ưa thích vì nó hoạt động tốt và khả năng xảy ra lỗi sao lưu là tối thiểu do sao lưu được tạo trên đĩa cục bộ. Tuy nhiên, nếu bạn không có đủ dung lượng đĩa để lưu trữ các bản sao lưu tệp cục bộ thì hành động này sẽ thất bại. Trong trường hợp này, bạn sẽ cần thêm không gian đĩa bổ sung hoặc sao lưu trực tiếp vào chia sẻ mạng.
Sao lưu trực tiếp vào mạng chia sẻ
Thông thường, khi bạn cố gắng tạo bản sao lưu trực tiếp vào chia sẻ mạng bằng lệnh như:
SqlCmd -E -Q Cơ sở dữ liệu sao lưu MyDB vào đĩa = "\ 192.168.16.55BackupDatabaseMyDB.bak"
Rất có thể bạn sẽ gặp lỗi dọc theo dòng:
Msg 3201, Cấp 16, Bang 1, Máy chủ JF, Dòng 1
Không thể mở thiết bị sao lưu '\ 192.168.16.55BackupDatabaseMyDB.bak'. Lỗi hệ điều hành 5 (Truy cập bị từ chối.).
Msg 3013, Cấp 16, Bang 1, Máy chủ JF, Dòng 1
BACKUP DATABASE đang chấm dứt bất thường.
Lỗi này xảy ra mặc dù bạn đã chạy lệnh sao lưu SQL bằng Windows xác thực (công tắc -E) và tài khoản Windows như khả năng truy cập và sao chép tệp vào chia sẻ thông qua Windows Explorer.
Lý do hành động này thất bại là do lệnh SQL được thực thi trong giới hạn của tài khoản mà dịch vụ SQL Server đang chạy. Khi bạn xem danh sách Dịch vụ trên máy tính của mình, rất có thể bạn sẽ thấy dịch vụ SQL Server chạy dưới dạng (cột Đăng nhập dưới dạng) hoặc Hệ thống cục bộ hoặc Dịch vụ mạng là tài khoản hệ thống không có quyền truy cập mạng.
Trên hệ thống của chúng tôi, việc sao lưu vào lệnh chia sẻ mạng không thành công vì chúng tôi có dịch vụ SQL Server chạy như Hệ thống cục bộ, một lần nữa, không thể truy cập vào bất kỳ tài nguyên mạng nào.
Để cho phép SQL sao lưu trực tiếp vào chia sẻ mạng, chúng tôi phải chạy dịch vụ SQL Server dưới dạng tài khoản cục bộ có quyền truy cập vào tài nguyên mạng.
Chỉnh sửa các thuộc tính của dịch vụ SQL Server và trên tab Đăng nhập, định cấu hình dịch vụ để chạy như một tài khoản thay thế có quyền truy cập mạng.
Khi bạn bấm OK, bạn sẽ nhận được lời nhắc rằng các cài đặt sẽ không có hiệu lực cho đến khi dịch vụ được khởi động lại.
Khởi động lại dịch vụ.
Danh sách dịch vụ hiện sẽ hiển thị dịch vụ SQL Server đang chạy như tài khoản bạn đã định cấu hình.
Bây giờ khi bạn chạy lệnh để sao lưu trực tiếp vào mạng chia sẻ:
SqlCmd -E -Q Cơ sở dữ liệu sao lưu MyDB vào đĩa = "\ 192.168.16.55BackupDatabaseMyDB.bak"
Bạn sẽ thấy một thông báo thành công:
Đã xử lý 152 trang cho cơ sở dữ liệu 'MyDB', tệp 'MyDB' trên tệp 1.
Đã xử lý 2 trang cho cơ sở dữ liệu 'MyDB', tệp 'MyDB_log' trên tệp 1.
BACKUP DATABASE đã xử lý thành công 154 trang trong 0,503 giây (2,493 MB / giây).
Với tệp sao lưu bây giờ trong thư mục chia sẻ mạng:
Xem xét chia sẻ mạng
Điều quan trọng cần lưu ý là lệnh sao lưu dự kiến có thể kết nối trực tiếp với chia sẻ mạng mà không được nhắc về thông tin đăng nhập. Tài khoản bạn đã định cấu hình dịch vụ SQL Server để chạy vì phải có kết nối đáng tin cậy với chia sẻ mạng nơi thông tin đăng nhập tương ứng cho phép truy cập, nếu không, có thể xảy ra lỗi như thế này:
Msg 3201, Cấp 16, Bang 1, Máy chủ JF, Dòng 1
Không thể mở thiết bị sao lưu '\ 192.168.16.55BackupDatabaseMyDB.bak'. Lỗi hệ điều hành 1326 (Lỗi đăng nhập: tên người dùng không xác định hoặc mật khẩu xấu.).
Msg 3013, Cấp 16, Bang 1, Máy chủ JF, Dòng 1
BACKUP DATABASE đang chấm dứt bất thường.
Lỗi này cho thấy tên người dùng và mật khẩu của tài khoản không được chấp nhận bởi chia sẻ mạng và lệnh không thành công.
Một vấn đề khác cần lưu ý là sao lưu được thực hiện trực tiếp vào tài nguyên mạng, do đó, bất kỳ trục trặc nào trong kết nối mạng đều có thể khiến bản sao lưu của bạn bị lỗi. Vì lý do này, bạn chỉ nên sao lưu vào các vị trí mạng ổn định (có thể không phải là VPN).
Ý nghĩa bảo mật
Như đã đề cập trước đó, sử dụng phương thức bạn sao lưu cục bộ và sau đó sao chép vào chia sẻ mạng được ưu tiên vì nó cho phép bạn chạy Dịch vụ SQL dưới dạng tài khoản chỉ có quyền truy cập hệ thống cục bộ.
Bằng cách chạy dịch vụ như một tài khoản thay thế, bạn mở ra cơ hội cho các vấn đề bảo mật tiềm ẩn. Ví dụ: tập lệnh SQL độc hại có thể thực thi dưới tài khoản thay thế và tấn công tài nguyên mạng. Ngoài ra, mọi thay đổi đối với tài khoản tương ứng (thay đổi / hết hạn mật khẩu hoặc xóa / vô hiệu hóa tài khoản) sẽ khiến dịch vụ SQL Server không khởi động được.
Điều quan trọng là phải ghi nhớ những điểm này nếu bạn chạy phiên bản SQL Server của mình bằng tài khoản thay thế. Mặc dù đây không phải là nút chặn nếu có biện pháp phòng ngừa thích hợp, bạn nên xem xét thêm dung lượng ổ cứng bổ sung và sau đó thực hiện sao lưu và sao lưu cục bộ để bạn có thể chạy dịch vụ SQL bằng tài khoản cục bộ.