У мене є робота в SQL 2008, яка виконує збережену процедуру для резервного копіювання всіх баз даних. Це працює щодня через роботу агента sql сервера.
Він закривається з успіхом щодня, але через кілька днів він закінчується з успіхом лише після створення резервної копії декількох баз даних. Кожен раз може бути різна кількість баз даних. Більшість днів він успішно створює резервні копії всіх баз даних, але іноді успішно створює 2 резервні копії, іноді 5 тощо.
Я не бачу жодних помилок в історії роботи, переглядачі подій або журналі sql сервера.
Резервне копіювання відбувається на локальному диску, хоча папка є "з'єднанням" з папкою на розширюваному обсязі зберігання.
Операційна система Windows 2003 64-бітна з 64-бітною версією Sql Server 2008, веб-видання 64, як віртуальна машина, що працює на хості Vmware ESXi 5.
Збережена процедура:
ALTER PROCEDURE [dbo].[backup_all_databases]
@path VARCHAR(255)='c:\backups\'
AS
DECLARE @name VARCHAR(50) -- database name
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
DECLARE @dbIsReadOnly sql_variant -- is database read_only?
DECLARE @dbIsOffline sql_variant -- is database offline?
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('tempdb')
AND version > 0 AND version IS NOT NULL
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '.bak'
SET @dbIsReadOnly = (SELECT DATABASEPROPERTY(@name, 'IsReadOnly')) -- 1 = Read Only
SET @dbIsOffline = (SELECT DATABASEPROPERTY(@name, 'IsOffline')) -- 1 = Offline
IF (@dbIsReadOnly = 0 OR @dbIsReadOnly IS NULL) AND @dbIsOffline =0
BEGIN
BACKUP DATABASE @name TO DISK = @fileName WITH INIT
WAITFOR DELAY '00:00:20'
END
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
Будь-які пропозиції, будь ласка?