Chia sẻ ngay bây giờ:
Mục lục ẩn
8. Các trường hợp sử dụng thực tế và ví dụ

1. Giới thiệu

1.1 Là gì? SQL Server Sự kiện mở rộng?

SQL Server Extended Events là một hệ thống giám sát hiệu suất nhẹ cho phép quản trị viên và nhà phát triển thu thập và phân tích dữ liệu hoạt động chi tiết của máy chủ. Hệ thống này được tích hợp vào SQL Server Công cụ cơ sở dữ liệu cung cấp thông tin chi tiết toàn diện về cả hoạt động bình thường và các tình huống khắc phục sự cố.

1.2 Tại sao nên sử dụng Sự kiện mở rộng để giám sát?

SQL Server Extended Events cung cấp một số lợi thế hấp dẫn cho việc giám sát và khắc phục sự cố cơ sở dữ liệu:

  • Tác động tối thiểu đến hiệu suất với kiến ​​trúc nhẹ
  • Kiểm soát chi tiết việc thu thập dữ liệu và lọc sự kiện
  • Thu thập dữ liệu có thể tùy chỉnh theo nhu cầu giám sát cụ thể
  • Khả năng ghi lại các sự kiện từ nhiều gói cùng lúc
  • Khả năng lọc linh hoạt để tập trung vào các hoạt động có liên quan
  • Hỗ trợ giám sát hệ thống sản xuất mà không làm giảm trải nghiệm của người dùng
  • Theo dõi số liệu hiệu suất toàn diện
  • Khả năng chẩn đoán nâng cao để khắc phục sự cố
  • Bảo trì theo dõi kiểm toán để tuân thủ các yêu cầu
  • Tùy chọn phân tích dữ liệu theo thời gian thực và lịch sử

1.3 Sự kiện mở rộng so với SQL Server Profiler

Trong khi SQL Server Profiler Là một công cụ giám sát truyền thống, MS SQL Extended Events cung cấp một giải pháp thay thế hiệu quả hơn. Extended Events tiêu tốn ít tài nguyên hệ thống hơn và mang lại khả năng mở rộng tốt hơn cho môi trường sản xuất.

SQL Server Profiler hiện đã không còn được sử dụng nữa và Microsoft khuyến nghị nên chuyển sang Extended Events cho mọi hoạt động giám sát.

2. Hiểu về kiến ​​trúc sự kiện mở rộng

2.1 Các thành phần của công cụ sự kiện mở rộng

Công cụ Sự kiện Mở rộng bao gồm một số thành phần cốt lõi hoạt động cùng nhau để thu thập, xử lý và lưu trữ dữ liệu sự kiện. Hiểu rõ các thành phần này sẽ giúp bạn thiết kế các giải pháp giám sát hiệu quả.

  • Điều phối: Thành phần điều phối điều phối luồng sự kiện từ nguồn sự kiện đến công cụ Sự kiện Mở rộng. Khi một sự kiện được kích hoạt, bộ điều phối sẽ nhận thông báo và định tuyến thông báo đó đến các phiên đang hoạt động đã đăng ký loại sự kiện cụ thể đó.
  • đệm: Bộ đệm tạm thời lưu trữ dữ liệu sự kiện trong bộ nhớ trước khi ghi vào các đích đến. Cơ chế đệm này cải thiện hiệu suất bằng cách giảm các thao tác I/O. Kích thước bộ đệm và cài đặt quản lý có thể được cấu hình để cân bằng việc sử dụng bộ nhớ với các yêu cầu thu thập dữ liệu.
  • Phiên: Một phiên xác định phạm vi giám sát sự kiện. Nó chỉ định những sự kiện nào cần thu thập, những hành động nào cần thực hiện, những điều kiện nào cần áp dụng và nơi lưu trữ kết quả. Các phiên có thể được tạo, sửa đổi, bắt đầu và dừng một cách độc lập.
  • Thể hiện mục tiêu: Các thể hiện đích đại diện cho các điểm đến lưu trữ dữ liệu sự kiện đã được ghi lại. Mỗi phiên có thể ghi vào một hoặc nhiều đích, chẳng hạn như tệp, bộ đệm vòng hoặc bộ đếm. Các đích xử lý và lưu trữ thông tin sự kiện để phân tích sau này.

2.2 Gói sự kiện

SQL Server Extended Events tổ chức các chức năng thành các gói. Mỗi gói chứa các sự kiện, hành động, kiểu dữ liệu, vị từ và mục tiêu liên quan. Các gói phổ biến bao gồm sqlserver, sqlos và package0.

  • Gói sqlserver cung cấp các sự kiện cụ thể cho cơ sở dữ liệu như truy vấn và giao dịch.
  • Gói sqlos chứa các sự kiện của hệ điều hành.
  • Gói 0 cung cấp chức năng chung được sử dụng trên tất cả các gói.

2.3 Các loại sự kiện và trường

Sự kiện đại diện cho các sự kiện xảy ra trong SQL Server mà bạn muốn theo dõi. Mỗi loại sự kiện đều có các trường được xác định trước để thu thập thông tin liên quan. Ví dụ: sự kiện sql_statement_completed bao gồm các trường về thời lượng, thời gian CPU, số lần đọc và ghi.

Sự kiện có thể đồng bộ hoặc không đồng bộ. Sự kiện đồng bộ được kích hoạt trong quá trình vận hành, trong khi sự kiện không đồng bộ được kích hoạt sau khi hoàn tất. Hiểu rõ đặc điểm của sự kiện sẽ giúp bạn lựa chọn sự kiện phù hợp cho nhu cầu giám sát của mình.

2.4 hành động

Các hành động bổ sung thông tin hỗ trợ cho các sự kiện đã được ghi lại. Khi một sự kiện xảy ra, các hành động liên quan sẽ được thực thi để thu thập thêm ngữ cảnh như văn bản SQL, ID phiên hoặc thông tin ngăn xếp cuộc gọi.

Các thao tác phổ biến bao gồm sql_text để thu thập các câu lệnh truy vấn, database_name để xác định cơ sở dữ liệu và client_hostname để theo dõi máy chủ gốc. Các thao tác này cung cấp ngữ cảnh cần thiết cho việc khắc phục sự cố và phân tích.

2.5 Mục tiêu

Các mục tiêu xác định cách thức và vị trí lưu trữ dữ liệu sự kiện. SQL Server Sự kiện mở rộng hỗ trợ nhiều loại mục tiêu, bao gồm:

  • event_file để lưu trữ đĩa, cung cấp khả năng lưu trữ liên tục để phân tích chi tiết
  • ring_buffer để lưu giữ dựa trên bộ nhớ, cung cấp quyền truy cập nhanh vào các sự kiện gần đây với chi phí tối thiểu
  • event_counter để đếm đơn giản
  • biểu đồ histogram để nhóm
  • pair_matching để đối chiếu các sự kiện liên quan

2.6 Vị ngữ (Bộ lọc)

Các thuật ngữ dự đoán lọc sự kiện dựa trên các điều kiện được chỉ định, giúp giảm khối lượng dữ liệu được thu thập. Bạn có thể lọc theo tên cơ sở dữ liệu, tên ứng dụng, ID phiên, ngưỡng thời lượng hoặc bất kỳ giá trị trường sự kiện nào.

Việc sử dụng vị từ hiệu quả giúp giảm thiểu tác động đến hiệu suất bằng cách chỉ ghi lại các sự kiện có liên quan. Các vị từ phức tạp kết hợp nhiều điều kiện bằng các toán tử logic để tạo ra tiêu chí lọc chính xác.

3. Trạng thái phiên sự kiện mở rộng và vòng đời

3.1 Trạng thái phiên: TẠO, SỬA ĐỔI và XÓA

Các phiên Sự kiện mở rộng diễn ra qua các trạng thái riêng biệt:

  • Câu lệnh CREATE EVENT SESSION định nghĩa một phiên mới nhưng không khởi động nó. Phiên này tồn tại ở trạng thái dừng cho đến khi được kích hoạt một cách rõ ràng.
  • Câu lệnh ALTER EVENT SESSION sửa đổi cấu hình phiên hoặc thay đổi trạng thái của phiên giữa trạng thái dừng và trạng thái bắt đầu.
  • Câu lệnh DROP EVENT SESSION xóa hoàn toàn định nghĩa phiên khỏi máy chủ.

3.2 Nội dung và đặc điểm của phiên họp

Mỗi phiên chứa một tập hợp các sự kiện, hành động, mục tiêu và vị ngữ. Các phiên có ranh giới ngầm định xác định phạm vi và hành vi của chúng. Các tùy chọn cấu hình kiểm soát việc phân bổ bộ nhớ, thời gian lưu giữ sự kiện và độ trễ gửi.

Các đặc điểm của phiên bao gồm việc chúng có được duy trì sau khi khởi động lại máy chủ hay không, dung lượng bộ nhớ tối đa được phân bổ và cách chúng xử lý áp lực bộ nhớ. Những thiết lập này ảnh hưởng đáng kể đến hành vi của phiên và mức tiêu thụ tài nguyên.

3.3 Giới hạn và Gói Phiên

Ranh giới phiên xác định mối quan hệ giữa các sự kiện, mục tiêu và gói. Các sự kiện từ một gói có thể kích hoạt các hành động từ gói khác, mang lại sự linh hoạt trong các chiến lược thu thập dữ liệu.

