Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как обрезать лог файл sql 2012


Шринк (Shrink) лога транзакций MS SQL 2008/2012

Когда при подключении к базе MS SQL появляются ошибки:

Ошибка СУБД: 
Microsoft OLE DB Provider for SQL Server: Журнал транзакций для базы данных «ReportServer» заполнен. Чтобы обнаружить причину, по которой место в журнале не может быть повторно использовано, обратитесь к столбцу log_reuse_wait_desc таблицы 
sys. databases HRESULT=80040E14, SQLStvr: Error state=2, Severity=11,native=9002, line=1
или
Ошибка СУБД: 
Microsoft OLE Provider for SQL Server: The transaction log for database “ReportServer” is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column is sys.database 
HRESULT=80040E14, SQLSTATE=4 2000, native=9002

это значит, что на диске, где расположен лог транзакций закончилось место и теперь СУБД некуда записывать данные о новых транзакциях. Чаще всего такое происходит, когда не установлено никаких ограничений на размер лога и в MS SQL не создано соответствующих планов обслуживания.

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

Рассмотрим сжатие лога транзакций вручную:

Шаг 1. Установить модель восстановления Простая (Simple). Правой кнопкой на базе — Свойства(Properties)

Далее:  Параметры(Options) — 4-й сверху пункт Модель восстановления(Recovery model) — Простая(Simple) — OK.

Выполнить сжатие (Shrink) лога транзакций. Правой кнопкой на базе — Задачи(Tasks) — Сжать(Shrink) — Файлы(Files) 

Установить Тип файла(File type) — Журнал(Log) — в Операция сжатия(Shrink action) — выбрать Реорганизовать страницы, перед тем освоить неиспользуемое место(Reorganize pages before releseasing unused space) — Сжать файл (Shrink file to)
указать приемлемый размер лога.

Установить модель восстановления Полная(Full). Правой кнопкой на базе — Свойства(Properties) — Параметры(Options) — 4-й сверху пункт Модель восстановления(Recovery model) — Полная(Full) — OK.

Вконтакте

Одноклассники

Мой мир

Facebook

E-mail

Как усечь журнал транзакций MSSQL Server?

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

Журналы транзакций SQL Server и модель восстановления базы данных

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

Журнал транзакций состоит из небольших логических элементов, называемых VLF (Virtual Log File). Вы можете узнать их количество, выполнив следующий запрос в контексте базы данных SQL Server:

DBCC LOGINFO

Количество возвращаемых строк указывает на то, сколько виртуальных файлов сегментировано в журнале. В поле «Status» отображается текущее состояние сегмента. Значение 0 означает, что сегмент в настоящее время не занят и может использоваться. 2 означает, что сегмент используется. Если свободных сегментов нет и в настройках базы данных SQL Server разрешено увеличение журнала транзакций, он будет увеличен и будут созданы новые VLF. Если размер журнала транзакций фиксирован или на диске недостаточно места, все операции по изменению структуры базы данных или ее содержимого станут недоступными. Скорее всего, вы получите ошибку: Журнал транзакций для базы данных переполнен.

Файлы журнала усекаются автоматически, в зависимости от модели восстановления, используемой в настройках SQL Server:

  • Простая модель восстановления – файлы журнала автоматически обрезаются после достижения контрольной точки (самый простой вариант, требующий администрирования базы данных). При использовании модели простого восстановления журнал транзакций очищается сразу после завершения транзакции. В этом режиме вы можете откатить вашу базу данных только до времени полного резервного копирования базы данных.
  • Модель полного восстановления – журнал транзакций не будет очищен, пока не будет завершено резервное копирование журнала транзакций. Этот режим обеспечивает наилучшую возможность восстановления данных после сбоя. В полном режиме журнал транзакций (LDF) может увеличиваться (поскольку изменения базы данных накапливаются в этом журнале). В модели полного восстановления все транзакции SQL записываются в файлы журнала на диске и сохраняются там до создания резервной копии. Хранение журналов позволяет вам при необходимости вернуться к более ранней копии базы данных, и вы можете выполнить восстановление для каждой транзакции.
  • С неполным протоколированием – этот режим позволяет сократить занимаемое пространство используя минимальные настройки ведения журнала. Если журнал был поврежден или с момента создания последней резервной копии журналов выполнялись операции с неполным протоколированием, все изменения после этого резервного копирования необходимо внести повторно. Иначе результаты работы потеряны не будут.

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

