SQL Server 2008 - захват всех операторов SQL, попадающих на сервер - PullRequest
9 голосов
/ 28 июля 2010

Может ли кто-нибудь предложить варианты, которые мы могли бы использовать для захвата всех операторов SQL, отправляемых на наш SQL Server, кроме запуска Profiler?Я знаю несколько способов сделать это, но хочу убедиться, что я ничего не пропускаю, например, существующее представление DM и т. Д.

Большое спасибо.

Ответы [ 5 ]

13 голосов
/ 28 июля 2010

Расширенные события в SQL Server 2008. Они, похоже, используются недостаточно.Возможно, из-за отсутствия поддержки пользовательского интерфейса, но более гибкий, чем трассировки SQL (больше событий и лучшие возможности фильтрации), более легкий (из-за лучшей фильтрации и возможности отбрасывать события, а не блокировать),Тем не менее, существует гораздо больше событий, действий, предикатов и выходных целевых возможностей.

IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name='test_trace')
DROP EVENT SESSION [test_trace] ON SERVER;
CREATE EVENT SESSION [test_trace]
ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
     ACTION (package0.callstack, sqlserver.session_id, sqlserver.sql_text)
     )
,
ADD EVENT sqlserver.sp_statement_completed(
     ACTION (package0.callstack, sqlserver.session_id, sqlserver.sql_text)
     )
ADD TARGET package0.asynchronous_file_target
(set filename = 'c:\temp\test_trace.xel' , metadatafile = 'c:\temp\test_trace.xem')
ALTER EVENT SESSION [test_trace] ON SERVER STATE = START

И для просмотра результатов

SELECT CONVERT (XML, event_data) AS data
        FROM sys.fn_xe_file_target_read_file ('C:\Temp\test_trace*.xel',
         'C:\Temp\test_trace*.xem', NULL, NULL)
1 голос
/ 28 июля 2010

Если ваша проблема с Profiler не в том, что вы не хотите его использовать, а в том, что вы не можете его использовать, возможно, вы могли бы использовать Profiler для Microsoft SQL Server 2005/2008 Express Edition Это бесплатно и с открытым исходным кодом.

1 голос
/ 28 июля 2010

Вы можете использовать трассировку для программного вывода результатов: Программно получать события профилировщика (в режиме реального времени) из SQL Server 2005

1 голос
/ 28 июля 2010

Я думаю, что ваши варианты

Есть DMV, которые собирают информацию, такую ​​как длительные запросы, но я не думаю, что есть такая, которая даст вам все.

0 голосов
/ 02 декабря 2010

Как бы то ни было, в книге «Внутри программирования на Microsoft SQL Server 2008 T-SQL» есть БОЛЬШАЯ глава, написанная Грегом Лоу, в которой рассматриваются все параметры ведения журналов и аудита в SQL Server 2008. Здесь обсуждается, когда каждый из них должен быть использованы и за и против каждого. Сказав это, то, что вы сделали, вероятно, лучше всего.

...