Mối quan hệ gói cho phép bạn kết hợp các sự kiện từ nhiều nguồn trong một phiên duy nhất. Khả năng này cho phép giám sát toàn diện các kịch bản trải dài trên nhiều SQL Server các hệ thống con.

4. Tạo phiên sự kiện mở rộng bằng SSMS

4.1 Điều kiện tiên quyết và thiết lập

Trước khi tạo SQL Server Phiên Sự kiện Mở rộng, hãy đảm bảo bạn có quyền phù hợp. Bạn cần quyền "ALTER ANY EVENT SESSION" cho các phiên phạm vi máy chủ hoặc quyền "CONTROL" trên cơ sở dữ liệu cho các phiên phạm vi cơ sở dữ liệu.

Kiểm chứng SQL Server Management Studio đã được cài đặt và kết nối với máy chủ mục tiêu của bạn. Hãy làm quen với các yêu cầu giám sát và xác định những sự kiện và mục tiêu nào phù hợp nhất với nhu cầu của bạn.

4.2 Truy cập sự kiện mở rộng trong Object Explorer

Để truy cập giao diện Sự kiện mở rộng trong SSMS, hãy làm theo các bước sau:

  1. Mở SQL Server Studio quản lý và kết nối với bạn SQL Server ví dụ.
  2. Trong Object Explorer, mở rộng Quản lý -> Sự kiện mở rộng.
  3. Nút Sự kiện mở rộng chứa SessionsGói các thư mục để quản lý cấu hình giám sát của bạn.

Truy cập giao diện Sự kiện mở rộng trong SQL Server Phòng thu quản lý.

4.3 Tạo phiên mới

Để tạo phiên mới:

    1. Nhấp chuột phải vào Sessions thư mục dưới Sự kiện mở rộng.
    2. Chọn Phiên mới để mở hộp thoại cấu hình. Nội dung sau sẽ sử dụng phương pháp này để tạo phiên mới.

Tạo một Phiên mới của Sự kiện mở rộng trong SQL Server Phòng thu quản lý.

Lưu ý: Trình hướng dẫn phiên mới cũng có sẵn để có trải nghiệm được hướng dẫn nhiều hơn.

4.3.1 Cấu hình trang chung

trên Tổng quan trang, cấu hình các thuộc tính phiên cơ bản:

  1. Nhập tên phiên vào Tên phiên trường. Sử dụng tên mô tả cho biết mục đích giám sát.
  2. Tùy ý chọn Bắt đầu phiên sự kiện khi máy chủ khởi động. để kích hoạt phiên tự động.
  3. Mẫu phiên mặc định là Chỗ trống. Bạn có thể sử dụng các mẫu khác nếu sử dụng cấu hình được xác định trước.

Trang chung của phiên họp Sự kiện mở rộng trong SQL Server Phòng thu quản lý.

4.3.2 Thiết lập trang sự kiện

Sự kiện trang cho phép bạn chọn sự kiện nào để theo dõi:

  1. Chọn hình ba gạch Sự kiện trang từ bên trái Chọn một trang bảng điều khiển.
  2. Trong tạp chí Thư viện sự kiện, duyệt các sự kiện có sẵn hoặc sử dụng chức năng tìm kiếm.
  3. Lọc sự kiện bằng cách nhập từ khóa như “sql_statement_completed” để tìm sự kiện có liên quan.
  4. Chọn sự kiện mong muốn, chẳng hạn như sql_statement_completed.
  5. Nhấp vào nút mũi tên bên phải để di chuyển sự kiện đến Sự kiện đã chọn danh sách.

Trang sự kiện của phiên Sự kiện mở rộng trong SQL Server Phòng thu quản lý.

4.3.3 Cấu hình lưu trữ dữ liệu

Lưu trữ dữ liệu trang xác định nơi dữ liệu sự kiện được lưu trữ:

  1. Chọn hình ba gạch Lưu trữ dữ liệu trang từ bên trái Chọn một trang bảng điều khiển.
  2. Trong tạp chí Mục tiêu Trong khu vực này, hãy chọn loại mục tiêu từ menu thả xuống.

Trang lưu trữ dữ liệu của phiên Sự kiện mở rộng trong SQL Server Phòng thu quản lý.

(1) event_file Target

Mục tiêu event_file lưu trữ dữ liệu vào các tệp trên ổ đĩa với phần mở rộng .xel:

  1. Chọn tệp sự kiện từ menu thả xuống loại mục tiêu.
  2. Hãy chỉ định đường dẫn tệp, ví dụ như C:\temp\YourSession_Target.xel.
  3. Cấu hình tùy chọn chuyển tiếp để quản lý dung lượng đĩa bằng cách thiết lập kích thước tệp tối đa và số lượng tệp.
  4. Mục tiêu sẽ liên tục ghi các sự kiện cho đến khi phiên làm việc kết thúc hoặc đạt đến giới hạn dung lượng lưu trữ.

Đặt mục tiêu phiên thành event_file trong SSMS.

(2) ring_buffer Target

Mục tiêu ring_buffer lưu trữ các sự kiện trong bộ nhớ để truy cập nhanh mà không cần thao tác đọc/ghi dữ liệu từ ổ đĩa:

  1. Chọn vòng đệm là kiểu mục tiêu.
  2. Cấu hình phân bổ bộ nhớ tối đa cho bộ đệm.
  3. Hiểu rằng các sự kiện cũ hơn sẽ bị loại bỏ khi bộ đệm đầy, khiến điều này phù hợp để theo dõi hoạt động gần đây.

Đặt mục tiêu thành ring_buffer cho phiên Sự kiện mở rộng trong SQL Server Phòng thu quản lý.

(3) event_counter Target

Mục tiêu event_counter chỉ đơn giản là đếm số lần xảy ra sự kiện mà không lưu trữ dữ liệu chi tiết. Điều này giúp giảm thiểu chi phí khi bạn chỉ cần thông tin về tần suất.

Đặt mục tiêu thành event_counter cho phiên Sự kiện mở rộng trong SQL Server Phòng thu quản lý.

(4) Mục tiêu biểu đồ

Biểu đồ tần suất (histogram) nhóm các sự kiện theo một giá trị trường cụ thể, tạo ra số liệu thống kê phân bố. Điều này hữu ích để xác định các mẫu phổ biến hoặc các giá trị có tần suất cao.

Đặt mục tiêu thành biểu đồ tần số cho phiên Sự kiện mở rộng trong SQL Server Phòng thu quản lý.

(5) mục tiêu ghép cặp

Mục tiêu pair_matching liên kết các sự kiện có liên quan như việc giành và giải phóng khóa. Điều này cho phép phân tích các thao tác được ghép nối và mối quan hệ về thời gian giữa chúng.

Đặt mục tiêu phiên thành pair_matching trong SSMS.

4.3.4 Cài đặt nâng cao

Nâng cao trang cung cấp các tùy chọn cấu hình cấp độ phiên:

  1. Chọn hình ba gạch Nâng cao trang từ bên trái Chọn một trang bảng điều khiển.
  2. Thiết lập Chế độ lưu giữ sự kiện để kiểm soát cách xử lý các sự kiện dưới áp lực bộ nhớ.
  3. Thiết lập Độ trễ phân phối tối đa để cân bằng giữa xử lý thời gian thực với hiệu suất hệ thống.
  4. Thiết lập Kích thước bộ nhớ tối đaKích thước sự kiện tối đa dựa trên yêu cầu giám sát của bạn.
  5. Chọn Chế độ phân vùng bộ nhớ để tối ưu hóa cho môi trường một hoặc nhiều CPU.

Trang nâng cao của phiên trong SQL Server Phòng thu quản lý.

4.4 Cấu hình Bộ lọc sự kiện (Thuật ngữ)

Các thuật ngữ dự đoán làm giảm khối lượng dữ liệu bằng cách lọc sự kiện dựa trên các tiêu chí cụ thể. Để cấu hình bộ lọc:

  1. trên Sự kiện trang, chọn sự kiện bạn muốn lọc, chẳng hạn như “sql_statement_completed”.
  2. Nhấp chuột Thiết lập để mở hộp thoại cấu hình sự kiện.
    Cấu hình sự kiện của phiên Sự kiện mở rộng trong SQL Server Phòng thu quản lý.
  3. Chọn hình ba gạch Bộ lọc (Vị ngữ) tab.
  4. Trong tạp chí Phần menu thả xuống, chọn trường để lọc, chẳng hạn như thời lượng.
  5. Chọn một Nhà điều hành, chẳng hạn như ">".
  6. Nhập bộ lọc Giá trị, chẳng hạn như 1000000 (1 giây).
  7. Thêm điều kiện nếu cần thiết.

Cấu hình bộ lọc (thuật ngữ) cho một sự kiện.

4.5 Chọn trường hành động và sự kiện

Đối với mỗi sự kiện, bạn có thể chọn dữ liệu cần thu thập:

  1. trên Sự kiện trang, chọn sự kiện bạn muốn chọn dữ liệu, chẳng hạn như “sql_statement_completed”.
  2. Nhấp chuột Thiết lập để mở hộp thoại cấu hình sự kiện.
  3. Chọn hình ba gạch Các trường toàn cầu (Hành động) tab.
  4. Chọn các thao tác để thêm thông tin bổ sung, chẳng hạn như tên cơ sở dữ liệu hoặc tên ứng dụng khách.
    Cấu hình các hành động của một sự kiện.
  5. Xem lại Trường sự kiện phần để xem trường nào được tự động ghi lại.
  6. Xóa mọi trường không cần thiết để giảm khối lượng dữ liệu.
    Cấu hình các trường của sự kiện.

