Oracle має команди SQL, які можна видавати, щоб транзакція не реєструвалась. Чи є щось подібне для SQL Server 2008?
Мій сценарій: нам потрібні журнали Tx на серверах (Dev, QA, Prod), але, можливо, ми можемо обійтися без них на машинах розробників.
Oracle має команди SQL, які можна видавати, щоб транзакція не реєструвалась. Чи є щось подібне для SQL Server 2008?
Мій сценарій: нам потрібні журнали Tx на серверах (Dev, QA, Prod), але, можливо, ми можемо обійтися без них на машинах розробників.
NOLOGGED
опцію.
Відповіді:
Без журналів транзакцій у SQL Server не обійтися ні за яких обставин. Двигун просто не працюватиме.
Ви МОЖЕТЕ встановити модель відновлення ПРОСТО на ваших машинах розробників - це запобіжить здуття журналу транзакцій, коли не виконуються резервні копії журналів транзакцій.
ALTER DATABASE MyDB SET RECOVERY SIMPLE;
Для роботи SQL Server потрібен журнал транзакцій.
При цьому існує два режими роботи журналу транзакцій:
У повному режимі журнал транзакцій продовжує зростати, доки ви не зробите резервну копію бази даних. У простому режимі: простір у журналі транзакцій "переробляється" кожною контрольною точкою .
Дуже мало людей потребують запуску своїх баз даних у моделі повного відновлення. Єдиний сенс у використанні моделі Full полягає в тому, що ви хочете робити резервні копії бази даних кілька разів на день, а резервне копіювання всієї бази даних займає занадто багато часу - тому ви просто робите резервну копію журналу транзакцій.
Журнал транзакцій постійно зростає протягом усього дня, а ви продовжуєте його резервне копіювання. Тієї ночі ви робите повне резервне копіювання, і 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:
У SQL Server 2000 або SQL Server 2005 "проста" модель відновлення еквівалентна "скороченню журналу контрольної точки" у попередніх версіях SQL Server. Якщо журнал транзакцій скорочується кожного разу, коли контрольна точка виконується на сервері, це заважає використовувати журнал для відновлення бази даних. Ви можете використовувати лише повне резервне копіювання бази даних для відновлення даних. Резервні копії журналу транзакцій вимикаються, коли використовується "Проста" модель відновлення.
Якщо це лише для машин розробників, щоб заощадити місце, просто перейдіть у простий режим відновлення, і у вас все буде добре.
На виробничих машинах я настійно рекомендую зберігати бази даних у режимі повного відновлення. Це гарантує, що ви зможете відновити час, якщо це необхідно.
Крім того - наявність баз даних у режимі повного відновлення може допомогти скасувати випадкові оновлення та видалення, прочитавши журнал транзакцій. Дивіться нижче або більше деталей.
Як я можу повернути запит UPDATE в SQL Server 2005?
Прочитайте файл журналу (*. LDF) у SQL Server 2008
Якщо на виробничих машинах не вистачає місця, просто створіть часті резервні копії журналів транзакцій.