Gostaria de saber se o SQL Server 2008 R2 possui um esquema de log padrão para SELECT
instruções (ou qualquer outro T-SQL).
Se sim, onde posso vê-lo? Caso contrário, como eu poderia configurá-lo?
Gostaria de saber se o SQL Server 2008 R2 possui um esquema de log padrão para SELECT
instruções (ou qualquer outro T-SQL).
Se sim, onde posso vê-lo? Caso contrário, como eu poderia configurá-lo?
Respostas:
Por padrão, a atividade do SQL Server não é registrada da maneira esperada. Algumas atividades de gravação são registradas no log de transações , mas isso também depende de como seus bancos de dados são configurados.
Existem quatro opções principais para rastrear a atividade SELECT em um servidor:
Você pode usar o SQL Server Profiler para conectar-se ao servidor e observar atividades específicas à medida que elas acontecem.
Você pode criar um rastreamento do lado do servidor para registrar a atividade em um arquivo de rastreamento no servidor, que pode ser lido pelo SQL Server Profiler ou usando fn_trace_gettable para carregá-lo em uma tabela para análise posterior.
Você pode usar os Eventos Estendidos , que oferecem mais funcionalidade do que os rastreamentos do servidor e que a Microsoft recomenda em vez dos rastreamentos do servidor que começam no SQL Server 2012.
Você pode usar o modo de auditoria C2 .
Você pode usar o SQL Server Profiler para configurar seu rastreamento (escolha os eventos, filtros, etc. específicos que deseja) e, em seguida, faça um script usando o menu Arquivo e execute-o no servidor para criar um rastreamento do lado do servidor, conforme descrito aqui .
Existem várias soluções e técnicas do SQL Server para rastrear instruções SELECT
Procedimentos e funções armazenados especialmente desenvolvidos - Nota: esse método requer conhecimentos avançados de programação T-SQL e manutenção adicional dos procedimentos e funções armazenados (por exemplo, no caso de alteração do esquema do banco de dados). Você pode ver mais neste artigo: http://alstechtips.blogspot.com/2011/02/auditing-select-statements-in-sql.html
Tecnologia de rastreamento do SQL Server - você pode ler uma instrução passo a passo neste artigo: http://solutioncenter.apexsql.com/auditing-select-statements-on-sql-server/
Usando o recurso Auditoria do SQL Server - O recurso Auditoria (introduzido no SQL Server 2008) pode rastrear os eventos do servidor e do banco de dados e está usando a tecnologia Extended Events. Porém, a auditoria no nível do banco de dados é suportada apenas pelas edições SQL Server Developer e Enterprise.
Usando ferramentas de terceiros, como ApexSQL Audit ou Idera SQL Compliance Manager
Por padrão, ele não registra instruções SELECT. Você pode consultar minha resposta aqui para obter mais detalhes para auditar as instruções SELECT.
Além disso, por padrão, ele nem registra instruções T-SQL; em vez disso, registra EVENTOS como Alteração de Memória do Servidor, Falha no Login de Auditoria, Evento de Addlogin de Auditoria, etc. e você pode encontrar mais informações aqui junto com os Scripts T-SQL para extrair informações de Rastreio padrão.
Desde que você não se importe com quem executou as consultas, existem algumas maneiras de ver métricas sobre as consultas que estão sendo executadas no seu sistema. Isso é limitado aos dados desde a última reinicialização e, potencialmente, pela pressão do cache do plano (ou outra memória), dependendo de quanto mais você estender a consulta.
;WITH x AS
(
SELECT
[text] = SUBSTRING(t.[text],
(s.statement_start_offset/2)+1,
COALESCE(NULLIF(s.statement_end_offset,-1),DATALENGTH(t.[text])*2)
-(s.statement_start_offset/2)),
s.execution_count, s.last_execution_time,
s.max_logical_reads, s.max_elapsed_time
FROM sys.dm_exec_query_stats AS s
CROSS APPLY sys.dm_exec_sql_text(s.sql_handle) AS t
)
SELECT * FROM x
WHERE LTRIM([text]) LIKE 'SELECT%';
Você pode estender o padrão - por exemplo, isso ignora as consultas que começam com ;WITH
, ironicamente, e pode capturar SELECT INTO
e até atribuições de variáveis que não fazem referência a tabelas reais.
No entanto, se você precisar de informações mais detalhadas, a resposta de Nathan é um bom começo (exceto se você usar o rastreamento, NÃO use o Profiler). Lembre-se de que o registro de todas as consultas no seu sistema não será gratuito.