Profiler di SQL Server: come filtrare la traccia per visualizzare solo gli eventi di un database?


Risposte:


574

In Proprietà di traccia> scheda Selezione eventi> seleziona mostra tutte le colonne. Ora sotto i filtri di colonna, dovresti vedere il nome del database. Immettere il nome del database per la sezione Mi piace e dovresti vedere le tracce solo per quel database.


8
Non so se questo è un problema comune, ma quando eseguo profiler il nome del database è vuoto per molti dei valori che traccia. Devo usare la colonna DatabaseID e scoprire i valori corretti da inserire interrogando la tabella sysd Database nel database master
Jim Birchall,

34
Per trovare l'ID database: SELEZIONA [nome], [dbid] DA [master]. [Dbo]. [Database di sistema] ORDINA PER [nome]
Simon

1
Dipende anche dal modello selezionato, se presente. +1
beaudetious

2
E devi farlo beforeavviando la traccia. Se lo fai dopo, il campo non sarà modificabile!
DarkWalker,

2
Non dimenticare di interrompere la traccia o iniziare prima di eseguirla.
Fery,

42

In SQL 2005, è innanzitutto necessario mostrare la colonna Nome database nella traccia. La cosa più semplice da fare è scegliere il modello di ottimizzazione, che ha già aggiunto quella colonna.

Supponendo che sia selezionato il modello di ottimizzazione, per filtrare:

  • Fai clic sulla scheda "Selezione eventi"
  • Fai clic sul pulsante "Filtri colonna"
  • Seleziona Mostra tutte le colonne (lato destro in basso)
  • Seleziona "DatabaseName", fai clic sul segno più accanto a Mi piace nel riquadro di destra e digita il nome del tuo database.

Salvo sempre anche la traccia su una tabella in modo da poter fare simili domande sui dati della traccia dopo il fatto.


8

Per esperimento sono stato in grado di osservare questo:

Quando SQL Profiler 2005 o SQL Profiler 2000 viene utilizzato con il database residente in SQLServer 2000 - il problema menzionato persiste, ma quando SQL Profiler 2005 viene utilizzato con il database SQLServer 2005, funziona perfettamente!

In sintesi, il problema sembra essere prevalente in SQL Server 2000 e risolto in SQL Server 2005.

La soluzione al problema quando si ha a che fare con SQLServer 2000 è (come spiegato da wearejimbo)

  1. Identificare il DatabaseID del database che si desidera filtrare interrogando la tabella dei database di sistema come di seguito

    SELECT * 
    FROM master..sysdatabases 
    WHERE name like '%your_db_name%'   -- Remove this line to see all databases
    ORDER BY dbid
  2. Utilizzare il filtro DatabaseID (anziché DatabaseName) nella finestra Nuova traccia di SQL Profiler 2000


4

Nelle proprietà della traccia, fai clic sulla scheda Selezione eventi in alto accanto a Generale . Quindi fai clic su Filtri colonna ... in basso a destra. È quindi possibile selezionare cosa filtrare, come TextDatao DatabaseName.

Espandi il nodo Mi piace e inserisci il filtro con i %segni di percentuale come %MyDatabaseName%o %TextDataToFilter%. Senza i %%segni il filtro non funzionerà.

Inoltre, assicurati di selezionare la casella Escludi righe che non contengono valori ' Se non riesci a trovare il campo che stai cercando di filtrare, ad esempio DatabaseNamevai alla scheda Generale e modifica il tuo modello , uno vuoto dovrebbe contenere tutti i campi.


1

Crea un nuovo modello e controlla DBname. Usa quel modello per il tuo file di traccia.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.