Как обрезать журналы транзакций на MS SQL Server?

Мы получили вот такое сообщение:

Microsoft OLE DB Provider for SQL Server: Журнал транзакций для базы данных “buh” заполнен. Чтобы обнаружить причину, по которой место в журнале не может быть повторно использовано, обратитесь к столбцу log_reuse_wait_desc таблицы
sys. databases HRESULT=80040E14, SQLStvr: Error state=2, Severity=11,native=9002, line=1

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

Чтобы обрезать журналы транзакций SQL, запустите SQL Server Management Studio (SSMS), выберите нужную базу данных, щелкните ее правой кнопкой мыши и выберите «Свойства» в контекстном меню. Перейдите в Параметры и переключите модель восстановления базы .

Меняем модель восстановления с Полной на Простую

Затем в главном меню перейдите в раздел «Задачи» -> «Сжать» -> «Файлы» .

 

В поле Тип файла выберите Журнал, в поле Имя файла укажите имя файла журнала. В поле «Операции сжатия» выберите « Реорганизовать страницы, перед тем как освободить неиспользуемое пространство» , установите нужный размер файла и нажмите «OK».

Нажимаем «OK». После завершения операции обязательно измените режим восстановления базы данных обратно на Полный.

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

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

SQL обрезать логи: boot_from_cd — LiveJournal

Наши добрые друзья 1с-ники обрадовали забитым вусмерть логом sql. Проблема знакомая, хоть здесь, хоть по exchange с остановкой базой без бэкапов.

Алгоритм возникновения проблемы следующий:

1. Ставим MSSQL, хоть SQL 2008, хоть SQL 2012 как у меня.
2. В свойствах датабазы выставлен recovery full.
3. Логи начинают разрастаться. Если выложены на отдельном диске, забивают насмерть весь диск, после чего sql останавливается.

Решение экстренное:

1. База => properties => options => recovery model => выставить simple.
2. База => tasks => shrink => files => shrink action => reorganize pages before releasing unesed space => shrink file to: => выставить размер до которого произойдет shrink имеющегося => ok
3. База => properties => options => recovery model => выставить full (если оно надо, конечно).

Ограничить размер файла логов:

1. База => properties => files => имя лога => autogrowth /maxsize => ... Maximum file size => По дефолту там 2 тб, выставить нужный размер.
2. При заполнении выставленного размера sql остановится. Поэтому ставим auto shrink => база => options => automatic => auto shrink => true.

Регламентом тоже можно.
Management => maintenance plans => reglament => далее по вкусу обрезку.

MS SQL очистка журнала транзакций

В MS SQL очистка журнала транзакций необходима в том случае, если настроена полная модель восстановления базы данных. Если журнал транзакций переполнился, то ваша база данных откажется работать и будет выдавать ошибку: "журнал транзакций для базы данных заполнен". Почему такое происходит и как этого избежать? Рассмотрим два решения, которые помогут быстро устранить ошибку и продолжить работу с базой.

Увеличиваем размер журнала транзакций.

Запускаем SQL Server Management Studio, заходим в свойства базы и выбираем пункт [Файлы].

Для типа файла "Журнал" увеличиваем максимальный размера файла для авторасширения.

Сжимаем файл журнала транзакций.

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

Запускаем SQL Server Management Studio, заходим в свойства базы и выбираем пункт [Параметры]. Модель восстановления выбираем "Простая" и нажимаем ОК.

Далее правой клавишей мышки по базе и выбираем из контекстного меню [Задачи] - [Сжать] - [Файлы]

Тип сжатия: Журнал
Операция сжатия: Реорганизовать файлы, перед тем как освободить неиспользуемое место
И указываем размер до которого необходимо сжать, например 0.

Теперь нужно вернуться в свойства базы к пункту [Параметры] и переключить модель восстановления на "Полная".

Shrink базы данных MS SQL — Записки сумасшедшего дроида

Существует ситуация, когда LDF файл занимает много гигабайт места (файл с _log), и его необходимо уменьшить.

Это происходит когда база в SQL находится в режиме Full, т.е. с фиксацией всех произведенных транзакций. Модель Full позволяет восстановить состояние базы SQL на любое время, в то время, как модель Simple не позволяет этого сделать, а только восстановить базу из бэкапа. Смысл модели Full в том, что в журнал транзакций LDF записываются ВСЕ транзакции и там остаются, ну до определенного времени, например, до операции shrink. Таким образом SQL последовательным откатом транзакций назад может восстановить состояние базы на любой момент времени периода записанных в LDF транзакций.

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

Первое что нужно сделать, перевести базу в модель восстановления Simple (при этом настроить механизм создания беэкапов базы, если этого до сих пор не сделано). Эту операцию можно делать «на ходу».
Однако, перевод в simple автоматически не уменьшает размер файла транзакций. Можно, провести операцию shrink (сжатие базы) сразу, но лучше сначала сделать полный бэкап базы средствами SQL (есть там в SQL-е по этому поводу одна маленькая хитрость), а потом сделать shrink как файлу базы MDF, так и файлу журнала транзакций LDF. Размер базы тоже должен уменьшиться, но не на много, а, вот, размер файла транзакций LDF, если было сделано все правильно, должен стать практически нулевым (в случае, когда в этом момент в базе нет активной работы пользователей).
Операции бэкапа средствами SQL, и shrink-а, можно делать не выгоняя пользователей, эти операции могут, разве что, сказаться на производительности. Настоятельная рекомендация сделать резервные копии перед началом этой операции.

USE [dbname];
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE [dbname]
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE ([dbname_Log], 1);
GO
-- Reset the database recovery model.
ALTER DATABASE [dbname]
SET RECOVERY FULL;
GO

Как уменьшить размер файла журнала сервера sql?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

sql server 2012 - как обрезать значения, передающие предложение in запроса select

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
.Загрузчик

sql - как указать sqlldr обрезать конечные и ведущие пробелы

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
.

SQL TRIM, функция

В этой статье мы рассмотрим новую функцию SQL TRIM в SQL Server 2017 и далее, а также предоставим некоторую информацию о строковых функциях, предшествующих ей, таких как LTRIM и RTRIM.

Разработчики SQL обычно сталкиваются с проблемами, связанными с пробелом в начале и / или конце символьной строки. Нам может потребоваться обрезать начальные и конечные символы из символьной строки. Нам также может потребоваться выполнение строковых манипуляций с функциями SQL.Предположим, мы хотим удалить пробелы в конце строки, нам нужно будет использовать функции SQL LTRIM и RTRIM до SQL Server 2016.

В SQL Server 2017 мы получили новую встроенную функцию для обрезки начальных и конечных символов вместе с одной функцией. Функция SQL TRIM обеспечивает дополнительную функциональность по удалению символов из указанной строки. Мы по-прежнему можем использовать функции RTRIM и LTRIM с SQL Server 2017. Давайте рассмотрим эти функции на примерах.

Функция SQL LTRIM

Он удаляет символы с начала (начиная с левой стороны) указанной строки. В следующем запросе перед строкой и после нее есть пробелы. Нам нужно удалить пробел с левой стороны строки с помощью функции LTRIM.

Мы используем функцию SQL DATALENGTH () для вычисления длины данных в байтах до и после использования функции SQL LTRIM.

DECLARE @String VARCHAR (26) = 'Приложение';

SELECT @String as OriginalString,

LTRIM (@String) AS StringAfterTRIM,

DATALENGTH (@String) AS 'DataLength String (Bytes)',

DATALENGTH (LTRIM (@String)) AS 'DataLength String ) После TRIM'а;

  • Размер строки данных в байтах для исходной строки: 24
  • Размер строки данных в байтах после SQL LTRIM: 18

