sql-server - instalar - sql server profiler trace
Acceso a la tabla de registro usando SQL Server Profiler (4)
¿Hay alguna manera de usar Profiler para determinar si las consultas acceden a una tabla?
Vi un evento llamado Object:Opened
(Indica cuándo se ha accedido a un objeto, como para las instrucciones SELECT, INSERT o DELETE) y Object:Closed
, pero parece que no funcionan.
En particular, creé un rastro simple con ambos Objetos: Abierto y Objeto: Cerrado sin filtros (excepto el filtro estándar "Nombre de la aplicación no como ''Analizador de SQL''") y ejecuté SELECT TOP 1 * FROM TableName
, pero no se informaron eventos .
Entonces, ¿hay alguna manera de usar Profiler para determinar si se está SELECCIONANDO una tabla?
No los veo en SQL Server 2005.
En mi experiencia, miro SQL:StmtStarting
AND SP:StmtStarting
: puedes filtrar TextData
en %TABLE_NAME%
. Esto incluso captará cosas dentro de los SP cuando use SP:StmtStarting
.
No es a prueba de balas, porque tiene que usar la sintaxis LIKE
, pero puede obtener lo que está buscando.
Puede ser útil investigar los bloqueos que SQL está adquiriendo. Las declaraciones seleccionadas generalmente obtendrán bloqueos compartidos (LCKMS), por lo que puede filtrar por esto.
En busca de perfiles para el evento Locks: Adquirido. El ObjectID se resolverá en la tabla que puede buscar fácilmente con OBJECT_NAME(objectid)
. El Modo le indicará el tipo de bloqueo que se está adquiriendo. Los bloqueos compartidos son 3. Para obtener más información, consulte aquí .
Hay una forma de hacerlo con Profiler, pero tiene un gran impacto en el rendimiento.
En su lugar, ¿puede aclarar su pregunta con la versión de SQL Server que está utilizando? Si está utilizando SQL Server 2008, busque en el objeto de auditoría, que está diseñado para hacer exactamente eso, además de que tiene un impacto de rendimiento muy bajo.
Aquí hay un artículo que explica cómo configurar una auditoría:
Implementación de auditorías de seguridad en SQL Server 2008
Otros carteles han notado que puede filtrar TextData en el nombre del objeto, pero eso no funciona si alguien usa una vista para acceder al objeto.
He encontrado un camino a través del generador de perfiles, EventClass "Audit Schema Object Access Event".
Aunque descubrí esto de forma independiente después de excavar, encontré este excelente artículo;
Saludos,
Darren.