Làm thế nào để biết một tập tin sao lưu có chứa CDC?


9

Sử dụng SQL Server 2008 đến 2014, tôi biết cách sao lưu và khôi phục cơ sở dữ liệu khi bật Change Data Capture (CDC), nhưng điều tôi đang tìm kiếm là cách truy vấn tệp sao lưu đầy đủ để xác định xem nó có chứa dữ liệu CDC không.

Điều gì sẽ là tuyệt vời sẽ là một cách như thế RESTORE FILELISTONLYcó được danh sách tệp từ cơ sở dữ liệu, nhưng thay vào đó có trạng thái CDC để xác định xem việc khôi phục có cần sử dụng cờ KEEP_CDC không?

Có cách nào để xác định xem bản sao lưu có chứa dữ liệu CDC không?

cảm ơn!

Câu trả lời:


7

(nếu ai đó tìm thấy một cách - mà tôi không nghĩ là tồn tại, tôi sẽ xóa câu trả lời của mình :-))

Có cách nào để xác định xem bản sao lưu có chứa dữ liệu CDC không?

Tôi không nghĩ rằng có bất kỳ cách nào để biết từ bản sao lưu, nếu CDC được kích hoạt hay không.

Hầu hết bạn có thể biết liệu cơ sở dữ liệu có liên quan đến sao chép hay không (dưới mui xe có sử dụng tác nhân đọc nhật ký quét Nhật ký giao dịch) hay không bằng cách sử dụng DatabaseBackupLSN trong kết quả của RESTORE HEADERONLYDatabaseBackupLSN như là một điểm bắt đầu của điểm kiểm tra được kích hoạt khi sao lưu bắt đầu LSN này sẽ trùng với FirstLSNnếu sao lưu được thực hiện khi cơ sở dữ liệu không hoạt động và không có bản sao được cấu hình.

Tôi giả sử lý do microsoft không thể biết liệu CDC có được kích hoạt hay không, cũng có thể là một điều bảo mật. CDC là một công nghệ cấp doanh nghiệp cho phép theo dõi các thay đổi cho đến cấp cột. Điều này được yêu cầu bởi các quy định như HIPAA, FISMA, v.v.

Từ khôi phục hoặc đính kèm cơ sở dữ liệu được kích hoạt để thu thập dữ liệu thay đổi

SQL Server sử dụng logic sau để xác định xem việc thay đổi dữ liệu có được bật hay không sau khi cơ sở dữ liệu được khôi phục hoặc đính kèm:

  • Nếu một cơ sở dữ liệu được khôi phục vào cùng một máy chủ có cùng tên cơ sở dữ liệu, thay đổi thu thập dữ liệu vẫn được bật.
  • Nếu cơ sở dữ liệu được khôi phục sang máy chủ khác, theo mặc định, dữ liệu thay đổi sẽ bị vô hiệu hóa và tất cả các siêu dữ liệu liên quan sẽ bị xóa.
  • Để giữ lại thay đổi dữ liệu, hãy sử dụng tùy chọn KEEP_CDC khi khôi phục cơ sở dữ liệu. Để biết thêm thông tin về tùy chọn này, xem RESTORE.
  • Nếu một cơ sở dữ liệu được tách ra và gắn vào cùng một máy chủ hoặc máy chủ khác, thay đổi thu thập dữ liệu vẫn được bật.
  • Nếu cơ sở dữ liệu được đính kèm hoặc khôi phục với tùy chọn KEEP_CDC cho bất kỳ phiên bản nào ngoài Enterprise, hoạt động sẽ bị chặn vì thay đổi dữ liệu yêu cầu SQL Server Enterprise. Thông báo lỗi 932 được hiển thị:

Máy chủ SQL không thể tải cơ sở dữ liệu '%. * Ls' vì tính năng thay đổi dữ liệu được bật. Phiên bản SQL Server hiện được cài đặt không hỗ trợ chụp dữ liệu thay đổi. Hoặc vô hiệu hóa ghi dữ liệu thay đổi trong cơ sở dữ liệu bằng cách sử dụng phiên bản SQL Server được hỗ trợ hoặc nâng cấp phiên bản lên phiên bản hỗ trợ chụp dữ liệu thay đổi.


Kin - Như thường lệ, bạn là một DBA rockstar. Cảm ơn các chi tiết. Tôi nghĩ rằng tôi đã đi đến kết luận tương tự, và thực sự đang tìm ai đó để xác nhận rằng không có cách nào để kiểm tra xem bản sao lưu có chứa CDC hay không. Có một ngày tuyệt vời. Cảm ơn!
Steve Stedman

@SteveStedman Cảm ơn những lời tốt đẹp. Vui lòng upvote / chấp nhận câu trả lời nếu câu hỏi của bạn được trả lời. Điều này cũng sẽ giúp độc giả tương lai :-)
Kin Shah

Cảm ơn Steve vì bài đăng và cảm ơn @Kin, đã học được điều gì đó mới hôm nay.
SQLBoy

Lưu ý: CDC hiện có sẵn trên Tiêu chuẩn 2016SP1 trở lên và trở nên chính thống hơn. Tôi muốn các tùy chọn CDC trong giao diện người dùng khôi phục trên SSMS, tôi cũng đã đề xuất điều này về kết nối: connect.microsoft.com/QueryServer/feedback/details/3144490/
Lỗi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.