4.6 Bắt đầu và quản lý các buổi họp

Sau khi cấu hình phiên làm việc, bạn có thể khởi động và theo dõi hoạt động của nó:

  1. Nhấp chuột OK để tạo phiên.
  2. Trong Object Explorer, hãy mở rộng Sessions thư mục để xem phiên mới của bạn.
  3. Nhấp chuột phải vào tên phiên và chọn Bắt đầu phiên để bắt đầu ghi lại sự kiện.
    Bắt đầu phiên Sự kiện Mở rộng trong SQL Server Phòng thu quản lý.
  4. Để xem dữ liệu trực tiếp, hãy nhấp chuột phải vào phiên và chọn Xem dữ liệu trực tiếp.
    Xem dữ liệu trực tiếp của phiên Sự kiện mở rộng trong SQL Server Phòng thu quản lý.
  5. Dừng phiên bằng cách nhấp chuột phải và chọn Dừng phiên.

5. Tạo phiên sự kiện mở rộng bằng T-SQL

5.1 Cú pháp TẠO SỰ KIỆN PHIÊN

Việc tạo các phiên Sự kiện Mở rộng bằng T-SQL cung cấp khả năng kiểm soát chính xác và cho phép viết kịch bản để triển khai tự động. Câu lệnh CREATE EVENT SESSION tuân theo một cấu trúc cú pháp cụ thể.

Cú pháp cơ bản bao gồm tên phiên, mệnh đề ADD EVENT cho mỗi sự kiện, mệnh đề ADD TARGET cho các đích lưu trữ và mệnh đề WITH tùy chọn để cấu hình phiên.

5.2 Tạo phiên sự kiện cơ bản

Một phiên cơ bản giám sát các sự kiện cụ thể và ghi kết quả vào đích. Dưới đây là cách xây dựng các thành phần thiết yếu.

5.2.1 Xác định Tên Phiên và Tùy chọn

Hãy bắt đầu bằng cách tạo phiên với một tên mô tả rõ ràng:

CREATE EVENT SESSION [SampleSession] ON SERVER

Mệnh đề ON SERVER tạo một phiên làm việc ở phạm vi máy chủ, duy trì xuyên suốt các thay đổi của cơ sở dữ liệu. Đối với Cơ sở dữ liệu Azure SQL, hãy sử dụng ON DATABASE cho các phiên làm việc ở phạm vi cơ sở dữ liệu.

5.2.2 Thêm sự kiện bằng ADD EVENT

Thêm sự kiện để ghi lại bằng cách sử dụng mệnh đề ADD EVENT:

CREATE EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed

Lệnh này sẽ ghi lại tất cả các câu lệnh SQL đã hoàn tất. Bạn có thể thêm nhiều sự kiện bằng cách thêm các mệnh đề ADD EVENT.

5.2.3 Cấu hình Hành động Sự kiện

Các hành động thu thập thêm ngữ cảnh cho mỗi sự kiện. Thêm các hành động trong dấu ngoặc đơn sau tên sự kiện:

CREATE EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
    ACTION(sqlserver.sql_text, sqlserver.database_name, sqlserver.username)
)

Ví dụ này ghi lại văn bản SQL, tên cơ sở dữ liệu và tên người dùng cho mỗi câu lệnh đã hoàn thành.

5.2.4 Thiết lập các vị từ sự kiện (mệnh đề WHERE)

Các vị từ lọc sự kiện để giảm khối lượng dữ liệu. Sử dụng mệnh đề WHERE trong định nghĩa sự kiện:

CREATE EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
    ACTION(sqlserver.sql_text)
    WHERE ([package0].[greater_than_uint64]([duration],(5000000)))
)

Bộ lọc này lọc các câu lệnh có thời lượng dài hơn 5 giây (5,000,000 micro giây).

5.3 Thêm mục tiêu sự kiện

Các mục tiêu xác định nơi dữ liệu sự kiện được lưu trữ và cách thức xử lý dữ liệu đó.

5.3.1 Cú pháp THÊM MỤC TIÊU

Thêm các mục tiêu bằng cách sử dụng mệnh đề ADD TARGET sau khi tất cả các sự kiện đã được định nghĩa:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\SampleSession.xel'
)

Tiền tố package0 cho biết mục tiêu này đến từ gói cơ sở.

5.3.2 Cấu hình các tham số mục tiêu

Mỗi loại mục tiêu chấp nhận các tham số cụ thể. Đối với event_file, hãy cấu hình filename, max_file_size và max_rollover_files:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\SampleSession.xel',
        max_file_size=(50),
        max_rollover_files=(5)
)

Cấu hình này tạo ra các tệp có dung lượng lên tới 50 MB, duy trì tối đa 5 tệp khi chuyển tiếp.

5.4 Tùy chọn và cài đặt phiên

Mệnh đề WITH cấu hình các tùy chọn cấp độ phiên để kiểm soát hành vi và mức sử dụng tài nguyên.

5.4.1 MAX_MEMORY và EVENT_RETENTION_MODE

Kiểm soát việc phân bổ bộ nhớ và xử lý sự kiện dưới áp lực:

WITH (
    MAX_MEMORY=4096 KB,
    EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS
)

Các tùy chọn EVENT_RETENTION_MODE bao gồm ALLOW_SINGLE_EVENT_LOSS để sử dụng bộ nhớ tối thiểu, ALLOW_MULTIPLE_EVENT_LOSS để có mức tiêu hao bộ nhớ vừa phải, và NO_EVENT_LOSS để giữ lại toàn bộ dữ liệu với chi phí có thể ảnh hưởng đến hiệu năng.

5.4.2 ĐỘ TRỄ_PHÁT_HÀNH_TỐI_ĐA

Đặt thời gian tối đa mà các sự kiện có thể lưu trữ trong bộ đệm trước khi được ghi vào đích:

WITH (
    MAX_DISPATCH_LATENCY=30 SECONDS
)

Các giá trị thấp hơn cung cấp nhiều dữ liệu thời gian thực hơn nhưng phải trả giá bằng việc tăng số lượng thao tác I/O.

5.4.3 CHẾ ĐỘ_PHÂN_VÙNG_BỘ_NHỚ

Tối ưu hóa phân vùng bộ nhớ cho cấu hình phần cứng của bạn:

WITH (
    MEMORY_PARTITION_MODE=PER_CPU
)

Các tùy chọn bao gồm NONE cho phân vùng đơn, PER_NODE cho hệ thống NUMA và PER_CPU cho mức đồng thời tối đa trên hệ thống nhiều CPU.

5.5 Bắt đầu, dừng và thay đổi các buổi trị liệu

Quản lý trạng thái phiên và cấu hình thông qua các câu lệnh ALTER EVENT SESSION.

5.5.1 THAY ĐỔI PHIÊN SỰ KIỆN để Bắt đầu/Dừng

Bắt đầu phiên làm việc sau khi tạo:

ALTER EVENT SESSION [SampleSession] ON SERVER STATE = START;

Dừng phiên đang chạy:

ALTER EVENT SESSION [SampleSession] ON SERVER STATE = STOP;

5.5.2 Sửa đổi các phiên hiện có

Sửa đổi cấu hình phiên khi đã dừng. Thêm sự kiện:

ALTER EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_batch_completed;

Xóa sự kiện:

ALTER EVENT SESSION [SampleSession] ON SERVER
DROP EVENT sqlserver.sql_statement_completed;

5.5.3 Hủy bỏ các phiên sự kiện

Xóa hoàn toàn phiên bằng DROP EVENT SESSION:

DROP EVENT SESSION [SampleSession] ON SERVER;

Phiên làm việc phải dừng lại trước khi kết thúc.

6. Làm việc chi tiết với các mục tiêu sự kiện

6.1 Cấu hình mục tiêu event_file

Mục tiêu event_file cung cấp khả năng lưu trữ lâu dài dữ liệu sự kiện với các tùy chọn cấu hình linh hoạt.

6.1.1 Đường dẫn tệp và quy ước đặt tên

Chỉ định đường dẫn đầy đủ và tên tệp cho các tệp sự kiện:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\MySession.xel'
)

Sử dụng phần mở rộng .xel cho các tệp nhật ký sự kiện mở rộng. Đảm bảo SQL Server tài khoản dịch vụ có quyền ghi vào thư mục được chỉ định.

6.1.2 Quản lý kích thước và chuyển đổi tệp

Cấu hình tự động chuyển tệp để quản lý dung lượng đĩa:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\MySession.xel',
        max_file_size=(50),
        max_rollover_files=(10)
)

Khi một tập tin đạt đến 50 MB, SQL Server Sự kiện Mở rộng tạo một tệp mới với hậu tố tăng dần. Sau khi đạt đến 10 tệp, tệp cũ nhất sẽ bị ghi đè.

6.1.3 Đọc dữ liệu tệp sự kiện

Truy vấn dữ liệu tệp sự kiện bằng cách sử dụng hàm sys.fn_xe_file_target_read_file:

SELECT
    event_data,
    file_name,
    file_offset
FROM sys.fn_xe_file_target_read_file(
    'C:\XEvents\MySession*.xel',
    NULL, NULL, NULL
);

