J'ai un travail dans SQL 2008 qui exécute un proc stocké pour sauvegarder toutes les bases de données. Cela s'exécute quotidiennement via le travail de l'agent serveur SQL.
Il se ferme avec succès tous les jours, mais certains jours, il ne se termine avec succès qu'après avoir sauvegardé quelques bases de données. Il peut s'agir d'un nombre différent de bases de données à chaque fois. La plupart du temps, il sauvegarde avec succès toutes les bases de données, mais parfois 2 sauvegardes avec succès, parfois 5, etc.
Je ne vois aucune erreur dans l'historique des travaux, l'observateur d'événements ou le journal du serveur SQL.
Des sauvegardes ont lieu sur un disque local, bien que le dossier soit une "jonction" vers un dossier sur un volume de stockage extensible.
Le système d'exploitation est Windows 2003 64 bits exécutant Sql Server 2008 Web Edition 64 bits en tant que machine virtuelle exécutée sur l'hôte Vmware ESXi 5.
Procédure stockée:
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
Des suggestions s'il vous plait?