SQL Server Profiler - Làm cách nào để lọc theo dõi để chỉ hiển thị các sự kiện từ một cơ sở dữ liệu?


381

Làm cách nào để giới hạn theo dõi SQL Server Profiler vào một cơ sở dữ liệu cụ thể? Tôi không thể xem cách lọc theo dõi để không thấy các sự kiện cho tất cả các cơ sở dữ liệu trong trường hợp tôi kết nối.

Câu trả lời:


574

Trong Thuộc tính dấu vết> tab Lựa chọn sự kiện> chọn hiển thị tất cả các cột. Bây giờ dưới bộ lọc cột, bạn sẽ thấy tên cơ sở dữ liệu. Nhập tên cơ sở dữ liệu cho phần Thích và bạn sẽ chỉ thấy dấu vết cho cơ sở dữ liệu đó.


8
Tôi không biết đây có phải là một vấn đề phổ biến không, nhưng khi tôi chạy profiler, tên cơ sở dữ liệu trống đối với nhiều giá trị tôi theo dõi. Tôi phải sử dụng cột DatabaseID và tìm ra các giá trị chính xác để nhập bằng cách truy vấn bảng cơ sở dữ liệu sysdat trong cơ sở dữ liệu chính
Jim Birchall

34
Để tìm cơ sở dữ liệuID: CHỌN [tên], [dbid] TỪ [chính]. [Dbo]. [Sysdatabase] ĐẶT HÀNG B [NG [tên]
Simon

1
Cũng phụ thuộc vào mẫu bạn chọn, nếu có. +1
beaudetious

2
Và bạn phải làm điều đó beforebắt đầu theo dõi. Nếu bạn làm điều đó sau - trường sẽ không thể chỉnh sửa!
DarkWalker

2
Đừng quên dừng theo dõi hoặc bắt đầu trước khi chạy nó.
Fery

42

Trong SQL 2005, trước tiên bạn cần hiển thị cột Tên cơ sở dữ liệu trong theo dõi của bạn. Cách dễ nhất để làm là chọn mẫu Điều chỉnh, đã thêm cột đó.

Giả sử bạn đã chọn mẫu Điều chỉnh, để lọc:

  • Nhấp vào tab "Lựa chọn sự kiện"
  • Nhấp vào nút "Bộ lọc cột"
  • Kiểm tra Hiển thị tất cả các Cột (Phải xuống)
  • Chọn "DatabaseName", nhấp vào dấu cộng bên cạnh Like trong khung bên phải và nhập tên cơ sở dữ liệu của bạn.

Tôi luôn luôn lưu dấu vết vào một bảng để tôi có thể thực hiện các truy vấn THÍCH trên dữ liệu theo dõi sau khi thực tế.


8

Bằng thí nghiệm tôi đã có thể quan sát điều này:

Khi SQL Profiler 2005 hoặc SQL Profiler 2000 được sử dụng với cơ sở dữ liệu cư trú trong SQLServer 2000 - vấn đề được đề cập vẫn còn, nhưng khi SQL Profiler 2005 được sử dụng với cơ sở dữ liệu SQLServer 2005, nó hoạt động hoàn hảo!

Tóm lại, vấn đề dường như phổ biến trong SQLServer 2000 & được khắc phục trong SQLServer 2005.

Giải pháp cho vấn đề khi giao dịch với SQLServer 2000 là (như được giải thích bởi wearejimbo)

  1. Xác định DatabaseID của cơ sở dữ liệu bạn muốn lọc bằng cách truy vấn bảng sysdatabase như dưới đây

    SELECT * 
    FROM master..sysdatabases 
    WHERE name like '%your_db_name%'   -- Remove this line to see all databases
    ORDER BY dbid
  2. Sử dụng Bộ lọc DatabaseID (thay vì DatabaseName) trong cửa sổ Dấu vết mới của SQL Profiler 2000


4

Trong thuộc tính Trace, nhấp vào tab Lựa chọn sự kiện ở trên cùng bên cạnh Chung . Sau đó nhấp vào Bộ lọc cột ... ở dưới cùng bên phải. Sau đó, bạn có thể chọn những gì cần lọc, chẳng hạn như TextDatahoặc DatabaseName.

Mở rộng nút Like và nhập bộ lọc của bạn với các %dấu phần trăm như %MyDatabaseName%hoặc %TextDataToFilter%. Không có %%dấu hiệu bộ lọc sẽ không hoạt động.

Ngoài ra, hãy đảm bảo kiểm tra hộp kiểm Loại trừ các hàng không chứa giá trị ' Nếu bạn không thể tìm thấy trường bạn đang muốn lọc, chẳng hạn như DatabaseNameđi đến tab Chung và thay đổi Mẫu của bạn , một ô trống sẽ chứa tất cả các trường.


1

Tạo một mẫu mới và kiểm tra DBname. Sử dụng mẫu đó cho dấu vết của bạn.

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.