Mẫu ký tự đại diện sẽ đọc tất cả các tệp được liên kết với phiên.

6.2 ring_buffer Mục tiêu sử dụng

Mục tiêu ring_buffer lưu trữ các sự kiện trong bộ nhớ để truy cập nhanh vào hoạt động gần đây.

6.2.1 Lưu trữ sự kiện dựa trên bộ nhớ

Cấu hình ring_buffer cho bộ nhớ lưu trữ:

ADD TARGET package0.ring_buffer

Sự kiện chỉ có thể truy cập được khi phiên đang hoạt động và SQL Server đang chạy. Dữ liệu sẽ bị mất khi phiên làm việc kết thúc hoặc máy chủ khởi động lại.

6.2.2 Kích thước và cấu hình bộ đệm

Kiểm soát việc phân bổ bộ nhớ cho bộ đệm vòng:

ADD TARGET package0.ring_buffer(
    SET max_memory=(4096)
)

Chỉ định bộ nhớ theo KB. Khi bộ đệm đầy, các sự kiện cũ hơn sẽ bị loại bỏ theo phương pháp FIFO.

6.2.3 Truy vấn dữ liệu bộ đệm vòng

Truy cập dữ liệu bộ đệm vòng thông qua DMV:

SELECT
    CAST(target_data AS XML) AS TargetData
FROM sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
    ON s.address = t.event_session_address
WHERE s.name = 'YourSessionName'
    AND t.target_name = 'ring_buffer';

target_data chứa thông tin sự kiện được định dạng XML.

6.3 event_counter Target

Mục tiêu event_counter cung cấp chức năng đếm đơn giản mà không lưu trữ dữ liệu chi tiết:

ADD TARGET package0.event_counter

Mục tiêu này theo dõi tần suất sự kiện với chi phí tối thiểu, hữu ích cho việc giám sát khối lượng lớn, nơi chỉ số lượng là quan trọng.

6.4 Mục tiêu biểu đồ tần số

Biểu đồ tần suất nhắm mục tiêu các nhóm sự kiện theo giá trị trường:

ADD TARGET package0.histogram(
    SET filtering_event_name=N'sqlserver.sql_statement_completed',
        source_type=0,
        source=N'database_name'
)

Cấu hình này tạo ra biểu đồ thể hiện sự phân bổ của các sự kiện trên các cơ sở dữ liệu.

6.5 pair_matching Target

Mục tiêu pair_matching liên kết các sự kiện có liên quan như việc giành được khóa với việc giải phóng khóa:

ADD TARGET package0.pair_matching(
    SET begin_event=N'sqlserver.lock_acquired',
        end_event=N'sqlserver.lock_released',
        begin_matching_columns=N'resource_type',
        end_matching_columns=N'resource_type'
)

Điều này cho phép phân tích các hoạt động ghép nối và thời lượng của chúng.

7. Xem và phân tích dữ liệu sự kiện mở rộng

7.1 Sử dụng SSMS để xem dữ liệu trực tiếp

SQL Server Management Studio cung cấp giao diện đồ họa để xem dữ liệu Sự kiện mở rộng theo thời gian thực:

  1. Trong Object Explorer, mở rộng Quản lý -> Sự kiện mở rộng -> Sessions.
  2. Nhấp chuột phải vào phiên đang hoạt động của bạn.
  3. Chọn Xem dữ liệu trực tiếp để mở trình xem dữ liệu trực tiếp.
    Xem dữ liệu trực tiếp của phiên Sự kiện mở rộng trong SQL Server Phòng thu quản lý.
  4. Các sự kiện sẽ xuất hiện trên lưới khi chúng xảy ra.
  5. Nhấp vào từng sự kiện để xem giá trị trường chi tiết trong ngăn chi tiết.
    Xem dữ liệu trực tiếp của các sự kiện, bao gồm thông tin chi tiết về sự kiện.
  6. Sử dụng bộ lọc thanh công cụ để tập trung vào các loại sự kiện hoặc giá trị trường cụ thể.

7.2 Truy vấn dữ liệu tệp sự kiện bằng T-SQL

Các truy vấn T-SQL cung cấp khả năng phân tích linh hoạt dữ liệu sự kiện đã thu thập.

7.2.1 Hàm sys.fn_xe_file_target_read_file

Đọc dữ liệu tệp sự kiện bằng cách sử dụng hàm hệ thống này:

SELECT
    object_name AS EventName,
    CAST(event_data AS XML) AS EventData,
    file_name,
    file_offset,
    timestamp_utc
FROM sys.fn_xe_file_target_read_file(
    'C:\XEvents\MySession*.xel',
    NULL, NULL, NULL
);

Hàm này trả về một hàng cho mỗi sự kiện với thông tin chi tiết được định dạng XML.

7.2.2 Phân tích dữ liệu sự kiện XML

Trích xuất các giá trị cụ thể từ dữ liệu sự kiện XML:

SELECT
    event_data.value('(event/@name)[1]', 'VARCHAR(50)') AS EventName,
    event_data.value('(event/@timestamp)[1]', 'DATETIME2') AS Timestamp,
    event_data.value('(event/data[@name="duration"]/value)[1]', 'BIGINT') AS Duration,
    event_data.value('(event/data[@name="statement"]/value)[1]', 'VARCHAR(MAX)') AS Statement
FROM (
    SELECT CAST(event_data AS XML) AS event_data
    FROM sys.fn_xe_file_target_read_file(
        'C:\XEvents\MySession*.xel',
        NULL, NULL, NULL
    )
) AS EventData;

Biểu thức XQuery trích xuất các giá trị trường riêng lẻ từ cấu trúc XML.

7.2.3 Chuyển đổi dữ liệu sự kiện thành bảng

Tạo tập kết quả có cấu trúc từ dữ liệu sự kiện:

WITH EventData AS (
    SELECT CAST(event_data AS XML) AS EventXML
    FROM sys.fn_xe_file_target_read_file(
        'C:\XEvents\MySession*.xel',
        NULL, NULL, NULL
    )
)
SELECT
    EventXML.value('(event/@name)[1]', 'VARCHAR(100)') AS EventName,
    EventXML.value('(event/data[@name="cpu_time"]/value)[1]', 'BIGINT') AS CPUTime,
    EventXML.value('(event/data[@name="physical_reads"]/value)[1]', 'BIGINT') AS PhysicalReads,
    EventXML.value('(event/action[@name="sql_text"]/value)[1]', 'VARCHAR(MAX)') AS SQLText,
    EventXML.value('(event/action[@name="database_name"]/value)[1]', 'VARCHAR(128)') AS DatabaseName
FROM EventData;

7.3 Truy vấn dữ liệu bộ đệm vòng

Trích xuất dữ liệu từ các mục tiêu ring_buffer:

SELECT
    n.value('(@name)[1]', 'VARCHAR(50)') AS EventName,
    n.value('(@timestamp)[1]', 'DATETIME2') AS Timestamp,
    n.value('(data[@name="duration"]/value)[1]', 'BIGINT') AS Duration,
    n.value('(action[@name="sql_text"]/value)[1]', 'VARCHAR(MAX)') AS SQLText
FROM (
    SELECT CAST(target_data AS XML) AS TargetData
    FROM sys.dm_xe_session_targets AS t
    JOIN sys.dm_xe_sessions AS s
        ON s.address = t.event_session_address
    WHERE s.name = 'YourSessionName'
        AND t.target_name = 'ring_buffer'
) AS Data
CROSS APPLY TargetData.nodes('//event') AS q(n);

7.4 Chế độ xem hệ thống cho sự kiện mở rộng

SQL Server cung cấp một số DMV và chế độ xem danh mục để quản lý và giám sát các phiên Sự kiện mở rộng.

7.4.1 sys.server_event_sessions

Xem định nghĩa phiên được lưu trữ trên máy chủ:

SELECT
    name,
    event_retention_mode_desc,
    max_dispatch_latency,
    max_memory,
    max_event_size,
    memory_partition_mode_desc
FROM sys.server_event_sessions;

Chế độ xem danh mục này hiển thị thông tin chi tiết về cấu hình cho tất cả các phiên đã xác định.

7.4.2 sys.dm_xe_sessions

Xem các phiên đang hoạt động:

SELECT
    name,
    create_time,
    total_regular_buffers,
    regular_buffer_size,
    total_large_buffers,
    large_buffer_size
FROM sys.dm_xe_sessions;

DMV này cung cấp thông tin thời gian chạy về các phiên Sự kiện mở rộng đang hoạt động.

7.4.3 sys.dm_xe_session_targets

Xem các mục tiêu liên quan đến các phiên hoạt động:

SELECT
    s.name AS SessionName,
    t.target_name,
    t.execution_count,
    t.execution_duration_ms
FROM sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
    ON s.address = t.event_session_address;

7.4.4 Các DMV hữu ích khác

Các chế độ xem bổ sung cung cấp thông tin phiên toàn diện:

  • sys.dm_xe_session_events: Liệt kê các sự kiện trong các phiên đang hoạt động
  • sys.dm_xe_session_event_actions: Hiển thị các hành động được cấu hình cho các sự kiện phiên
  • sys.dm_xe_objects: Liệt kê tất cả các sự kiện, hành động và mục tiêu có sẵn.
  • sys.dm_xe_object_columns: Các trường chi tiết có sẵn cho từng loại sự kiện
  • sys.dm_xe_packages: Liệt kê tất cả các gói Sự kiện mở rộng

