Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Создаётся несколько резервных копий для каждой БД  [new]
vinnikiser
Member

Откуда:
Сообщений: 13
В последнее время, ни с того ни с сего, при выполнении плана обслуживания Backup Database Task стало создаваться несколько резервных копий для каждой БД. Бэкап выполняется полный, не дифференцированный.
Буквально неделю назад такой проблемы не было...
В логах агента, sql и самого сервера ничего нет.

Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
Dec 28 2012 20:23:12
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
22 апр 14, 06:50    [15913733]     Ответить | Цитировать Сообщить модератору
 Re: Создаётся несколько резервных копий для каждой БД  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Да все, что угодно. Зашедулили несколько раз за день, кто-то запускает несколько раз за день, несколько инстансов пишут в одну и ту же папку.
22 апр 14, 09:47    [15914135]     Ответить | Цитировать Сообщить модератору
 Re: Создаётся несколько резервных копий для каждой БД  [new]
vinnikiser
Member

Откуда:
Сообщений: 13
На сервере несколько инстансов.
Во всех инстансах разные БД.
Бэкапы БД каждого инстанса пишутся в сетевую_папку/имя_инстанса/имя_БД.
Задание выполняется 1 раз в день.
Скажите, а в чём проявляется связь между тем, что на сервере несколько инстансов и тем, что создаются несколько копий бэкапа БД в сетевой_папке/имя_инстанса/имя_БД?
Тем более, что раньше такого не было... =(
24 апр 14, 15:37    [15929964]     Ответить | Цитировать Сообщить модератору
 Re: Создаётся несколько резервных копий для каждой БД  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Значит или есть другое задание, или кто-то бэкап руками запускает. Сервер сам бэкапов не делает. Покопайтесь в msdb, там должна быть какая-нибудь backup history.
24 апр 14, 16:03    [15930228]     Ответить | Цитировать Сообщить модератору
 Re: Создаётся несколько резервных копий для каждой БД  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Гавриленко Сергей Алексеевич
Покопайтесь в msdb, там должна быть какая-нибудь backup history.

+ История бэкапов из msdb
DECLARE @BackupType VARCHAR(30)
DECLARE @dbName NVARCHAR(128)
SET @BackupType = 'D'
SET @dbName = 'YourDatabaseName'

SELECT
  CASE s.[type]
    WHEN 'D' THEN 'Full'
    WHEN 'I' THEN 'Differential'
    WHEN 'L' THEN 'Transaction Log'
    WHEN 'F' THEN 'File or Filegroup'
    WHEN 'G' THEN 'Differential file'
    WHEN 'P' THEN 'Partial'
    WHEN 'Q' THEN 'Differential partial'
    ELSE 'Unknown'
  END AS BackupType,
  s.database_name as DatabaseName,
  m.physical_device_name,
  CAST(s.backup_size / 1024./1024. AS INT) AS [Size MB],
  CAST(s.compressed_backup_size / 1024./1024. AS INT) AS [Compr MB],
  CAST(s.compressed_backup_size / NULLIF(s.backup_size, 0) AS DECIMAL(6,2)) AS [Ratio%],
  s.user_name,
  CONVERT(VARCHAR(30), DATEADD(SECOND, DATEDIFF(SECOND, s.backup_start_date, s.backup_finish_date), CAST('1900-01-01' as datetime)), 108) AS TimeTaken,
  s.backup_start_date,
  s.backup_finish_date,
  s.recovery_model,  
  s.is_copy_only,
  s.has_bulk_logged_data,
  s.is_snapshot,
  s.is_readonly,
  s.is_single_user,
  s.is_damaged,
  s.has_incomplete_metadata,
  s.name,  
  s.position,  
  s.server_name,
  s.database_version,
  s.has_backup_checksums,
  s.is_password_protected,
  CAST(s.first_lsn AS VARCHAR(50)) AS first_lsn,
  CAST(s.last_lsn AS VARCHAR(50)) AS last_lsn
FROM msdb.dbo.backupset s
  INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id
WHERE (s.[type] = @BackupType OR @BackupType IS NULL)
  AND s.database_name = @dbName
ORDER BY backup_start_date DESC, backup_finish_date DESC
25 апр 14, 00:43    [15932809]     Ответить | Цитировать Сообщить модератору
 Re: Создаётся несколько резервных копий для каждой БД  [new]
vinnikiser
Member

Откуда:
Сообщений: 13
Просмотрел все логи, включая серверные - ничего необычного нет.
Досконально изучил "историю бэкапов" - бэкап создаётся с именем БД + дата_время создания (создаётся по 2-3 копии каждых 10-15 минут, затем план выполняется дальше и завершается успехом).
В 2 часа ночи никто бэкапов вручную каждый день не запускает.

В итоге, проблему решил - она была в очистке буфера.
В плане, после шага обработки индексов (реорганизация/перестроение) выполнялся шаг с очисткой системных ресурсов, в котором, кроме очистки кэша, была прописана команда DBCC DROPCLEANBUFFERS.

Признаться, не совсем понимаю в чём проявлялась зависимость между очисткой буфера и многократным созданием бэкапа каждой БД, причём копии не создавались всю ночь, а только 2-3 раза, затем выполнение плана шло дальше - как выполнение плана могло само откатываться на несколько шагов назад и выполнятся заново?

В общем, после удаления этой команды всё восстановилось. Сегодня с утра пришёл - полёт нормальный - по одной копии каждой БД.

P.S. Буду рад, если кто-то выскажет предположения по поводу работы DBCC DROPCLEANBUFFERS в данном случае, т.е. почему так происходило.
25 апр 14, 06:40    [15933023]     Ответить | Цитировать Сообщить модератору
 Re: Создаётся несколько резервных копий для каждой БД  [new]
vinnikiser
Member

Откуда:
Сообщений: 13
Кстати, Mind, спасибо за скрипт!
25 апр 14, 06:44    [15933030]     Ответить | Цитировать Сообщить модератору
 Re: Создаётся несколько резервных копий для каждой БД  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
DBCC DROPCLEANBUFFERS не имеет никакого отношения к вашей ситуации. Но запросто при сохранении плана могли создасться нормальные джобы для него, а до этого были какие-то кривые.
25 апр 14, 12:04    [15934542]     Ответить | Цитировать Сообщить модератору
 Re: Создаётся несколько резервных копий для каждой БД  [new]
Glory
Member

Откуда:
Сообщений: 104751
vinnikiser
В итоге, проблему решил - она была в очистке буфера.
В плане, после шага обработки индексов (реорганизация/перестроение) выполнялся шаг с очисткой системных ресурсов, в котором, кроме очистки кэша, была прописана команда DBCC DROPCLEANBUFFERS.

Что-то я сколько не запускал у себя DBCC DROPCLEANBUFFERS, так ни одного бэкапа и ен получил.
Что я делаю не так ?
25 апр 14, 19:09    [15937875]     Ответить | Цитировать Сообщить модератору
 Re: Создаётся несколько резервных копий для каждой БД  [new]
vinnikiser
Member

Откуда:
Сообщений: 13
Вот и мне не понятно, почему так происходит...
Glory
Что-то я сколько не запускал у себя DBCC DROPCLEANBUFFERS, так ни одного бэкапа и ен получил.
Что я делаю не так ?

Разумеется, самостоятельно эта процедура не создаёт бэкапы.

Проблему решил, тему можно закрывать.
28 апр 14, 07:27    [15944277]     Ответить | Цитировать Сообщить модератору
 Re: Создаётся несколько резервных копий для каждой БД  [new]
Glory
Member

Откуда:
Сообщений: 104751
vinnikiser
Разумеется, самостоятельно эта процедура не создаёт бэкапы.

И не самостоятельно тоже не создает
28 апр 14, 08:17    [15944315]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить