Что отслеживает журнал базы данных? - PullRequest
4 голосов
/ 17 февраля 2010

Я довольно новичок в SQL Server и мне было интересно, в чем разница между журналом SQL Server и настраиваемым журналом (в моем случае, с использованием log4net)? Я предполагаю, что есть больше выбора, что регистрировать, используя log4net, но какие вещи автоматически регистрируются в базе данных? Например, если пользователь регистрируется на моем сайте, мне придется вручную регистрировать эту транзакцию или она будет автоматически записываться в журнал базы данных? В настоящее время я начинаю проект и хотел бы выяснить, что именно мне следует заняться регистрацией.

Спасибо

Ответы [ 6 ]

5 голосов
/ 17 февраля 2010

яблок и апельсинов.

Log4net и другие пользовательские «журналы» - это просто способ захвата событий, о которых сообщает приложение. «Журнал» в этом контексте относится к тому хранилищу, которое используется этой инфраструктурой для сохранения информации об этих событиях.

С другой стороны, журнал базы данных - это нечто совершенно другое. Чтобы поддерживать согласованность и атомарность баз данных, используйте так называемый протокол Write-Ahead-Log . В WAL все изменения сначала записываются в журнал или журнал перед применением к данным. Это позволяет при восстановлении воспроизводить журнал (журнал) и возвращать данные в согласованное состояние, откатывая любую незавершенную работу.

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

2 голосов
/ 17 февраля 2010

Журнал SQL обрабатывает ведение журнала транзакций для отката или получения данных. Обычно с ними работает кто-то, кто знает, что делает, восстанавливая резервные копии или отправляя журналы для использования в резервных копиях.

log4net и другие средства ведения журналов framweworks обрабатывают в журнале кода информацию об исключениях, предупреждениях или уровне отладки, которую вы хотите вывести для своей собственной информации. Они могут быть отправлены в таблицу в базе данных, командное окно, плоский файл или веб-сервис. Распространенные сценарии ведения журналов - это перехват необработанных исключений на уровне приложения, чтобы помочь отследить ошибки или в любых операторах try catch выписать трассировку стека.

1 голос
/ 17 февраля 2010

Файл журнала SQL Server фактически используется для поддержания собственной стабильности, но он не очень полезен для обычных разработчиков. Это не то, что вы думаете (а я то, что я думал), список операторов SQL, которые были выполнены. Это собственный формат, разработанный для восстановления SQL после сбоя или отката транзакций.

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

1 голос
/ 17 февраля 2010

Два практически не связаны.

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

Журнал приложения, с другой стороны (с Log4Net), может быть чрезвычайно полезен при сборке и отладке приложения. Он управляется you и должен содержать информацию, которая отслеживает, что делает ваше приложение. Это то, что можно безопасно отключить или уменьшить (переключив уровень журнала), когда оно вам больше не нужно.

1 голос
/ 17 февраля 2010

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

0 голосов
/ 17 февраля 2010

Это механизм, с помощью которого RMDBS может обеспечить атомарность и согласованность , см. ACID .

...