8. Các trường hợp sử dụng thực tế và ví dụ

8.1 Giám sát việc thực thi câu lệnh SQL

Theo dõi việc thực thi câu lệnh SQL cung cấp thông tin chi tiết về các mẫu truy vấn và đặc điểm hiệu suất.

8.1.1 Theo dõi sự kiện sql_statement_completed

Tạo phiên để theo dõi các câu lệnh SQL đã hoàn thành:

CREATE EVENT SESSION [QueryMonitoring] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
    ACTION(
        sqlserver.sql_text,
        sqlserver.database_name,
        sqlserver.client_hostname,
        sqlserver.username
    )
)
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\QueryMonitoring.xel',
        max_file_size=(100),
        max_rollover_files=(5)
)
WITH (
    MAX_MEMORY=4096 KB,
    EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,
    MAX_DISPATCH_LATENCY=30 SECONDS,
    STARTUP_STATE=OFF
);

ALTER EVENT SESSION [QueryMonitoring] ON SERVER STATE = START;

8.1.2 Lọc theo Cơ sở dữ liệu hoặc Ứng dụng

Tập trung vào các cơ sở dữ liệu hoặc ứng dụng cụ thể bằng cách sử dụng các vị từ:

CREATE EVENT SESSION [AppSpecificMonitoring] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
    ACTION(sqlserver.sql_text, sqlserver.client_app_name)
    WHERE (
        [sqlserver].[database_name] = N'YourDatabase'
        AND [sqlserver].[client_app_name] LIKE N'YourApplication%'
    )
)
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\AppMonitoring.xel'
);

8.2 Ghi lại thông tin bế tắc

Phân tích bế tắc đòi hỏi phải thu thập thông tin chi tiết về các giao dịch xung đột.

8.2.1 Sự kiện xml_deadlock_report

Tạo phiên để ghi lại toàn bộ biểu đồ bế tắc:

CREATE EVENT SESSION [DeadlockMonitoring] ON SERVER
ADD EVENT sqlserver.xml_deadlock_report(
    ACTION(
        sqlserver.database_name,
        sqlserver.sql_text
    )
)
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\Deadlocks.xel'
)
WITH (STARTUP_STATE=ON);

ALTER EVENT SESSION [DeadlockMonitoring] ON SERVER STATE = START;

8.2.2 Phân tích đồ thị bế tắc

Trích xuất và phân tích thông tin bế tắc:

SELECT
    EventXML.value('(event/@timestamp)[1]', 'DATETIME2') AS DeadlockTime,
    EventXML.query('.') AS DeadlockGraph
FROM (
    SELECT CAST(event_data AS XML) AS EventXML
    FROM sys.fn_xe_file_target_read_file(
        'C:\XEvents\Deadlocks*.xel',
        NULL, NULL, NULL
    )
) AS EventData
WHERE EventXML.value('(event/@name)[1]', 'VARCHAR(50)') = 'xml_deadlock_report';

Biểu đồ bế tắc chứa thông tin chi tiết về quy trình, tài nguyên và lựa chọn nạn nhân.

8.3 Theo dõi các vấn đề về hiệu suất truy vấn

Xác định các truy vấn có hiệu suất kém bằng cách sử dụng số liệu về thời lượng và mức tiêu thụ tài nguyên.

8.3.1 Phát hiện truy vấn chạy dài

Ghi lại các truy vấn vượt quá ngưỡng thời lượng cụ thể:

CREATE EVENT SESSION [LongRunningQueries] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
    ACTION(
        sqlserver.sql_text,
        sqlserver.database_name,
        sqlserver.plan_handle
    )
    WHERE ([duration] > 5000000)  -- 5 seconds in microseconds
)
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\LongQueries.xel'
);

8.3.2 Phân tích kế hoạch thực hiện

Ghi lại các kế hoạch truy vấn để phân tích hiệu suất:

CREATE EVENT SESSION [QueryPlans] ON SERVER
ADD EVENT sqlserver.query_post_execution_showplan(
    ACTION(
        sqlserver.sql_text,
        sqlserver.database_name
    )
    WHERE ([duration] > 10000000)  -- 10 seconds
)
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\QueryPlans.xel',
    max_file_size=(200)
);

8.4 Giám sát sự kiện đăng nhập và bảo mật

Theo dõi các hoạt động xác thực và ủy quyền để kiểm tra bảo mật.

8.4.1 Theo dõi thành công và thất bại khi đăng nhập

Theo dõi cả những lần đăng nhập thành công và thất bại:

CREATE EVENT SESSION [LoginMonitoring] ON SERVER
ADD EVENT sqlserver.login(
    ACTION(
        sqlserver.client_hostname,
        sqlserver.client_app_name
    )
),
ADD EVENT sqlserver.login_failed(
    ACTION(
        sqlserver.client_hostname
    )
)
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\Logins.xel'
)
WITH (STARTUP_STATE=ON);

8.4.2 Thay đổi quyền

Theo dõi các sửa đổi về quyền bảo mật:

CREATE EVENT SESSION [SecurityChanges] ON SERVER
ADD EVENT sqlserver.server_principal_management_event,
ADD EVENT sqlserver.database_principal_management_event,
ADD EVENT sqlserver.database_permission_change_event
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\SecurityAudit.xel'
);

8.5 Giám sát cấp cơ sở dữ liệu

Theo dõi các hoạt động cụ thể của cơ sở dữ liệu và các thay đổi trạng thái.

8.5.1 Sự kiện sao lưu và khôi phục

Theo dõi hoạt động sao lưu và khôi phục:

CREATE EVENT SESSION [BackupMonitoring] ON SERVER
ADD EVENT sqlserver.backup_restore_progress_trace,
ADD EVENT sqlserver.databases_backup_restore_event
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\BackupRestore.xel'
);

8.5.2 Thay đổi trạng thái cơ sở dữ liệu

Theo dõi quá trình chuyển đổi trạng thái cơ sở dữ liệu:

CREATE EVENT SESSION [DatabaseStateChanges] ON SERVER
ADD EVENT sqlserver.database_started,
ADD EVENT sqlserver.database_stopped
ADD TARGET package0.ring_buffer;

8.6 Phát hiện sự cố hỏng hóc và toàn vẹn cơ sở dữ liệu

SQL Server Extended Events cung cấp khả năng cảnh báo sớm để phát hiện lỗi cơ sở dữ liệu tiềm ẩn, cho phép can thiệp chủ động trước khi các vấn đề trở nên nghiêm trọng hơn.

8.6.1 Các sự kiện chính để phát hiện tham nhũng

Một số sự kiện báo hiệu nguy cơ hỏng hóc hoặc vấn đề I/O.

8.6.1.1 Sự kiện error_reported cho Lỗi nghiêm trọng

Sự kiện error_reported ghi lại tất cả SQL Server lỗi, bao gồm số lỗi liên quan đến tham nhũng:

ADD EVENT sqlserver.error_reported(
    WHERE (
        [severity] >= (20)
        OR [error_number] IN (823, 824, 825, 832, 855, 856)
    )
)

Lỗi 823 biểu thị lỗi I/O, lỗi 824 báo hiệu lỗi nhất quán logic và lỗi 825 báo cáo thành công khi thử đọc lại có thể chỉ ra sự cố phần cứng.

8.6.1.2 Sự kiện database_suspect_data_page

Sự kiện này xảy ra khi SQL Server gặp phải một trang đáng ngờ:

ADD EVENT sqlserver.database_suspect_data_page

Các trang nghi ngờ cho biết có khả năng bị hỏng và được ghi lại trong bảng msdb.dbo.suspect_pages.

8.6.1.3 errorlog_writing Sự kiện

Ghi lại các mục được viết vào SQL Server nhật ký lỗi:

ADD EVENT sqlserver.errorlog_written(
    WHERE ([severity] >= (16))
)

8.6.2 Tạo phiên giám sát tham nhũng

Thiết lập phiên họp toàn diện để phát hiện và giám sát tham nhũng.

8.6.2.1 Lọc số lỗi hỏng (823, 824, 825)

Hãy tạo một phiên thảo luận chuyên sâu tập trung vào các chỉ số tham nhũng:

CREATE EVENT SESSION [CorruptionDetection] ON SERVER
ADD EVENT sqlserver.error_reported(
    ACTION(
        sqlserver.database_name,
        sqlserver.sql_text
    )
    WHERE (
        [error_number] IN (823, 824, 825, 832, 855, 856)
        OR [severity] >= (20)
    )
),
ADD EVENT sqlserver.database_suspect_data_page(
    ACTION(
        sqlserver.database_name
    )
)
8.6.2.2 Thiết lập mức độ nghiêm trọng thích hợp

Bao gồm các lỗi có mức độ nghiêm trọng cao có thể chỉ ra sự hư hỏng:

WHERE (
    [severity] >= (20)
    OR [error_number] IN (823, 824, 825)
)

Mức độ nghiêm trọng từ 20 trở lên biểu thị các vấn đề ở cấp độ hệ thống thường liên quan đến tham nhũng.

8.6.2.3 Cấu hình mục tiêu tệp sự kiện cho cảnh báo

Lưu trữ các sự kiện hỏng hóc để phân tích và cảnh báo:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\CorruptionMonitoring.xel',
        max_file_size=(50),
        max_rollover_files=(10)
)
WITH (
    STARTUP_STATE=ON,
    MAX_DISPATCH_LATENCY=5 SECONDS
);

