У меня есть приложение .net, которое использует EF наряду с главным образом SQL Server 2008, но несколько клиентов используют 2005. В базе данных есть несколько сотен таблиц. Мне нужно проверить выбор этих таблиц, чтобы записать все вставки/обновления/удаления данных. Я думал о том, чтобы иметь копии этих таблиц для записи всех изменений вместе с датой и временем и именем пользователя, а затем иметь триггер в фактической таблице для вставки изменений данных в соответствующую таблицу аудита. Это лучший способ сделать это? Является ли триггер лучшим способом или вместо этого я должен использовать EF? Я думал о том, чтобы иметь только одну таблицу аудита, но полагаю, что это может очень быстро выйти из-под контроля.
Как проверить все изменения в приложении .net с помощью SQL Server
Ответы (3)
Аудит SQL Server — непростая задача, особенно когда вам нужно поддерживать старые версии SQL Server.
Отслеживайте изменения с помощью DbContext. Это добавит накладные расходы вашему приложению и (как вы уже заметили) легко станет чертовски кошмаром (ключ-значение не масштабируется, изменения структуры для таблиц истории необходимо скорректировать (например, как вы отражаете удаленный столбец). )
CDC — если ваш SQL-сервер поддерживает CDC, это хороший вариант, который оказывает меньшее влияние на ваше приложение.
Варианты сторонних производителей, такие как Аудит SQL Server. Вам нужно выяснить, делают ли они то, что вам нужно.
Изменить: CDC недоступен в SQL 2005.
Также проверьте это: http://doddleaudit.codeplex.com/
Мы используем его для аудита изменений БД в нашем продукте. Вы также можете легко изменить его в соответствии с вашими потребностями.
Начиная с SQL Server 2008, у вас есть некоторые встроенные в функционале делать, думаю, что хочешь.
IntColumn1
,IntColumn2
и т. д., в которые вставляются данные, но для которых теперь нужно знать отображение из каждой таблицы в эти столбцы, или в) Сверхширокая таблица, содержащая все возможные столбцы из всех проверенных таблиц. Лично мне ни один из них так не нравится. - person Damien_The_Unbeliever   schedule 15.04.2013