Computer >> Máy Tính >  >> Lập trình >> Cơ sở dữ liệu

Cắt bỏ và xóa kiểm tra hoạt động trong MSSQL Server

Blog này thảo luận về các bước để xác định người dùng chịu trách nhiệm cắt bớt và xóa dữ liệu khỏi các bảng trên máy chủ MSSQL và xác định thực thể chịu trách nhiệm.

Ví dụ:Khi nào bảng bị cắt ngắn và khi nào dữ liệu bị xóa khỏi bảng? Ai đã cắt ngắn bảng và xóa dữ liệu khỏi bảng?

Lý do thu thập thông tin này

Điều này là để xem liệu ai đó đã xóa dữ liệu do cố ý hay do vô tình, vì vậy chúng tôi có thể theo dõi cá nhân đó và thực hiện hành động ngăn chặn. Chúng tôi nhận được rất ít yêu cầu từ những khách hàng tìm kiếm thông tin này.

Tóm tắt sự cố

Các phần sau đây mô tả bốn nguyên tắc chính cho GitOps:

Từ 5 giờ chiều và 7 giờ tối vào ngày 5 tháng 1 năm 2020, bảng “kết xuất truncate” đã bị cắt bớt và dữ liệu từ bảng “kết xuất xóa” đã bị xóa khỏi DB “thử nghiệm cắt ngắn”. Các câu hỏi có thể xảy ra cần được giải quyết bao gồm:

  • Bạn cần tìm ra vấn đề là gì.
  • Ai đã xóa dữ liệu khỏi bảng “dump_delete”?
  • Có bao nhiêu hàng từ bảng "xóa kết xuất" đã bị xóa?
  • Ai đã cắt ngắn bảng “dump_truncate”?
  • Khi nào các bảng này bị cắt bớt và bị xóa?
  • Trên máy chủ, lịch sao lưu hiện tại như sau:
  • Hàng tuần vào Chủ Nhật, các bản sao lưu đầy đủ sẽ được thực hiện.
  • Mỗi ngày vào lúc 1 giờ chiều, sao lưu khác
  • Bản sao lưu nhật ký được tạo sau mỗi 15 phút.

Điều kiện tiên quyết:

  • DB phải ở chế độ khôi phục hoàn toàn.
  • Có sẵn các bản sao lưu đầy đủ, khác biệt và nhật ký.

Tiếp cận ở cấp độ cao:

  1. Xác định bản sao lưu nhật ký nào giữ các thao tác xóa và cắt ngắn.
  2. Xác định chi tiết về các thao tác cắt bớt và xóa bằng cách sử dụng sao lưu nhật ký.

Xác định bản sao lưu nhật ký nào chứa các thao tác xóa và cắt ngắn:

LƯU Ý :Chúng tôi đã thực hiện các bước này bằng cách tạo một bản sao mới của DB.

  1. Khôi phục bản sao lưu đầy đủ vào Chủ nhật ngày 2 tháng 1 với chế độ chờ.

  2. Khôi phục bản sao lưu khác ngày 5 tháng 1 với chế độ chờ

  3. Khôi phục sao lưu nhật ký với chế độ chờ. Kiểm tra số lượng bảng sau mỗi lần khôi phục nhật ký để xem bản sao lưu nhật ký nào giữ nhật ký thao tác cắt và xóa.

Khi chúng tôi khôi phục sao lưu nhật ký từ 6 giờ chiều, bảng “kết xuất cắt ngắn” trống và các mục nhập từ bảng “xóa kết xuất” bị thiếu. Do đó, nó biểu thị:

Trong khoảng từ 5:45 chiều đến 6 giờ chiều, bảng "kết xuất cắt ngắn" đã bị cắt ngắn và dữ liệu từ bảng "xóa kết xuất" bị xóa cùng một lúc.

Bạn cần chạy các lệnh khôi phục sau:

Xác định chi tiết của các thao tác cắt bớt và xóa bằng cách sử dụng sao lưu nhật ký:

Bước 1:Thu thập ID giao dịch cho tất cả các hoạt động cắt bớt và xóa đã xảy ra từ 5:45 đến 6 giờ chiều