ALTER EVENT SESSION [CorruptionDetection] ON SERVER STATE = START;

8.6.3 Phân tích dữ liệu sự kiện tham nhũng

Trích xuất và diễn giải các sự kiện liên quan đến tham nhũng từ dữ liệu đã thu thập.

8.6.3.1 Xác định các trang đáng ngờ

Truy vấn sự kiện database_suspect_data_page:

SELECT
    EventXML.value('(event/@timestamp)[1]', 'DATETIME2') AS EventTime,
    EventXML.value('(event/data[@name="database_id"]/value)[1]', 'INT') AS DatabaseID,
    EventXML.value('(event/data[@name="file_id"]/value)[1]', 'INT') AS FileID,
    EventXML.value('(event/data[@name="page_id"]/value)[1]', 'BIGINT') AS PageID,
    EventXML.value('(event/action[@name="database_name"]/value)[1]', 'VARCHAR(128)') AS DatabaseName
FROM (
    SELECT CAST(event_data AS XML) AS EventXML
    FROM sys.fn_xe_file_target_read_file(
        'C:\XEvents\CorruptionMonitoring*.xel',
        NULL, NULL, NULL
    )
) AS EventData
WHERE EventXML.value('(event/@name)[1]', 'VARCHAR(50)') = 'database_suspect_data_page';
8.6.3.2 Trích xuất chi tiết lỗi và ngữ cảnh

Phân tích các sự kiện error_reported để tìm ra các mẫu hỏng hóc:

SELECT
    EventXML.value('(event/@timestamp)[1]', 'DATETIME2') AS ErrorTime,
    EventXML.value('(event/data[@name="error_number"]/value)[1]', 'INT') AS ErrorNumber,
    EventXML.value('(event/data[@name="severity"]/value)[1]', 'INT') AS Severity,
    EventXML.value('(event/data[@name="message"]/value)[1]', 'VARCHAR(MAX)') AS ErrorMessage,
    EventXML.value('(event/action[@name="database_name"]/value)[1]', 'VARCHAR(128)') AS DatabaseName,
    EventXML.value('(event/action[@name="sql_text"]/value)[1]', 'VARCHAR(MAX)') AS SQLText
FROM (
    SELECT CAST(event_data AS XML) AS EventXML
    FROM sys.fn_xe_file_target_read_file(
        'C:\XEvents\CorruptionMonitoring*.xel',
        NULL, NULL, NULL
    )
) AS EventData
WHERE EventXML.value('(event/@name)[1]', 'VARCHAR(50)') = 'error_reported'
    AND EventXML.value('(event/data[@name="error_number"]/value)[1]', 'INT') IN (823, 824, 825);

8.6.4 Tích hợp với DBCC CHECKDB

Sử dụng dữ liệu Sự kiện mở rộng để hướng dẫn DBCC KIỂM TRADB chấp hành.

8.6.4.1 Kích hoạt DBCC CHECKDB dựa trên sự kiện

Khi phát hiện sự kiện hỏng hóc, hãy thực thi DBCC CHECKDB để xác thực toàn diện:

-- After detecting corruption events, run DBCC CHECKDB
DBCC CHECKDB ('YourDatabaseName') WITH NO_INFOMSGS, ALL_ERRORMSGS;

Extended Events cung cấp cảnh báo sớm, trong khi DBCC CHECKDB thực hiện xác thực kỹ lưỡng.

8.6.4.2 Quy trình ứng phó tham nhũng tự động

Triển khai phản hồi tự động bằng cách theo dõi tệp sự kiện:

  1. Thiết lập SQL Server Nhiệm vụ của tác nhân là truy vấn định kỳ tệp sự kiện giám sát tham nhũng.
  2. Khi phát hiện sự kiện hỏng hóc, hãy thực thi DBCC CHECKDB trên cơ sở dữ liệu bị ảnh hưởng.
  3. Gửi cảnh báo qua email tới DBA với thông tin chi tiết về sự kiện và kết quả DBCC CHECKDB.
  4. Ghi lại các phát hiện vào bảng giám sát tập trung để phân tích xu hướng.
8.6.4.3 Cân bằng giữa giám sát chủ động và hiệu suất

Sự kiện mở rộng cung cấp khả năng phát hiện lỗi ít tốn kém hơn so với việc thực hiện DBCC CHECKDB thường xuyên:

  • Chạy sự kiện mở rộng liên tục để phát hiện lỗi theo thời gian thực
  • Chỉ thực hiện DBCC CHECKDB khi xuất hiện các chỉ báo hỏng hóc
  • Lên lịch DBCC CHECKDB thường xuyên trong thời gian bảo trì
  • Sử dụng Sự kiện mở rộng để xác định cơ sở dữ liệu nào cần được chú ý ngay lập tức

Cách tiếp cận này cung cấp khả năng giám sát chủ động mà không cần tiêu tốn nhiều tài nguyên để kiểm tra tính toàn vẹn liên tục.

8.6.4.4 Sửa chữa cơ sở dữ liệu bị hỏng

Nếu phát hiện lỗi trong cơ sở dữ liệu, bạn có thể sử dụng DBCC CHECKDB để sửa lỗi nhỏ. Nếu không thành công, bạn có thể thử sử dụng phần mềm của bên thứ ba. Công cụ phục hồi cơ sở dữ liệu SQL, thường cung cấp tỷ lệ phục hồi cao hơn đối với các cơ sở dữ liệu bị hỏng nghiêm trọng.

9. Sự kiện mở rộng trong phạm vi máy chủ so với sự kiện mở rộng trong phạm vi cơ sở dữ liệu

9.1 Phiên sự kiện phạm vi máy chủ

Các phiên hoạt động trong phạm vi máy chủ giám sát hoạt động trên toàn bộ SQL Server Ví dụ. Các phiên này được tạo bằng mệnh đề ON SERVER và lưu trong cơ sở dữ liệu chính.

CREATE EVENT SESSION [ServerWideMonitoring] ON SERVER
ADD EVENT sqlserver.sql_statement_completed
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\ServerWide.xel'
);

Các phiên ở phạm vi máy chủ sẽ ghi lại các sự kiện từ tất cả các cơ sở dữ liệu và phù hợp để giám sát ở cấp độ phiên bản.

9.2 Phiên sự kiện trong phạm vi cơ sở dữ liệu (Cơ sở dữ liệu Azure SQL)

Các phiên trong phạm vi cơ sở dữ liệu bị giới hạn ở một cơ sở dữ liệu duy nhất và chủ yếu được sử dụng trong Azure SQL Database nơi quyền truy cập cấp máy chủ bị hạn chế:

CREATE EVENT SESSION [DatabaseSpecificMonitoring] ON DATABASE
ADD EVENT sqlserver.sql_statement_completed
ADD TARGET package0.event_file(
    SET filename=N'DatabaseMonitoring.xel'
);

Trong Azure SQL Database, các tệp sự kiện được lưu trữ trong Azure Blob Storage thay vì hệ thống tệp cục bộ.

9.3 Sự khác biệt và trường hợp sử dụng

Phiên máy chủ cung cấp khả năng giám sát toàn diện trên tất cả cơ sở dữ liệu nhưng yêu cầu quyền cao hơn. Phiên máy chủ cung cấp khả năng cô lập và phù hợp khi giám sát các ứng dụng hoặc đối tượng thuê cụ thể.

Sử dụng các phiên máy chủ để giám sát tập trung, xử lý sự cố hiệu suất trên toàn bộ cơ sở dữ liệu và kiểm tra bảo mật. Sử dụng các phiên máy chủ trong Cơ sở dữ liệu Azure SQL, môi trường đa thuê bao hoặc khi phân quyền giám sát cho các nhóm ứng dụng.

10. Sự kiện mở rộng trong Cơ sở dữ liệu Azure SQL

10.1 Những cân nhắc dành riêng cho Azure

Cơ sở dữ liệu Azure SQL triển khai Sự kiện mở rộng với một số khác biệt so với tại chỗ SQL Server. Phiên được giới hạn trong phạm vi cơ sở dữ liệu theo mặc định và lưu trữ tệp sự kiện sử dụng Azure Blob Storage thay vì hệ thống tệp cục bộ.

Xác thực với Azure Blob Storage yêu cầu mã thông báo SAS được cấu hình trong mục tiêu tệp sự kiện. Chuỗi kết nối tham chiếu đến tài khoản lưu trữ và vùng chứa nơi các tệp sự kiện được lưu trữ.

10.2 Các mục tiêu khả dụng trong Azure

Azure SQL Database hỗ trợ các mục tiêu Sự kiện Mở rộng sau:

  • event_file: Ghi vào Azure Blob Storage
  • ring_buffer: Lưu trữ dựa trên bộ nhớ có cùng hành vi như tại chỗ
  • event_counter: Đếm số lần sự kiện xảy ra

Mục tiêu event_file yêu cầu cấu hình với thông tin xác thực Azure Blob Storage:

ADD TARGET package0.event_file(
    SET filename=N'https://yourstorageaccount.blob.core.windows.net/container/EventFile.xel'
)

10.3 Tạo phiên có phạm vi cơ sở dữ liệu

Tạo phiên trong Cơ sở dữ liệu Azure SQL:

