Действия при переполнении базы данных — различия между версиями
(Новая страница: «В данной статье описываются действия при переполнении базы данных: SQL сервер 2005 имеет огр...») |
|||
Строка 1: | Строка 1: | ||
− | В данной статье описываются действия при переполнении базы данных | + | В данной статье описываются действия при переполнении базы данных. |
− | SQL | + | '''SQL SERVER 2005 Express''' имеет ограничение на размер базы данных 4 Гб, '''SQL SERVER 2008 Express''' - 8 Гб, '''SQL SERVER 2012 Express''' - 10 Гб. Превышение размера баз данных, как правило происходит из за роста следующих таблиц (обратите внимание на базы данных): |
− | + | * Статистика соединений АТС '''[oktell].[dbo].[A_Stat_Connections_1x1]''' | |
+ | * Статистика соединений Call-центра '''[oktell_cc_temp].[dbo].[A_Cube_CC_EffortConnections]''' | ||
− | + | В случае переполнения базы данных у вас могут проявляться следующие симптомы: не отображается статистика АТС, система не запускается, зависание линий и др. | |
− | + | <center> | |
+ | {|cellpadding="10" cellspacing="0" border="1" | ||
+ | |Перед началом работы обязательно сделайте бэкапы баз данных. Зайдите в '''Администрирование''' - '''Общие настройки''' - '''Управление базами данных''' - '''Произвести резервное копирование БД.''' | ||
+ | |- | ||
+ | |} | ||
+ | </center> | ||
− | + | Вы можете использовать встроенные методы для очистки баз данных. Зайдите в '''Администрирование''' - '''Общие настройки''' - '''Управление базами данных''' - '''Произвести общую профилактику БД''' и '''Удалить данные и перестроить индексы'''. Обратите внимание на количество дней, которые необходимо оставить в вашей статистике. | |
− | Шаг 1. Определение таблиц, которые занимают больше всего места в вашей базе данных. Воспользуйтесь хранимой процедурой A_DB_HelpTables. Выполните в SSMS следующий запрос: | + | <span style="color:red;"> ВНИМАНИЕ: Если сделать "'''Профилактика БД и удаление данных 2 дня'''", то база может "упасть" и восстанавливать ее можно только из бэкапа. Происходит это из за того, что запрос может выполняться долгое время и если его прервать, то восстановить БД уже будет сложно. Дело в том, что при выполнении данной процедуры создается некоторый кэш внутри бд. Если база переполнена — он не создастся. |
+ | |||
+ | '''Шаг 1.''' Обязательно сделайте бэкапы баз данных. Зайдите в '''Администрирование''' - '''Общие настройки''' - '''Управление базами данных''' - '''Произвести резервное копирование БД.''' | ||
+ | |||
+ | '''Шаг 2.''' Определение таблиц, которые занимают больше всего места в вашей базе данных. Воспользуйтесь хранимой процедурой '''A_DB_HelpTables.''' Выполните в SSMS следующий запрос: | ||
exec A_DB_HelpTables | exec A_DB_HelpTables | ||
− | Шаг | + | '''Шаг 3.''' Очищение таблиц. Воспользуйтесь следующим запросом: |
DELETE FROM [oktell].[dbo].[A_Stat_Connections_1x1] | DELETE FROM [oktell].[dbo].[A_Stat_Connections_1x1] | ||
Строка 24: | Строка 34: | ||
DBCC SHRINKDATABASE (oktell, TRUNCATEONLY) | DBCC SHRINKDATABASE (oktell, TRUNCATEONLY) | ||
+ | |||
+ | '''Описание запроса:''' Запрос удаляет записи из таблицы '''[oktell].[dbo].[A_Stat_Connections_1x1]''' '''по неделям''', начиная с самой последней (первое условие в запросе). При этом запрос, в любом случае, '''оставит записи за последний месяц''' (второе условие). После выполнения запроса производится очистка таблицы от временных записей (логи, транзакции) командой '''SHRINK'''. | ||
+ | |||
+ | * Чтобы''' не потерять данные''' в результате запроса, например за последние три месяца, измените во втором условии значение -30 на -90. | ||
+ | |||
+ | * Если база данных переполнена настолько, что не дает выполнить данный запрос, попробуйте удалять записи не по неделям (по 7 дней), а по 3 дня. Для этого измените значение в первом условии 7 на 3. Этим же способом, можно увеличить количество удаляемых записей с недели на месяц, изменив значение на 30. | ||
+ | |||
+ | Нажмите '''F5''' для выполнения запроса. В случае удачного выполнения из таблицы удалятся записи за неделю. Нажмите '''F5''' еще несколько раз, пока не увидите, что '''обработано 0 строк.''' |
Версия 09:23, 6 декабря 2013
В данной статье описываются действия при переполнении базы данных.
SQL SERVER 2005 Express имеет ограничение на размер базы данных 4 Гб, SQL SERVER 2008 Express - 8 Гб, SQL SERVER 2012 Express - 10 Гб. Превышение размера баз данных, как правило происходит из за роста следующих таблиц (обратите внимание на базы данных):
- Статистика соединений АТС [oktell].[dbo].[A_Stat_Connections_1x1]
- Статистика соединений Call-центра [oktell_cc_temp].[dbo].[A_Cube_CC_EffortConnections]
В случае переполнения базы данных у вас могут проявляться следующие симптомы: не отображается статистика АТС, система не запускается, зависание линий и др.
Перед началом работы обязательно сделайте бэкапы баз данных. Зайдите в Администрирование - Общие настройки - Управление базами данных - Произвести резервное копирование БД. |
Вы можете использовать встроенные методы для очистки баз данных. Зайдите в Администрирование - Общие настройки - Управление базами данных - Произвести общую профилактику БД и Удалить данные и перестроить индексы. Обратите внимание на количество дней, которые необходимо оставить в вашей статистике.
ВНИМАНИЕ: Если сделать "Профилактика БД и удаление данных 2 дня", то база может "упасть" и восстанавливать ее можно только из бэкапа. Происходит это из за того, что запрос может выполняться долгое время и если его прервать, то восстановить БД уже будет сложно. Дело в том, что при выполнении данной процедуры создается некоторый кэш внутри бд. Если база переполнена — он не создастся.
Шаг 1. Обязательно сделайте бэкапы баз данных. Зайдите в Администрирование - Общие настройки - Управление базами данных - Произвести резервное копирование БД.
Шаг 2. Определение таблиц, которые занимают больше всего места в вашей базе данных. Воспользуйтесь хранимой процедурой A_DB_HelpTables. Выполните в SSMS следующий запрос:
exec A_DB_HelpTables
Шаг 3. Очищение таблиц. Воспользуйтесь следующим запросом:
DELETE FROM [oktell].[dbo].[A_Stat_Connections_1x1] WHERE TimeStart< DATEADD ( dd, 7 , (SELECT MIN(timestart) FROM a_stat_connections_1x1 ) ) AND TimeStart< DATEADD ( DD, -30, GETDATE()) DBCC SHRINKDATABASE (oktell, TRUNCATEONLY)
Описание запроса: Запрос удаляет записи из таблицы [oktell].[dbo].[A_Stat_Connections_1x1] по неделям, начиная с самой последней (первое условие в запросе). При этом запрос, в любом случае, оставит записи за последний месяц (второе условие). После выполнения запроса производится очистка таблицы от временных записей (логи, транзакции) командой SHRINK.
- Чтобы не потерять данные в результате запроса, например за последние три месяца, измените во втором условии значение -30 на -90.
- Если база данных переполнена настолько, что не дает выполнить данный запрос, попробуйте удалять записи не по неделям (по 7 дней), а по 3 дня. Для этого измените значение в первом условии 7 на 3. Этим же способом, можно увеличить количество удаляемых записей с недели на месяц, изменив значение на 30.
Нажмите F5 для выполнения запроса. В случае удачного выполнения из таблицы удалятся записи за неделю. Нажмите F5 еще несколько раз, пока не увидите, что обработано 0 строк.