Функция SQL RTRIM

Он удаляет символы с конца ((начиная с правой стороны) указанной строки.Давайте выполним следующий запрос, чтобы посмотреть, как действует функция SQL RTRIM.

DECLARE @String VARCHAR (26) = 'Приложение';

SELECT @String как OriginalString,

RTRIM (@String) AS StringAfterTRIM,

DATALENGTH (@String) AS 'DataLength String (Bytes)',

DATALENGTH (RTRIM (@String)) AS 'DataLength String ) После TRIM'а;

  • Размер строки данных в байтах для исходной строки: 24
  • Размер строки данных в байтах после SQL RTRIM: 16

Функция TRIM в SQL Server 2017 г.

До появления SQL Server 2017, если нам нужно удалить как ведущее, так и обучающее пространство, нам нужно использовать как функцию LTRIM, так и функцию RTRIM.В следующем запросе мы использовали функции LTRIM и RTIM со строковой переменной.

DECLARE @String VARCHAR (26) = 'Приложение';

SELECT @String как OriginalString,

LTRIM (RTRIM (@String)) AS StringAfterTRIM,

DATALENGTH (@String) AS 'DataLength String (Bytes)',

DATALENGTH (LTRIM (RTRIM) (@String) (@String) AS 'DataLength String (байты) после TRIM';

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

  • Размер строки данных в байтах для исходной строки: 24
  • Размер строки данных в байтах после SQL LTRIM: 11

  • Размер строки данных в байтах для исходной строки: 25
  • Размер строки данных в байтах после SQL LTRIM и RTRIM: 11

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

Синтаксис функции TRIM

TRIM (строка [Trimcharacters FROM])

  • TrimCharacter : мы можем указать символ, который нужно удалить из строки.По умолчанию SQL Server удаляет пробелы с обеих сторон строки.
  • String: Нам нужно указать строку, которую мы хотим обрезать

Давайте рассмотрим функцию SQL TRIM на примерах.

TRIM Ведущие и учебные помещения:

По умолчанию функция Trim удаляет пробелы с обеих сторон строки. В следующем запросе мы должны определить строку с пробелами с обеих сторон строки.

Выполните этот запрос:

DECLARE @String VARCHAR (24) = 'Приложение';

SELECT @String как OriginalString,

TRIM (@String) AS StringAfterTRIM,

DATALENGTH (@String) AS 'DataLength String (Bytes)',

DATALENGTH (TRIM (@String)) AS 'DataLength String (Bytes) ) После TRIM'а;

Мы не указали символы для удаления в функции TRIM.В выходных данных функция SQL TRIM удаляет как начальные, так и конечные пробелы.

Вы также можете заметить разницу в длине строки до и после функции TRIM.

  • Размер строки данных в байтах для исходной строки: 24
  • Размер строки данных в байтах после SQL TRIM: 11

TRIM Начальные символы строки:

В предыдущем примере мы исследовали, что SQL TRIM представляет собой замену RTRIM и LTRIM и исключает удаление всего пробела до и после строки.Мы также можем удалить символы из строки с помощью TRIM. Предположим, мы хотим удалить символ ON из строки, мы можем указать его в функции TRIM согласно следующему сценарию.

DECLARE @String VARCHAR (24) = 'Приложение';

SELECT @String как OriginalString,

TRIM ('On' из @String) AS StringAfterTRIM,

DATALENGTH (@String) AS 'DataLength String (Bytes)',

DATALENGTH (TRIM ('On' from @String) )) AS 'Строка длины данных (в байтах) после TRIM';

Он проверяет указанные символы как в начале, так и в конце, и удаляет определенные символы.В строке Application у нас есть символ ON в начале. На следующем снимке экрана вы можете посмотреть результат работы функции TRIM.

  • Размер строки данных в байтах для исходной строки: 11
  • Размер строки данных в байтах после SQL TRIM: 9

Рассмотрим еще один пример. На этот раз мы хотим удалить символы App с ведущей стороны. Нам не нужно вносить никаких изменений в скрипт.Мы можем указать символ, который нужно удалить, с помощью SQL TRIM, и он даст требуемый результат.

DECLARE @String VARCHAR (24) = 'Приложение';

SELECT @String как OriginalString,

TRIM ('APP' из @String) AS StringAfterTRIM,

DATALENGTH (@String) AS 'DataLength String (Bytes)',

DATALENGTH (TRIM ('APP' from @String) )) AS 'Строка длины данных (в байтах) после TRIM';

  • Размер строки данных в байтах для исходной строки: 11
  • Размер строки данных в байтах после SQL TRIM: 8