CREATE EVENT SESSION [AzureMonitoring] ON DATABASE
ADD EVENT sqlserver.sql_statement_completed(
    ACTION(sqlserver.sql_text, sqlserver.database_name)
)
ADD TARGET package0.ring_buffer
WITH (MAX_MEMORY=4096 KB);

ALTER EVENT SESSION [AzureMonitoring] ON DATABASE STATE = START;

Các phiên có phạm vi cơ sở dữ liệu trong Azure hoạt động tương tự như các phiên có phạm vi máy chủ tại chỗ nhưng phạm vi bị giới hạn ở cơ sở dữ liệu hiện tại.

11. Thực hành tốt nhất và tối ưu hóa hiệu suất

11.1 Giảm thiểu tác động đến hiệu suất

Sự kiện Mở rộng được thiết kế để giảm thiểu chi phí, nhưng cấu hình không phù hợp có thể ảnh hưởng đến hiệu suất. Hãy làm theo các hướng dẫn sau:

  • Sử dụng các thuật ngữ cụ thể để lọc các sự kiện thay vì ghi lại mọi thứ
  • Tránh thu thập các hành động không cần thiết làm tăng thêm chi phí xử lý
  • Chọn các mục tiêu phù hợp dựa trên nhu cầu lưu trữ dữ liệu.
  • Đặt kích thước bộ đệm hợp lý và độ trễ phân phối
  • Giám sát mức tiêu thụ tài nguyên phiên bằng DMV

11.2 Chọn Sự kiện và Bộ lọc Phù hợp

Chọn các sự kiện liên quan trực tiếp đến mục tiêu giám sát của bạn. Tránh các sự kiện có tần suất cao trừ khi cần thiết và luôn áp dụng các thuật toán dự đoán để giảm khối lượng dữ liệu.

Ví dụ, thay vì ghi lại tất cả các sự kiện sql_statement_completed, hãy lọc theo cơ sở dữ liệu cụ thể hoặc ngưỡng thời lượng:

WHERE (
    [sqlserver].[database_name] = N'ProductionDB'
    AND [duration] > 1000000
)

11.3 Hướng dẫn lựa chọn mục tiêu

Hãy lựa chọn mục tiêu dựa trên yêu cầu phân tích của bạn:

  • Sử dụng event_file để phân tích lịch sử chi tiết và lưu giữ lâu dài
  • Sử dụng ring_buffer để theo dõi thời gian thực với tác động I/O tối thiểu
  • Sử dụng event_counter khi chỉ tần suất là quan trọng
  • Sử dụng biểu đồ histogram để phân tích phân phối
  • Sử dụng pair_matching để phân tích sự kiện tương quan

11.4 Khuyến nghị về cấu hình phiên

Cấu hình phiên với giới hạn tài nguyên phù hợp:

  • Đặt MAX_MEMORY dựa trên khối lượng sự kiện dự kiến ​​và tài nguyên máy chủ
  • Sử dụng ALLOW_SINGLE_EVENT_LOSS để giảm thiểu chi phí trong hầu hết các trường hợp.
  • Đặt MAX_DISPATCH_LATENCY để cân bằng nhu cầu thời gian thực với hiệu suất
  • Sử dụng phân vùng bộ nhớ PER_CPU trên các hệ thống đa bộ xử lý
  • Tránh sử dụng STARTUP_STATE=ON trừ khi cần giám sát liên tục.

11.5 Quản lý kích thước và lưu giữ tệp sự kiện

Cấu hình chuyển tệp để ngăn chặn việc sử dụng đĩa không giới hạn:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\Session.xel',
        max_file_size=(100),
        max_rollover_files=(10)
)

Cấu hình này lưu trữ khoảng 1 GB dữ liệu sự kiện (10 tệp × 100 MB). Có thể điều chỉnh dựa trên yêu cầu lưu trữ và dung lượng lưu trữ khả dụng của bạn.

12. Khắc phục sự cố sự kiện mở rộng

12.1 Các vấn đề thường gặp và giải pháp

Các sự cố thường gặp của Extended Events bao gồm: phiên không thu thập được dữ liệu, hiệu suất giảm sút, sự cố về đích tập tin và hành vi phiên không mong muốn.

12.2 Phiên không ghi lại dữ liệu

Nếu phiên không ghi lại được các sự kiện mong đợi:

  1. Xác minh xem phiên đã được bắt đầu bằng cách sử dụng sys.dm_xe_sessions.
  2. Kiểm tra các thuật ngữ để đảm bảo chúng không lọc ra tất cả các sự kiện.
  3. Xác nhận các sự kiện đang được kích hoạt bằng cách tạm thời gỡ bỏ các bộ lọc.
  4. Xem lại quyền để đảm bảo bạn có quyền xem dữ liệu phiên.
  5. Hãy kiểm tra xem cấu hình mục tiêu có chính xác và có thể ghi được hay không.
SELECT name, create_time
FROM sys.dm_xe_sessions
WHERE name = 'YourSessionName';

12.3 Giảm hiệu suất

Nếu Sự kiện mở rộng gây ra sự cố về hiệu suất:

  1. Thêm các thuật ngữ để giảm khối lượng sự kiện.
  2. Loại bỏ các thao tác không cần thiết thu thập dữ liệu bổ sung.
  3. Tăng MAX_DISPATCH_LATENCY để giảm tần suất ghi.
  4. Thay đổi EVENT_RETENTION_MODE thành ALLOW_SINGLE_EVENT_LOSS.
  5. Hãy cân nhắc sử dụng ring_buffer thay vì event_file cho các sự kiện tần suất cao.

12.4 Các vấn đề về đích tập tin

Các sự cố liên quan đến tệp đích thường liên quan đến quyền truy cập hoặc dung lượng ổ đĩa:

  1. Xác minh SQL Server Tài khoản dịch vụ có quyền ghi vào thư mục đích.
  2. Đảm bảo có đủ dung lượng đĩa.
  3. Kiểm tra xem đường dẫn đã chỉ định có tồn tại và có thể truy cập được không.
  4. Xem lại cấu hình chuyển tệp nếu tệp không được chuyển như mong đợi.

12.5 Gỡ lỗi bằng chế độ xem hệ thống

Sử dụng DMV để chẩn đoán các sự cố Sự kiện kéo dài:

-- Check session status
SELECT s.name, s.create_time, s.total_regular_buffers, s.total_large_buffers
FROM sys.dm_xe_sessions AS s;

-- View session targets and their status
SELECT
    s.name AS SessionName,
    t.target_name,
    t.execution_count,
    CAST(t.target_data AS XML) AS TargetData
FROM sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
    ON s.address = t.event_session_address;

-- Check for dropped events
SELECT s.name, s.dropped_event_count, s.dropped_buffer_count
FROM sys.dm_xe_sessions AS s;

13. Chủ đề nâng cao

13.1 Tạo các gói sự kiện tùy chỉnh

Người dùng nâng cao có thể tạo các gói sự kiện tùy chỉnh để mở rộng SQL Server Chức năng Sự kiện Mở rộng. Điều này yêu cầu phát triển C++ và tích hợp với SQL Server khung mở rộng.

Các gói tùy chỉnh cho phép giám sát các sự kiện cụ thể của ứng dụng hoặc tích hợp hệ thống giám sát của bên thứ ba với cơ sở hạ tầng Sự kiện mở rộng.

13.2 Mẫu phiên sự kiện

SSMS cung cấp các mẫu tích hợp cho các tình huống giám sát phổ biến. Truy cập các mẫu khi tạo phiên mới thông qua trình hướng dẫn:

  1. Trong hộp thoại Phiên mới, hãy nhấp vào Template thả xuống.
  2. Chọn từ các mẫu có sẵn như Theo dõi chi tiết truy vấn hoặc Tình trạng hệ thống.
  3. Sửa đổi mẫu cho phù hợp với yêu cầu cụ thể của bạn.

13.3 Tích hợp với các giải pháp giám sát

Dữ liệu Sự kiện mở rộng có thể cung cấp cho các giải pháp giám sát doanh nghiệp:

  • Xuất dữ liệu sự kiện sang hệ thống ghi nhật ký tập trung
  • Phân tích các tệp sự kiện và tải dữ liệu vào cơ sở dữ liệu giám sát
  • Tạo bảng thông tin tùy chỉnh bằng công cụ BI
  • Kích hoạt cảnh báo dựa trên các mẫu sự kiện cụ thể
  • Tương quan SQL Server các sự kiện có số liệu về ứng dụng và cơ sở hạ tầng

13.4 Tự động hóa và Lập lịch

Tự động hóa việc quản lý Sự kiện mở rộng bằng cách sử dụng SQL Server Đại lý:

  • Tạo các tác vụ để bắt đầu/dừng các phiên trong các khoảng thời gian cụ thể.
  • Lên lịch phân tích và báo cáo tệp sự kiện
  • Thực hiện chính sách lưu giữ dữ liệu bằng cách lưu trữ hoặc xóa các tệp sự kiện cũ
  • Tự động phản hồi các điều kiện được phát hiện như sự cố hiệu suất hoặc sự kiện bảo mật

14. Di cư từ SQL Server Profiler

14.1 SQL Server Sự kiện Profiler thành Ánh xạ Sự kiện Mở rộng

