Действия при переполнении базы данных — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
(Новая страница: «В данной статье описываются действия при переполнении базы данных: SQL сервер 2005 имеет огр...»)
 
Строка 1: Строка 1:
В данной статье описываются действия при переполнении базы данных:
+
В данной статье описываются действия при переполнении базы данных.
  
SQL сервер 2005 имеет ограничение на размер базы данных 4 Гб, SQL сервер 2008 - 8 гб.  
+
'''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]'''
  
* Статистика соединений АТС [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
  
Шаг 2. Очищение таблиц. Воспользуйтесь следующим запросом:
+
'''Шаг 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 строк.