Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Các cách khôi phục dữ liệu từ tệp nhật ký giao dịch SQL Server

Tóm tắt: Nhiều khi quản trị viên cơ sở dữ liệu SQL tìm cách khôi phục dữ liệu từ SQL Server Transaction log, Người dùng có thể đọc bài viết này để thực hiện công việc này. Chúng tôi đã đưa ra cách tốt nhất có thể và cũng là cách dễ nhất để khôi phục dữ liệu từ tệp (.ldf). Trong trường hợp bạn đang gặp phải sự cố hỏng cơ sở dữ liệu và muốn khôi phục các đối tượng cơ sở dữ liệu, hãy thử Khôi phục cơ sở dữ liệu SQL này Phần mềm. Để biết thêm thông tin, người dùng có thể đọc bài viết này.

Đôi khi khách hàng phải đối mặt với các trường hợp cơ sở dữ liệu đáng tiếc trong cơ sở dữ liệu SQL Server của họ. Các tình huống có thể xảy ra trong quá trình quản lý và hỗ trợ các tệp cơ sở dữ liệu của họ. Đôi khi các đối tượng cơ sở dữ liệu bị xóa ngoài ý muốn, do đó quản trị viên cơ sở dữ liệu phải đối mặt với nhiều vấn đề. Sau đó, để quay lại quy trình làm việc bình thường, các tệp sẽ được khôi phục trở lại cơ sở dữ liệu SQL Server.

Nhật ký giao dịch SQL Server đóng một vai trò quan trọng trong việc khôi phục dữ liệu đã xóa trong trường hợp bạn thực hiện sai thao tác DELETE hoặc UPDATE với điều kiện không phù hợp hoặc không có điều kiện lọc. Điều này có thể được thực hiện bằng cách lắng nghe các bản ghi được đặt bên trong hộp đen này, được gọi là tệp Nhật ký giao dịch SQL Server.

Cách khôi phục dữ liệu từ tệp nhật ký giao dịch SQL Server

Để phân tích các kỹ thuật khác nhau mà chúng tôi có thể sử dụng để khôi phục dữ liệu từ tệp Nhật ký giao dịch SQL Server, chúng tôi sẽ tạo một cơ sở dữ liệu khác với một bảng duy nhất, sử dụng tập lệnh bên dưới:

Sau khi tạo cơ sở dữ liệu và bảng, chúng tôi sẽ điền vào bảng đó 30 bản ghi, sử dụng câu lệnh INSERT INTO T-SQL bên dưới:

Chưa có bản sao lưu nào được lấy từ cơ sở dữ liệu, làm cách nào chúng tôi có thể khôi phục dữ liệu của bảng nếu lệnh UPDATE bên dưới được thực thi trên bảng đó mà không có câu lệnh nào được sử dụng để lọc dữ liệu cần thay đổi?

Sử dụng các phương pháp tích hợp sẵn

1.) fn_dblog: Nội dung của Nhật ký giao dịch SQL Server có thể được đọc trực tuyến bằng cách sử dụng các chức năng ngầm định khác nhau. Chức năng đầu tiên mà chúng tôi sẽ cố gắng sử dụng để khôi phục dữ liệu bị mất là fn_dblog . Đây là một chức năng có giá trị bảng khung không có tài liệu, được sử dụng để ghi nhật ký giao dịch SQL Server và xem nội dung của phân đoạn động của tệp đó.

Để sử dụng fn_dblog () , bạn phải cung cấp hai tham số, LSN đầu và cuối của nhật ký. Để xem tất cả nhật ký có thể truy cập được trong phân đoạn động của tệp Nhật ký giao dịch SQL, bạn có thể chuyển giá trị NULL cho hai tham số này. Vì kết quả quay trở lại từ công việc fn_dblog () chứa 129 cột, tốt hơn là chỉ chọn các phân đoạn có chứa dữ liệu bạn quan tâm và lọc kết quả để chỉ hiển thị thao tác mà bạn định khôi phục. Ví dụ:thao tác LOP_INSERT_ROWS được ghi khi nhúng bản ghi khác, thao tác LOP_DELETE_ROWS được ghi khi bản ghi mới bị xóa và thao tác LOP_MODIFY_ROW được ghi khi bản ghi hiện tại được cập nhật. Tập lệnh bên dưới có thể được sử dụng để kiểm tra các câu lệnh cập nhật được thực hiện trên cơ sở dữ liệu đó:

2.) fn_dump_dblog (): Khung tiếp theo đã hoạt động trong hàm fn_dump_dblog (), có một lợi thế so với công việc fn_dblog () là nó có thể được sử dụng rất tốt để đọc bản sao lưu Nhật ký giao dịch SQL Server, mặc dù có khả năng đọc tệp Nhật ký giao dịch trực tuyến. Sau đó, một lần nữa, để sử dụng hàm fn_dump_dblog (), bạn phải cung cấp 68 tham số bắt buộc, như đã xuất hiện trong tập lệnh bên dưới:

3.) Lệnh trang DBCC: SQL Server cung cấp cho chúng ta vô số lệnh DBCC có thể được sử dụng để thực hiện các loại nhiệm vụ quản trị SQL Server. Một trong những lệnh không có tài liệu này là lệnh Trang DBCC, có thể được sử dụng để đọc nội dung của dữ liệu cơ sở dữ liệu và ghi nhật ký các tệp trực tuyến. Vì vậy, để xem nội dung của tệp nhật ký cơ sở dữ liệu, bạn phải cung cấp tên cơ sở dữ liệu và ID của tệp Nhật ký giao dịch. Có thể khôi phục ID của tệp Nhật ký giao dịch từ truy vấn bên dưới.

Hạn chế của các phương pháp thủ công để khôi phục dữ liệu từ nhật ký giao dịch máy chủ SQL

  1. Khó thực hiện.
  2. Yêu cầu kiến ​​thức kỹ thuật vững vàng.
  3. Nguy cơ mất mát dữ liệu cao.

Giải pháp của Chuyên gia cho Khôi phục dữ liệu từ tệp nhật ký giao dịch của SQL Server

Tại thời điểm khi cơ sở dữ liệu bị hỏng hoặc dữ liệu của bảng bị mất hoặc thay đổi do nhầm lẫn, thì thời gian dài cần thiết để tạo lại và phân tích cú pháp dữ liệu bằng cách sử dụng các chiến lược ngầm định là không đủ. Cùng với đó, chúng ta cần tìm kiếm trong thị trường quản trị SQL Server một công cụ có thể được sử dụng hiệu quả và ngay lập tức để đọc nội dung tệp Nhật ký giao dịch và hiển thị nội dung này ở định dạng dễ sử dụng.

Trình đọc tệp nhật ký SQL của SysTools , có thể được sử dụng thủ công để đọc nội dung của tệp Nhật ký giao dịch SQL trực tuyến. Bằng cách sử dụng phần mềm này, người dùng có thể dễ dàng Đọc và Phân tích tệp Nhật ký Giao dịch SQL Server CHÈN / CẬP NHẬT / XÓA các hoạt động. Ứng dụng chuyên nghiệp Cấp Doanh nghiệp này Có thể hoạt động trên cả môi trường cơ sở dữ liệu ngoại tuyến và trực tuyến. Ngoài ra, ứng dụng này cung cấp tùy chọn bộ lọc động để xuất tệp Nhật ký giao dịch có chọn lọc. Phần mềm này hỗ trợ phiên bản SQL Server 2019.

Các bước khôi phục dữ liệu từ nhật ký giao dịch SQL Server

  1. Tải xuống và cài đặt Trình phân tích nhật ký SQL.

2. Bây giờ Chọn Tùy chọn Cơ sở dữ liệu

3. Xem trước dữ liệu tệp Nhật ký Giao dịch SQL Server.

4. Nhấp vào Nút Xuất để Xuất dữ liệu tệp nhật ký.

Kết luận

Mặc dù thực tế là kỹ thuật thủ công có thể khôi phục các mục đã xóa khỏi bảng SQL, nhưng nó không phải là một tùy chọn được chỉ định cho khách hàng vì sự phức tạp và tẻ nhạt của nó. Thay vào đó, bạn nên sử dụng một giải pháp lý tưởng để khôi phục dữ liệu từ tệp Nhật ký giao dịch của SQL Server.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm giá trị tối đa và hiển thị giá trị tương ứng từ trường khác nhau trong máy chủ SQL

  2. Bạn có thể có logic if-then-else trong SQL không?

  3. Lợi ích của việc sử dụng ký hiệu vị trí thứ tự trong SQL?

  4. Cách tốt nhất để chèn hàng loạt cơ sở dữ liệu từ c # là gì?

  5. Làm thế nào để xử lý deadlock Sql Server hiệu quả trong C # với ADO?