Tôi đã đọc về điều này, nhưng tài liệu trực tuyến hơi khó hiểu và có vẻ lúng túng được viết. Ví dụ như INIT
, NOINIT
. Một người nói rằng họ sẽ cố gắng ghi đè lên mọi thứ. Người khác nói rằng nó sẽ nối bất kể.
Tôi muốn một cái gì đó ở giữa đó. Tôi muốn các bộ phương tiện đã hết hạn không còn trong tệp, nhưng đối với các công việc sao lưu mới sẽ nối vào tệp cùng với bất kỳ bộ nào chưa hết hạn.
SQL dưới đây sẽ thực hiện sao lưu mong muốn?
BACKUP DATABASE [mydb]
TO DISK = N'c:\Backups\mydb.bak'
WITH NOFORMAT, NOINIT, NAME = N'mydb-Full Database Backup', NOSKIP,
NOREWIND, NOUNLOAD, STATS = 10, RETAINDAYS = 60
GO
Nếu tôi chạy ở trên và có một bản sao lưu cũ hơn 60 ngày, nó có bị xóa khỏi tệp không?
Biên tập:
Đáp lại đề nghị của RichardTheKiwi, tôi đã viết lại mã để tạo một tệp mới mỗi lần. Sau đó tôi sẽ viết một tập lệnh windows để xóa các tập tin cũ hơn một ngày nhất định
declare @filename varchar(max)
set @filename = 'c:\sqlbackups\pptd_' + replace(replace(convert(varchar, getdate(), 120),':','_'),' ','_') + '.bak'
BACKUP DATABASE [Peter's pointless test database]
TO DISK = @filename
WITH FORMAT, INIT, NAME = N'pptd-Full Database Backup',
NOREWIND, NOUNLOAD, STATS = 10
GO