Tengo un trabajo en SQL 2008 que ejecuta un proceso almacenado para hacer una copia de seguridad de todas las bases de datos. Esto se ejecuta diariamente a través del trabajo del agente del servidor sql.
Se cierra con éxito todos los días, pero algunos días se cierra con éxito solo después de hacer una copia de seguridad de algunas bases de datos. Puede ser un número diferente de bases de datos cada vez. La mayoría de los días realiza una copia de seguridad de todas las bases de datos, pero a veces 2 copias de seguridad con éxito, a veces 5, etc.
No veo ningún error en el historial de trabajos, el visor de eventos o el registro del servidor sql.
Las copias de seguridad se realizan en un disco local, aunque la carpeta es una "unión" a una carpeta en un volumen de almacenamiento expandible.
El sistema operativo es Windows 2003 de 64 bits que ejecuta Sql Server 2008 web edition de 64 bits como una máquina virtual que se ejecuta en el host Vmware ESXi 5.
Procedimiento almacenado:
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
¿Alguna sugerencia por favor?