Truy vấn:

Chúng tôi phát hiện ra rằng hai thao tác, xóa và cắt ngắn, được thực thi lúc 5:50 chiều và các thao tác này được thực hiện bởi đăng nhập RP Dev.

Bước 2:Tìm tên bảng được liên kết với id giao dịch.

Để nhận thông tin về thao tác xóa, hãy làm theo các bước bên dưới:

I) Xác định ID đối tượng và ID phân vùng của thao tác xóa.

Từ kết quả này, chúng ta có thể suy ra các thông tin sau: Cột Mô tả và Tên giao dịch:Thao tác xóa đã được thực hiện

  • Thời gian bắt đầu:Thao tác xóa được bắt đầu lúc 2022/01/05 17:50:22:493
  • Login_Name:RP_DEV đã chạy thao tác xóa.
  • Thông tin về khóa:Mỗi hàng bắt đầu bằng tiền tố “HoBt” đại diện cho việc xóa một hàng, tổng cộng là 7 hàng.
  • ID đối tượng được liên kết với bảng mà dữ liệu đã bị xóa.
  • Id phân vùng:Id phân vùng của đối tượng từ nơi dữ liệu bị xóa

II) Định vị bảng có chứa ID đối tượng và ID phân vùng.

Truy vấn:

Bây giờ, chúng tôi có thể suy ra rằng dữ liệu từ “xóa kết xuất” đã bị người dùng RP DEV xóa lúc 5:50 chiều theo ID giao dịch ‘0000:00016a96’ và có tổng cộng 7 hàng đã bị xóa.

Để nhận thông tin về thao tác cắt ngắn, hãy làm theo các bước bên dưới:

I) Xác định ID đối tượng và ID phân vùng của thao tác Truncate.

Đầu ra:

Bây giờ, chúng tôi có thể suy ra rằng dữ liệu từ “xóa kết xuất” đã bị người dùng RP DEV xóa lúc 5:50 chiều theo ID giao dịch ‘0000:00016a96’ và có tổng cộng 7 hàng đã bị xóa.

Để nhận thông tin về thao tác cắt ngắn, hãy làm theo các bước bên dưới:

I) Xác định ID đối tượng và ID phân vùng của thao tác Truncate.

Truy vấn:

Đầu ra

Đầu ra của thao tác cắt ngắn hơi khác so với đầu ra của thao tác xóa.

Cột ID phân vùng:Nó không hiển thị đúng ID phân vùng. Bạn có thể tìm thấy thông tin này trong cột mô tả. ID phân vùng được đánh dấu. ID phân vùng là 72057594043564032 và 72057594043629568

Mô tả khóa: Luôn là hàng SCH_M_OBJECT trong Mô tả Khóa hiển thị ID Đối tượng chính xác. ID đối tượng là:885578193

Định vị bảng có chứa ID đối tượng và ID phân vùng

Truy vấn:

Đầu ra

Giờ đây, chúng tôi có thể thiết lập rằng dữ liệu từ "kết xuất truncate" đã bị người dùng RP_DEV cắt bớt lúc 5:50 chiều theo ID giao dịch'0000:00016a95 '.

Kết luận

Sẽ rất hữu ích nếu bạn biết ai đã thực hiện thao tác cắt bớt và xóa trên dữ liệu để tránh điều này xảy ra lần nữa khi tính năng kiểm tra chưa được bật. Trong trường hợp thao tác xóa, doanh nghiệp sẽ biết có bao nhiêu hàng được xóa. Rất hữu ích để khôi phục dữ liệu. Các công cụ của bên thứ ba khác như ApexSQL Log và ApexSQL Recover cũng có thể được sử dụng để khôi phục dữ liệu. Hãy tham khảo liên kết này để có kiến ​​thức về các công cụ này:

Hãy để các chuyên gia của chúng tôi hướng dẫn bạn trong hành trình nền tảng dữ liệu thế hệ tiếp theo của bạn.

Sử dụng tab Phản hồi để đưa ra bất kỳ nhận xét hoặc đặt câu hỏi nào. Bạn cũng có thể bắt đầu cuộc trò chuyện với chúng tôi.