Microsoft cung cấp bản đồ giữa SQL Server Profiler sự kiện và Sự kiện mở rộng. Các ánh xạ phổ biến bao gồm:

  • SQL:BatchCompleted -> sql_batch_completed
  • SQL:BatchStarting -> sql_batch_starting
  • SQL:StmtCompleted -> sql_statement_completed
  • SQL:StmtStarting -> sql_statement_starting
  • Biểu đồ bế tắc -> xml_deadlock_report
  • Đăng nhập kiểm toán -> đăng nhập
  • Kiểm tra Đăng xuất -> đăng xuất

14.2 Chuyển đổi định nghĩa theo dõi

Chuyển đổi hiện có SQL Server Profiler theo dõi các phiên Sự kiện Mở rộng bằng cách xác định các sự kiện tương đương và cấu hình các thuật ngữ phù hợp. SSMS cung cấp hỗ trợ cho các chuyển đổi phổ biến.

Xem lại các bộ lọc theo dõi và chuyển đổi chúng thành các vị từ Sự kiện mở rộng. Các hành động trong Sự kiện mở rộng thay thế các cột theo dõi từ SQL Server Hồ sơ.

14.3 So sánh hiệu suất

Sự kiện mở rộng cung cấp hiệu suất tốt hơn đáng kể so với SQL Server Profiler. Các nghiên cứu chuẩn cho thấy Sự kiện mở rộng tiêu thụ ít chu kỳ CPU hơn và ít tác động đến thông lượng giao dịch.

Sự kiện mở rộng sử dụng xử lý không đồng bộ và quản lý bộ nhớ được tối ưu hóa, trong khi SQL Server Profiler dựa vào chức năng ghi lại sự kiện đồng bộ, chặn cho đến khi quá trình theo dõi hoàn tất.

15. Phần kết luận

15.1 Tóm tắt các khái niệm chính

SQL Server Extended Events cung cấp một khuôn khổ mạnh mẽ, nhẹ để giám sát và khắc phục sự cố SQL ServerKiến trúc này bao gồm các sự kiện, hành động, vị ngữ, mục tiêu và phiên hoạt động cùng nhau để ghi lại các hoạt động máy chủ có liên quan.

Các phiên có thể được tạo bằng SSMS hoặc T-SQL, mang lại sự linh hoạt cho cả việc khắc phục sự cố tức thời và giám sát tự động. Nhiều loại mục tiêu hỗ trợ các phương pháp phân tích khác nhau, từ giám sát thời gian thực với ring_buffer đến phân tích lịch sử với event_file.

Sự kiện mở rộng mang lại hiệu suất vượt trội so với SQL Server Profiler cung cấp khả năng giám sát toàn diện hơn. Hệ thống cho phép quản trị viên và nhà phát triển cơ sở dữ liệu chẩn đoán sự cố, tối ưu hóa hiệu suất, tăng cường bảo mật và duy trì tính tuân thủ.

15.2 Các bước tiếp theo và các nguồn tài nguyên bổ sung

Để tiếp tục phát triển của bạn SQL Server Chuyên môn của XEvents:

  • Triển khai Sự kiện mở rộng trong môi trường thử nghiệm để có được kinh nghiệm thực tế
  • Xem lại tài liệu của Microsoft để biết danh mục sự kiện đầy đủ và tham chiếu cú ​​pháp chi tiết
  • Tham gia SQL Server diễn đàn cộng đồng để học hỏi từ kinh nghiệm của người khác
  • Khám phá các kịch bản nâng cao như các gói tùy chỉnh và tích hợp với các nền tảng giám sát
  • Xây dựng thư viện các mẫu phiên cho các kịch bản giám sát phổ biến.

16 Phần Câu hỏi thường gặp

Hỏi: là gì SQL Server Sự kiện mở rộng?

A: SQL Server Extended Events là một hệ thống giám sát hiệu suất nhẹ được tích hợp vào SQL Server Công cụ cơ sở dữ liệu thu thập thông tin chi tiết về hoạt động của máy chủ với chi phí tối thiểu.

Q: Sự kiện mở rộng khác với SQL Server Người lập hồ sơ?

A: Sự kiện mở rộng cung cấp hiệu suất tốt hơn, chi phí thấp hơn và cấu hình linh hoạt hơn SQL Server Hồ sơ. SQL Server Profiler hiện đã lỗi thời và Microsoft khuyên bạn nên sử dụng Extended Events cho mọi tác vụ giám sát.

Q: Sự kiện mở rộng có thể tác động đến SQL Server hiệu suất?

A: Khi được cấu hình đúng với các điều kiện tiên quyết và giới hạn tài nguyên phù hợp, Sự kiện Mở rộng có tác động tối thiểu đến hiệu suất. Cấu hình kém mà không có bộ lọc có thể ảnh hưởng đến hiệu suất.

H: Cần có những quyền gì để tạo phiên Sự kiện mở rộng?

A: Bạn cần quyền ALTER ANY EVENT SESSION cho các phiên có phạm vi máy chủ hoặc quyền CONTROL trên cơ sở dữ liệu cho các phiên có phạm vi cơ sở dữ liệu.

H: Làm thế nào để xem dữ liệu Sự kiện mở rộng?

A: Sử dụng SQL Server Trình xem dữ liệu trực tiếp của Management Studio, truy vấn các tệp sự kiện bằng sys.fn_xe_file_target_read_file hoặc truy vấn dữ liệu bộ đệm vòng thông qua DMV.

H: Extended Events có thể phát hiện lỗi cơ sở dữ liệu không?

A: Có, Extended Events có thể ghi lại các lỗi liên quan đến hỏng hóc (823, 824, 825) và các sự kiện trang đáng ngờ, cung cấp cảnh báo sớm về các vấn đề hỏng hóc tiềm ẩn.

H: Sự khác biệt giữa sự kiện, hành động và vị ngữ là gì?

A: Sự kiện là những diễn biến bạn muốn theo dõi. Hành động bổ sung thông tin hỗ trợ cho các sự kiện đã được ghi nhận. Vị từ lọc các sự kiện dựa trên điều kiện để giảm dung lượng dữ liệu.

H: Làm thế nào để theo dõi các truy vấn từ các ứng dụng hoặc cơ sở dữ liệu cụ thể?

A: Sử dụng các thuật ngữ trong cấu hình sự kiện của bạn để lọc theo database_name, client_app_name hoặc các trường có liên quan khác.

Hỏi: Tôi nên sử dụng mục tiêu nào cho Sự kiện Mở rộng?

A: Sử dụng event_file để lưu trữ liên tục và phân tích lịch sử, ring_buffer để theo dõi thời gian thực với chi phí thấp, event_counter để theo dõi tần suất đơn giản và histogram để phân tích phân phối.

H: Sự kiện mở rộng có khả dụng trong Cơ sở dữ liệu Azure SQL không?

A: Có, Azure SQL Database hỗ trợ Sự kiện mở rộng trong phạm vi cơ sở dữ liệu với các tệp sự kiện được lưu trữ trong Azure Blob Storage.

H: Làm thế nào để khắc phục sự cố phiên Sự kiện mở rộng không thu thập dữ liệu?

A: Xác minh phiên đã được bắt đầu, kiểm tra xem các điều kiện lọc có đang lọc tất cả các sự kiện hay không, xác nhận cấu hình mục tiêu và xem xét quyền hạn bằng cách sử dụng các DMV hệ thống.

H: Tôi có thể tự động hóa việc quản lý Sự kiện mở rộng không?

A: Có, sử dụng SQL Server Các tác vụ của tác nhân bao gồm khởi động/dừng phiên, phân tích tập tin sự kiện, thực thi chính sách lưu giữ và phản hồi các điều kiện được phát hiện.

dự án


Lưu ý

Nguyên Sinh là quản trị viên cơ sở dữ liệu cao cấp (DBA) với hơn 10 năm kinh nghiệm trong SQL Server môi trường và quản lý cơ sở dữ liệu doanh nghiệp. Ông đã giải quyết thành công hàng trăm tình huống khôi phục cơ sở dữ liệu trên khắp các tổ chức dịch vụ tài chính, chăm sóc sức khỏe và sản xuất.

Yuan chuyên về SQL Server khôi phục cơ sở dữ liệu, giải pháp khả dụng caovà tối ưu hóa hiệu năng. Kinh nghiệm thực tiễn sâu rộng của ông bao gồm quản lý cơ sở dữ liệu nhiều terabyte, triển khai Luôn có sẵn các nhóm sẵn cóvà phát triển các chiến lược sao lưu và phục hồi tự động cho các hệ thống kinh doanh quan trọng.

Nhờ chuyên môn kỹ thuật và phương pháp thực tế của mình, Yuan tập trung vào việc tạo ra các hướng dẫn toàn diện giúp quản trị viên cơ sở dữ liệu và chuyên gia CNTT giải quyết các vấn đề phức tạp SQL Server thách thức một cách hiệu quả. Anh ấy luôn cập nhật những thông tin mới nhất SQL Server phát hành và công nghệ cơ sở dữ liệu đang phát triển của Microsoft, thường xuyên kiểm tra các tình huống phục hồi để đảm bảo các khuyến nghị của ông phản ánh những phương pháp hay nhất trong thực tế.

Có thắc mắc về SQL Server phục hồi hoặc cần thêm hướng dẫn khắc phục sự cố cơ sở dữ liệu? Yuan hoan nghênh phản hồi và đề xuất để cải thiện các nguồn lực kỹ thuật này.

Chia sẻ ngay bây giờ: