2010-10-03 3 views
0

Есть ли способ, с помощью которого мы можем выполнять операцию DML, не регистрируя ее в файле журнала?Операция DML с отсутствием ведения журнала - SQL Server

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

ответ

4

Нет. Никогда. Невозможно.

Каждая операция регистрируется по какой-либо причине: что, если она не проходит через полпути? Сбой сервера? и т.д. и т.п.

В итоге: А, С и D в ACID

Если вы не хотите этого, то с помощью я бы действительно рассмотреть вопрос об использовании некислотных альтернатив NoSQL.

0

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

Вы можете изменить воздействовать логирование, выбирая модель восстановления:

alter database YourDb set recovery { FULL | BULK_LOGGED | SIMPLE } 

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

Если вы хотите избавиться от журналов после операции вставки, вы можете использовать:

alter database YourDb set recovery simple with no_wait 
dbcc shrinkfile(YourDbLog, 1) 
alter database YourDb set recovery <<old model here>> 

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