Подтвердить что ты не робот

Отключить журнал транзакций

Oracle имеет команды SQL, которые можно выдавать, чтобы транзакция не регистрировалась. Есть ли что-то подобное для SQL Server 2008?

Мой сценарий: нам нужны журналы Tx на серверах (Dev, QA, Prod), но, возможно, мы можем обойтись без них на машинах разработчика.

4b9b3361

Ответ 1

Вы не можете обойтись без журналов транзакций в SQL Server, ни при каких обстоятельствах. Двигатель просто не будет функционировать.

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

ALTER DATABASE MyDB SET RECOVERY SIMPLE;

Ответ 2

Для работы SQL Server требуется журнал транзакций.

Тем не менее, существует два режима работы для журнала транзакций:

  • Простой
  • Полный

В режиме Полный журнал транзакций продолжает расти, пока вы не создадите резервную копию базы данных. В режиме Простой: пробел в журнале транзакций "перерабатывается" каждой контрольной точкой.

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

Журнал транзакций продолжает расти весь день, и вы все время поддерживаете его. В ту ночь вы делаете полную резервную копию, а SQL Server затем обрезает журнал транзакций, начинает повторное использование пространства, выделенного в файле журнала транзакций.

Если вы только когда-либо выполняете полное резервное копирование базы данных, вам не нужен режим полного восстановления.

Ответ 3

Существует третий режим восстановления, не упомянутый выше. Режим восстановления в конечном итоге определяет, насколько велики файлы LDF и как они записываются. В случаях, когда вы собираетесь делать какие-либо объемные вставки, вы должны установить БД в "BULK/LOGGED". Это делает массовые вставки быстро перемещаться и может меняться "на лету".

Чтобы сделать это,

USE master ;
ALTER DATABASE model SET RECOVERY BULK_LOGGED ;

Чтобы изменить его:

USE master ;
ALTER DATABASE model SET RECOVERY FULL ;

В духе добавления к разговору о том, почему кто-то не хочет LDF, я добавляю это: мы делаем многомерное моделирование. По сути, мы используем БД как большой массив переменных, которые обрабатываются массово с использованием внешних программ. Мы НИКОГДА не требуем откатов. Если бы мы могли получить повышение производительности за счет включения всех журналов, мы бы взяли его в сердце.

Ответ 4

Какова ваша проблема с журналами Tx? Они растут? Затем просто установите truncate на опции контрольной точки.

Из документации Microsoft:

В SQL Server 2000 или SQL Server 2005, "Простая" модель восстановления эквивалент "обрезать log on контрольная точка" в более ранних версиях SQL Сервер. Если журнал транзакций усекаются каждый раз, когда контрольная точка выполняется на сервере, это предотвращает вы используете журнал для базы данных восстановление. Вы можете использовать только полные резервные копии базы данных для восстановления ваших данных. Резервные копии журнала транзакций отключено, когда "Простое" восстановление используется модель.

Ответ 5

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

На производственных машинах, хотя Id настоятельно рекомендует сохранить базы данных в полном режиме восстановления. Это обеспечит вам возможность восстановления времени в нужном месте.

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

Как отменить запрос UPDATE на SQL Server 2005?

Прочитайте файл журнала (*.LDF) в SQL Server 2008

Если на производственных машинах возникает проблема, просто создайте резервные копии журналов транзакций.