SQL Profiler: захват записи для определенных таблиц - PullRequest
4 голосов
/ 08 июня 2011

Мне нужно захватить операции записи (любой запрос, который изменяет данные), но только для двух конкретных таблиц. Это можно настроить в Sql Profiler? Если так, то как? Я надеюсь на решение, которое не требует фильтрации текста.

Ответы [ 3 ]

6 голосов
/ 09 июня 2011

Основываясь на комментариях к ответам других, используйте SQL Profiler так, как вы хотите, со следующей настройкой

Event Selection:
-Stored Procedures
  - SP: StmtStarting
-TSQL
  - SQL:StmtStarting

Column Filters
-TextData (LIKE)
 - "insert %"
 - "update %"
 - "delete %"

Я не хотел фильтровать текстовые данные, но это единственный способ получить то, что я хочу.

0 голосов
/ 09 июня 2011

Я согласен с другим ответом, что CDC - это путь (если вы работаете в редакции Enterprise)

Использование профилировщика технически возможно, но едва ли.

Начните с захвата TSQL: StmtStarting, TSQL: StmtCompleting

Затем вам нужно будет экспортировать список для дальнейшего анализа. Вам нужно написать какой-то тип анализатора, чтобы отфильтровать утверждения, которые не соответствуют критериям. Если ваша система получает специальные запросы или подключена к системе, которая генерирует большое количество разнообразных запросов, анализ списка может быстро стать беспорядочным.

Существует также проблема, связанная с тем, что при работе профилировщика возникают значительные накладные расходы, и, если вы хотите получить эти числа в течение длительного периода времени, вы бы быстро перевели системные ресурсы на неприемлемый уровень для большинства производственных систем.

Короче говоря, было бы забавно попробовать использовать профилировщик таким образом, но не в сценарии "реального мира".

И это от парня, который любит смотреть гонки на газонокосилках.

0 голосов
/ 09 июня 2011

Использовать сбор данных изменений, который подробно объясняется здесь

Если CDC не выбран, рассмотрите возможность размещения триггера на таблице (ах).Внутри триггера захватывает данные из SQL Server, встроенные в такие функции, как

select App_name() as 'AppName', CURRENT_USER as 'CurrentUser', HOST_ID () as 'HostID', HOST_NAME () as 'HostName', SESSION_USER as 'SessionUser', SYSTEM_USER as 'SystemUser'

Затем помещают данные в таблицу истории

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...