Domanda

Esiste un modo per utilizzare Profiler per determinare se una query è accessibile alle query?

Ho visto un evento chiamato Object: Open (indica quando è stato effettuato l'accesso a un oggetto, ad esempio per le istruzioni SELECT, INSERT o DELETE) e Object: Closed , ma questi non sembrano funzionare.

In particolare, ho creato una semplice traccia con Object: Opened e Object: Closed senza filtri (tranne lo standard "Nome applicazione non come" SQL Profiler "" filter) e ho eseguito SELECT TOP 1 * FROM TableName , ma non sono stati segnalati eventi.

Quindi, c'è un modo per usare Profiler per determinare se una tabella viene selezionata da?

È stato utile?

Soluzione

Potrebbe essere utile investigare i blocchi che SQL sta acquisendo. Le dichiarazioni selezionate generalmente acquisiranno Locks condivisi (LCKMS), quindi puoi filtrare per questo.

Nel profiler cerca l'evento Locks: Acquired. L'ObjectID si risolverà nella tabella che puoi facilmente cercare con OBJECT_NAME (objectid) . La modalità ti dirà che il tipo di blocco acquisito I blocchi condivisi sono 3. Per ulteriori informazioni, consulta qui .

Altri suggerimenti

Esiste un modo per farlo con Profiler, ma ha un impatto negativo sulle prestazioni.

Invece, puoi chiarire la tua domanda con la versione di SQL Server che stai utilizzando? Se si utilizza SQL Server 2008, esaminare l'oggetto Audit, progettato per fare esattamente questo, inoltre ha un impatto sulle prestazioni molto basso.

Ecco un articolo che spiega come impostare un audit:

Implementazione di audit di sicurezza in SQL Server 2008

Altri poster hanno notato che puoi filtrare TextData sul nome dell'oggetto, ma ciò non funziona se qualcuno usa una vista per accedere all'oggetto.

Ho trovato un modo attraverso il profiler, l'EventClass "Evento di accesso agli oggetti dello schema di audit".

Mentre l'ho scoperto in modo indipendente dopo alcuni scavi ho trovato questo eccellente articolo;

http://www.databasejournal.com/features/mssql/article.php/3887996/Determining-Object-Access-Using-SQL-Server-Profiler.htm

Saluti,

Darren.

Non li vedo in SQL Server 2005.

Nella mia esperienza, guardo SQL: StmtStarting AND SP: StmtStarting - puoi filtrare TextData su % TABLE_NAME% . Ciò catturerà persino le cose all'interno di SP quando si utilizza SP: StmtStarting .

Non è a prova di proiettile, perché deve usare la sintassi LIKE , ma potrebbe darti quello che stai cercando.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top