Tôi chỉ loay hoay với giao diện đồ họa SSMS và nghiên cứu các tùy chọn của tác vụ "khôi phục".
Một điều mà tôi nhận thấy là khi tôi nhấp vào "tạo tập lệnh", dòng đầu tiên của truy vấn là:
RESTORE DATABASE [MyDatabase] FROM DISK = N'Server_Patch\Database_name_LOGSHIPPING.BKP' WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 5 ( and a lot of log backups for point in time )
Ok, không có vấn đề gì, nhưng, tôi đang thực hiện sao lưu hàng ngày cơ sở dữ liệu này. đây Database_name_LOGSHIPPING.BKP
là tên của tệp mà tôi đã tạo để đăng nhập vận chuyển một tháng trước.
Tại sao khi tôi cố gắng sử dụng giao diện đồ họa SSMS để khôi phục bản sao lưu, nó sẽ trỏ đến tệp sao lưu này? Tôi thậm chí không có tập tin này nữa.
Với truy vấn này từ MSSQLTIPS, tôi có thể thấy tất cả các bản sao lưu từ cơ sở dữ liệu này:
SELECT
CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,
msdb.dbo.backupset.database_name,
msdb.dbo.backupset.backup_start_date,
msdb.dbo.backupset.backup_finish_date,
msdb.dbo.backupset.expiration_date,
CASE msdb..backupset.type
WHEN 'D' THEN 'Database'
WHEN 'L' THEN 'Log'
END AS backup_type,
msdb.dbo.backupset.backup_size,
msdb.dbo.backupmediafamily.logical_device_name,
msdb.dbo.backupmediafamily.physical_device_name,
msdb.dbo.backupset.name AS backupset_name,
msdb.dbo.backupset.description
FROM msdb.dbo.backupmediafamily
INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id
WHERE (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102) >= GETDATE() - 7) and msdb..backupset.type ='D'
ORDER BY
msdb.dbo.backupset.database_name,
msdb.dbo.backupset.backup_finish_date
Điều gì có thể sai ở đây? Tôi không sử dụng CHỈ SAO CHÉP.
EDIT2:
Tôi đang thực hiện sao lưu thủ công hàng ngày để kiểm tra và thậm chí theo cách này, SQL Server chọn bản sao lưu cũ không còn tồn tại nữa. Khi chạy RESTORE HEADERONLY...
nó nói (rõ ràng) tập tin không tồn tại.
EDIT 3:
Đây là bản in GUI:
Cơ sở dữ liệu này là một khôi phục từ một máy chủ khác (cùng một máy chủ, các trường hợp khác nhau). Huuum ... Tôi nghĩ vấn đề là ở đây.
Các bạn có thể thấy trên "máy chủ" trong bức ảnh thứ hai không? Nó có 2 máy chủ. Tôi đang sử dụng một ví dụ có tên GDLIC2014.
kịch bản:
Kịch bản sao lưu:
DECLARE @Patch varchar(1000)
SELECT @Patch = (SELECT 'PATCH\FULL\DATABASE_ ' + convert(varchar(500),GetDate(),112) + '.bkp')
BACKUP DATABASE DATABASE TO DISK=@Patch with compression
Với cùng một truy vấn từ MSSQLTIPS, tôi có thể tìm thấy các kết quả này, sử dụng nó không có phạm vi ngày:
Hình vuông màu đỏ là bản sao lưu sai từ ví dụ cũ, hình vuông màu xanh là bản sao lưu cuối cùng được thực hiện (GUI nên sử dụng nó)
EDIT 4:
Chà, với truy vấn này để liệt kê Lịch sử sao lưu, tôi thấy rằng mọi nhật ký và đầy đủ đều được liệt kê chính xác:
SELECT TOP 100
s.database_name,
m.physical_device_name,
CAST(CAST(s.backup_size / 1000000 AS INT) AS VARCHAR(14)) + ' ' + 'MB' AS bkSize,
CAST(DATEDIFF(second, s.backup_start_date,
s.backup_finish_date) AS VARCHAR(4)) + ' ' + 'Seconds' TimeTaken,
s.backup_start_date,
CAST(s.first_lsn AS VARCHAR(50)) AS first_lsn,
CAST(s.last_lsn AS VARCHAR(50)) AS last_lsn,
CASE s.[type]
WHEN 'D' THEN 'Full'
WHEN 'I' THEN 'Differential'
WHEN 'L' THEN 'Transaction Log'
END AS BackupType,
s.server_name,
s.recovery_model
FROM msdb.dbo.backupset s
INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id
WHERE s.database_name = DB_NAME() -- Remove this line for all the database
ORDER BY backup_start_date DESC, backup_finish_date
GO
EDIT5:
Có cái gì để khởi động lại tiêu đề của cơ sở dữ liệu
(Tôi không có ý tưởng)