分享

sql 自动备份的存储过程

 doctorzhou 2010-09-20

create proc bak
as
-- 用脚本处理的示例
-- 假设一天一个完全备份
DECLARE
    @database_backup sysname,
    @path_backup nvarchar(260),
    @keep_days int,
    @file_backup nvarchar(260),
    @file_delete nvarchar(260);

SELECT
    @database_backup = N'card_his',  -- 要备份的库名
    @path_backup = N'd:\backup\',  -- 备份目录
    @keep_days = 7,                -- 备份文件保留的天数
   
    @database_backup = PARSENAME(@database_backup, 1),
    @path_backup = CASE
                        WHEN @path_backup LIKE N'%\' THEN @path_backup
                        ELSE @path_backup + N'\'
                    END,
    @file_backup = @path_backup
                + @database_backup
                + N'_' + CONVERT(char(10), GETDATE(), 112)
                + N'.bak',
    @file_delete = @path_backup
                + @database_backup
                + N'_' + CONVERT(char(10), GETDATE() - @keep_days, 112)
                + N'.bak';

-- 备份
DECLARE
    @s nvarchar(4000);
SET @s = N'
BACKUP DATABASE ' + QUOTENAME(@database_backup) + N'
    TO DISK = @file_backup
';
EXEC sp_executesql
    @s,
    N'
        @file_backup nvarchar(260)
    ',
    @file_backup;
   
-- 删除历史
DECLARE
    @file_exist int;
EXEC master.dbo.xp_fileexist
    @file_delete,
    @file_exist OUT;

IF @file_exist = 1
BEGIN
    SET @s = N'DEL "' + @file_delete + N'"';
    EXEC master.dbo.xp_cmdshell @s;
END

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多