Ho un lavoro in SQL 2008 che esegue un proc memorizzato per il backup di tutti i database. Questo viene eseguito quotidianamente tramite il lavoro dell'agente server SQL.
Si chiude con successo ogni giorno ma alcuni giorni si chiude con successo solo dopo aver eseguito il backup di alcuni database. Può essere ogni volta un numero diverso di database. Quasi tutti i giorni esegue correttamente il backup di tutti i database ma a volte 2 eseguono correttamente il backup, a volte 5, ecc.
Non vedo errori nella cronologia dei lavori, nel visualizzatore eventi o nel registro del server sql.
I backup vengono eseguiti su un disco locale, sebbene la cartella sia un "nodo" per una cartella su un volume di archiviazione espandibile.
Il sistema operativo è Windows 2003 a 64 bit con Sql Server 2008 Web Edition 64 bit come macchina virtuale in esecuzione su host Vmware ESXi 5.
Stored procedure:
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
Qualche suggerimento per favore?