В предыдущих примерах мы удаляли символ либо с начала, либо с конца.Если у нас есть персонаж с обеих сторон, он также удаляет их.

В следующем примере мы хотим удалить символ A , который находится с обеих сторон строки. Выполните сценарий, и он удалит указанные символы с обеих сторон.

DECLARE @String VARCHAR (24) = 'ApplicationA';

SELECT @String как OriginalString,

TRIM ('A' из @String) AS StringAfterTRIM,

DATALENGTH (@String) AS 'DataLength String (Bytes)',

DATALENGTH (TRIM ('A' from @String) )) AS 'Строка длины данных (в байтах) после TRIM';

  • Размер строки данных в байтах для исходной строки: 12
  • Размер строки данных в байтах после SQL TRIM: 10

Предположим, мы указали символ, которого нет в строке.В следующем примере мы хотим удалить символы A и C из начального или конечного конца. У нас нет символа C с обеих сторон, поэтому он не удаляет его. Он только удаляет символ A и дает результат.

DECLARE @String VARCHAR (24) = 'ApplicationA';

SELECT @String как OriginalString,

TRIM ('AC' из @String) AS StringAfterTRIM,

DATALENGTH (@String) AS 'DataLength String (Bytes)',

DATALENGTH (TRIM ('AC' from @String) )) AS 'Строка длины данных (в байтах) после TRIM';

  • Размер строки данных в байтах для исходной строки: 12
  • Размер строки данных в байтах после SQL TRIM: 10

TRIM для записей в таблице

В предыдущей статье мы использовали переменную для определения строки и выполнения операции SQL TRIM над ней.Обычно мы требуем использовать TRIM для записей таблиц. Давайте воспользуемся этим в следующем примере.

В следующих примерах он исключил символ R из строки в начале и конце строки.

Мы также можем использовать функцию SQL TRIM в операторе обновления. Предположим, мы хотим обновить все записи в таблице Employee и удалить символы Manager из JobTitile.

ОБНОВЛЕНИЕ [AdventureWorks2017].[HumanResources]. [Сотрудник]

SET JobTitle = TRIM («Менеджер» из «Менеджер по исследованиям и разработкам»);

Он не трактует Менеджера как одно слово. Функция обрезки проверяет каждый символ в строке и удаляет его.

Мы также можем использовать запятую (,) для разделения каждого символа.

ОБНОВЛЕНИЕ [AdventureWorks2017].[HumanResources]. [Сотрудник]

SET JobTitle = TRIM ('M, a, n, a, g, e, r' из 'Менеджера по исследованиям и развитию');

Он также выполняет ту же работу и удаляет определенные символы из строки в начале и в конце.

Заключение

В этой статье мы исследовали функцию SQL TRIM в SQL Server 2017 и более поздних версиях. Мы также узнали о функциях TRIM LTRIM и RTRIM, доступных в SQL Server 2016 или ранее.

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

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

Работая старшим консультантом администратора баз данных для крупных заказчиков и получив сертификат MCSA SQL 2012, он любит делиться знаниями в различных блогах.
С ним можно связаться по [email protected]

Просмотреть все сообщения Rajendra Gupta

Последние сообщения Rajendra Gupta (посмотреть все) .

Как очистить журналы ошибок с помощью запроса в SQL Server без перезапуска экземпляра?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
.

Обрезка текстовых строк в SQL Server 2008

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Whe
.

Смотрите также