Saya punya pekerjaan di SQL 2008 yang menjalankan proc tersimpan untuk membuat cadangan semua database. Ini berjalan setiap hari melalui pekerjaan agen server sql.
Itu berhenti dengan sukses setiap hari tetapi beberapa hari itu berhenti dengan sukses hanya setelah membuat cadangan beberapa database. Ini bisa menjadi jumlah database yang berbeda setiap kali. Hampir setiap hari berhasil mencadangkan semua basis data, tetapi terkadang 2 pencadangan berhasil, kadang-kadang 5, dll.
Saya tidak melihat kesalahan dalam riwayat pekerjaan, penampil acara, atau log server sql.
Pencadangan sedang berlangsung ke disk lokal, meskipun folder tersebut merupakan "persimpangan" ke folder pada volume penyimpanan yang dapat diperluas.
OS adalah Windows 2003 64bit yang menjalankan Sql Server 2008 edisi web 64 bit sebagai mesin virtual yang berjalan pada host Vmware ESXi 5.
Prosedur tersimpan:
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
Ada saran?