В Oracle есть команды SQL, которые можно выполнить, чтобы транзакция не регистрировалась. Есть ли что-то подобное для SQL Server 2008?
Мой сценарий: нам нужны журналы Tx на серверах (Dev, QA, Prod), но, возможно, мы сможем обойтись без них на машинах разработчиков.
sql-server
sql-server-2008
Радж Мор
источник
источник
NOLOGGED
опцию.Ответы:
Ни при каких обстоятельствах не обойтись без журналов транзакций в SQL Server. Двигатель просто не работает.
Вы МОЖЕТЕ установить для своей модели восстановления ПРОСТОЙ на своих машинах разработчиков - это предотвратит раздувание журнала транзакций, когда резервное копирование журнала транзакций не выполнено.
ALTER DATABASE MyDB SET RECOVERY SIMPLE;
источник
Для работы SQL Server требуется журнал транзакций.
При этом есть два режима работы журнала транзакций:
В полном режиме журнал транзакций продолжает расти, пока вы не создадите резервную копию базы данных. В простом режиме: пространство в журнале транзакций «повторно используется» на каждой контрольной точке .
Очень немногим людям нужно запускать свои базы данных в модели полного восстановления. Единственный смысл в использовании полной модели - это если вы хотите делать резервную копию базы данных несколько раз в день, а резервное копирование всей базы данных занимает слишком много времени, поэтому вы просто создаете резервную копию журнала транзакций.
Журнал транзакций продолжает расти весь день, и вы продолжаете делать резервные копии только его. Этой ночью вы делаете полную резервную копию, а затем SQL Server обрезает журнал транзакций и начинает повторно использовать пространство, выделенное в файле журнала транзакций.
Если вы когда-либо делаете только полные резервные копии базы данных , вам не нужен режим полного восстановления.
источник
Есть третий режим восстановления, не упомянутый выше. Режим восстановления в конечном итоге определяет, насколько большими становятся файлы LDF и как часто они записываются. В случаях, когда вы собираетесь выполнять какие-либо массовые вставки, вы должны установить для БД значение «BULK / LOGGED». Благодаря этому объемные вставки быстро перемещаются, и их можно менять на лету.
Для этого
USE master ; ALTER DATABASE model SET RECOVERY BULK_LOGGED ;
Чтобы вернуть его обратно:
USE master ; ALTER DATABASE model SET RECOVERY FULL ;
Чтобы добавить к разговору о том, почему кому-то не нужен LDF, я добавляю следующее: мы делаем многомерное моделирование. По сути, мы используем БД как большое хранилище переменных, которые массово обрабатываются с помощью внешних программ. Мы НИКОГДА не требуем откатов. Если бы мы могли повысить производительность, отключив ВСЕ журналирование, мы бы сразу поняли это.
источник
В чем проблема с журналами Tx? Они растут? Затем просто установите опцию усечения на контрольной точке.
Из документации Microsoft:
источник
Если это только для машин разработчиков, чтобы сэкономить место, просто перейдите в простой режим восстановления, и все будет хорошо.
Однако на производственных машинах я настоятельно рекомендую держать базы данных в режиме полного восстановления. Это гарантирует, что при необходимости вы сможете выполнить восстановление на определенный момент времени.
Кроме того, наличие баз данных в режиме полного восстановления может помочь вам отменить случайные обновления и удаления путем чтения журнала транзакций. См. Ниже или более подробную информацию.
Как я могу откатить запрос UPDATE в SQL Server 2005?
Прочтите файл журнала (* .LDF) в sql server 2008
Если на производственных машинах не хватает места, просто часто создавайте резервные копии журнала транзакций.
источник