Аудит SQL Server 2005

64
9

Предыстория У меня есть сервер SQL Server 2005 производства, к которому подключаются 4 разных приложения и вносят изменения. Нет внешних ключей, а в некоторых случаях нет первичных ключей. К сожалению, выбросить все это и начать с нуля - это не вариант. Поэтому мое решение заключается в том, чтобы начать миграцию каждого из приложений на подход уровня сервиса, так что есть только одно приложение, напрямую подключающееся к базе данных.

Однако есть проблемы, которые необходимо устранить, прежде чем этот уровень обслуживания будет написан, и все приложения будут перенесены.

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

Проблема Как я могу проверить, какие хранимые процедуры, таблицы, столбцы, представления обращаются/обновляются/вызывается каждым пользователем на SQL Server 2005.

Я могу узнать, какие таблицы обновляются, но я не знаю, какие столбцы и какие пользователи. Я также не знаю, доступны ли определенные таблицы только через хранимые процедуры/представления.

Я знаю, что SQL Server 2008 обладает лучшими функциями аудита, но если бы я мог это сделать, не тратя денег, это было бы здорово. Тем не менее, если лучшим решением является обновление или покупка программного обеспечения, которое также является вариантом.

спросил(а) 2021-01-19T15:45:04+03:00 6 месяцев, 1 неделя назад
1
Решение
78

Проверьте функцию CDC SQL Server 2008. Вы не можете использовать это непосредственно в 2005 году, но вы можете написать триггер для каждой таблицы для регистрации всех изменений данных в новой таблице аудита. т.е. у вас будет таблица аудита для каждой таблицы в вашем db, со всеми одинаковыми столбцами и несколькими дополнительными столбцами, указывающими, что такое операция и когда она произошла.

Если характер ваших приложений означает, что вы можете получить информацию о пользователе и/или информацию о приложении от CURRENT_USER и APP_NAME(), вы также можете включить эту информацию в таблицу аудита.

И проверьте этот ответ для большей доброты.

ответил(а) 2021-01-19T15:45:04+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема