Tôi có một công việc trong SQL 2008 chạy một Proc được lưu trữ để sao lưu tất cả các cơ sở dữ liệu. Điều này chạy hàng ngày thông qua công việc đại lý máy chủ sql.
Nó thoát khỏi thành công mỗi ngày nhưng một số ngày nó thoát khỏi thành công chỉ sau khi sao lưu một vài cơ sở dữ liệu. Nó có thể là số lượng cơ sở dữ liệu khác nhau mỗi lần. Hầu hết các ngày nó sao lưu thành công tất cả các cơ sở dữ liệu nhưng đôi khi 2 sao lưu thành công, đôi khi 5, v.v.
Tôi không thấy bất kỳ lỗi nào trong lịch sử công việc, trình xem sự kiện hoặc nhật ký máy chủ sql.
Các bản sao lưu đang diễn ra vào một đĩa cục bộ, mặc dù thư mục là một "điểm nối" với một thư mục trên một dung lượng lưu trữ có thể mở rộng.
HĐH là Windows 2003 64bit chạy phiên bản web Sql Server 2008 64 bit dưới dạng máy ảo chạy trên máy chủ Vmware ESXi 5.
Thủ tục lưu trữ:
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
Có gợi ý nào không?