数据库远程全备份的一种解决方案

数据库远程全备份的一种解决方案

–exec BackUPDatabase_MaJiatao ‘pubs’,’XZ154ABC$’,’16:50:00.000′,1,’XZ154MaJiatao’,’MaJiatao’/***************************************************描述:数据库全备份和增量备份编写:马加涛修改:马加涛:2014-02-12:1.加入了备份路径可以选择本机和远程路径2.修正了保存历史备份记录的方式,不在需要本机硬盘上的文本文件来做保存介质***************************************************/if object_id(‘BackUPDatabase_MaJiatao’) is not nulldrop PRoc BackUPDatabase_MaJiatao

GO

alter proc BackUPDatabase_MaJiatao@database_name sysname,–要备份的数据库名称@physical_backup_device_name sysname,–备份文件存放目录@all_backup_datetime char(17)=’20:00:00.000′,–全备份的时间@IntDistance int=1,–全备份的时间范围(小时)@UserName varchar(100),–远程服务器登录名称@PassWord varchar(100)=”–远程服务器登录密码with ENCRYPTION as

/*********************************declare @database_name sysname,–要备份的数据库名称@physical_backup_device_name sysname,–备份文件存放目录@all_backup_datetime char(17)select @database_name=’test’,@physical_backup_device_name=’E:备份文件查询服务器’,@all_backup_datetime=’16:00:00.000′

***************************************/

–建立备份历史记录if not exists (select * from dbo.sysobjects where id = object_id(N’backup_recorder’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1) exec(‘CREATE TABLE backup_recorder (backup_datetime datetime not null,backup_name varchar (500) PRIMARY KEY,backup_path varchar (500) NOT NULL ,is_all_backup char(1) not null default 0,file_is_exists char(1) not null default 0)’)elsebeginif not exists(select * from syscolumns where name=’file_is_exists’ and ID=object_id(N’backup_recorder’))begindrop table backup_recorderexec(‘CREATE TABLE backup_recorder (backup_datetime datetime not null,backup_name varchar (500) PRIMARY KEY,backup_path varchar (500) NOT NULL ,is_all_backup char(1) not null default 0,file_is_exists char(1) not null default 0)’)endend

declare @backup_set_full sysname,@backup_set sysname,–备份文件名称@backup_name sysname

declare @Return_Int intdeclare @CommandText nvarchar(4000)declare @DelFilePathName nvarchar(4000)

declare @physical_backup_device_name_now nvarchar(4000)

declare @physical_backup_device_namebackup nvarchar(4000)

if isnull(@database_name,”)=” or rtrim(@database_name)=”–数据库名称为空set @database_name=db_name()–备份当前数据库

if isnull(@physical_backup_device_name,”)=” or rtrim(@physical_backup_device_name)=”–备份目录为空,使用系统默认目录beginSELECT @physical_backup_device_name=ltrim(rtrim(reverse(filename))) FROM master.dbo.sysdatabases where name=@database_nameset @physical_backup_device_name=reverse(substring(@physical_backup_device_name,charindex(”,@physical_backup_device_name)+5,260))+’backup’end

–判断路径是网络路径还是本机路径if left(@physical_backup_device_name,2)=” and ltrim(rtrim(@UserName))” and ltrim(rtrim(@Password))”beginselect @CommandText=’net use ‘+@physical_backup_device_name+’ “‘+@Password+'” /user:’+@UserNameexec master..xp_cmdshell @CommandText,no_outputend

智慧车行预约小程序 智慧车行预约小程序

智慧车行小程序,是一个专门为洗车/4S/车辆维修行业打造的小程序,前后端完整代码包括车行动态,养车常识,保养预约,维修预约,洗车美容预约,汽车检测预约等功能。采用腾讯提供的小程序云开发解决方案,无须服务器和域名预约管理:开始/截止时间/人数均可灵活设置,可以自定义客户预约填写的数据项预约凭证:支持线下到场后校验签到/核销/二维码自助签到等多种方式详尽的预约数据:支持预约名单数据导出Excel,打印

智慧车行预约小程序 0 查看详情 智慧车行预约小程序

–确定目录是否存在select @CommandText=’dir ‘+@physical_backup_device_name+’全备份’exec @Return_Int=master..xp_cmdshell @CommandText, no_outputif @Return_Int0 –目录不存在,建立beginselect @CommandText=’Mkdir ‘+@physical_backup_device_name+’全备份’exec @Return_Int=master..xp_cmdshell @CommandText, no_outputend

select @CommandText=’dir ‘+@physical_backup_device_name+’差异备份’exec @Return_Int=master..xp_cmdshell @CommandText, no_outputif @Return_Int0 –目录不存在,建立beginselect @CommandText=’Mkdir ‘+@physical_backup_device_name+’差异备份’exec @Return_Int=master..xp_cmdshell @CommandText, no_outputend

select @physical_backup_device_name_now=@database_name+’_’+ltrim(rtrim(REPLACE(REPLACE(REPLACE(REPLACE(convert(char(23),getdate(),21),’-‘,”),’:’,”),’.’,”),’ ‘,”)))+’.bak’

if object_id(‘tempdb..#backup_recorder’) is not nulldrop table #backup_recorderCREATE TABLE #backup_recorder (backup_datetime datetime not null,backup_name varchar (500) PRIMARY KEY,backup_path varchar (500) NOT NULL ,is_all_backup char(1) not null default 0,file_is_exists char(1) not null default 0)

–检查是否有全备份存在select @CommandText=’dir ‘+@physical_backup_device_name+’全备份*.bak’exec @Return_Int=master..xp_cmdshell @CommandText, no_output

if @Return_Int0 –没有全备份文件存在,进行全备份beginselect @backup_set_full=’全备份 ‘+@database_nameselect @physical_backup_device_namebackup=@physical_backup_device_name+’全备份’+@physical_backup_device_name_now

–全备份,重写媒体头BACKUP DATABASE @database_name to DISK=@physical_backup_device_namebackup WITH FORMAT ,NAME = @backup_set_fullif @@error=0–备份成功,删除当天全备份之前的所有历史备份文件begin–写备份日志insert into backup_recorder(backup_datetime,backup_name,backup_path,is_all_backup,file_is_exists)values(getdate(),@physical_backup_device_name_now,@physical_backup_device_namebackup,’1′,’1′)insert into #backup_recorder(backup_datetime,backup_name,backup_path,is_all_backup,file_is_exists)select backup_datetime,backup_name,backup_path,is_all_backup,file_is_existsfrom backup_recorderwhere backup_name@physical_backup_device_name_now and is_all_backup=’1′ and file_is_exists=’1’endendelsebegin–有全备份,验证全备份是否为上一天得指定时间之后–select @all_backup_datetime=REPLACE(REPLACE(@all_backup_datetime,’:’,”),’.’,”)if right(left(right(@physical_backup_device_name_now,21),17),9) between REPLACE(REPLACE(@all_backup_datetime,’:’,”),’.’,”) and REPLACE(REPLACE(substring(convert(char(23),dateadd(hh,@IntDistance,@all_backup_datetime),21),12,12),’:’,”),’.’,”)–进行全备份beginselect @backup_set_full=’全备份 ‘+@database_nameselect @physical_backup_device_namebackup=@physical_backup_device_name+’全备份’+@physical_backup_device_name_now–全备份,重写媒体头BACKUP DATABASE @database_name to DISK=@physical_backup_device_namebackup WITH FORMAT ,NAME = @backup_set_fullif @@error=0–备份成功begin–写备份日志insert into backup_recorder(backup_datetime,backup_name,backup_path,is_all_backup,file_is_exists)values(getdate(),@physical_backup_device_name_now,@physical_backup_device_namebackup,’1′,’1′)–查找历史备份文件insert into #backup_recorder(backup_datetime,backup_name,backup_path,is_all_backup,file_is_exists)select backup_datetime,backup_name,backup_path,is_all_backup,file_is_existsfrom backup_recorderwhere backup_name@physical_backup_device_name_now and is_all_backup=’1’ and file_is_exists=’1’endendelse–当前备份时间小于指定的全备份时间,进行差异备份begin

select @backup_set_full=’增量备份 ‘+@database_nameselect @physical_backup_device_namebackup=@physical_backup_device_name+’差异备份’+@physical_backup_device_name_now–差异备份,追加媒体BACKUP DATABASE @database_name to DISK=@physical_backup_device_namebackup WITH NOINIT , DIFFERENTIAL,NAME = @backup_setif @@error=0–备份成功begin–写备份日志insert into backup_recorder(backup_datetime,backup_name,backup_path,is_all_backup,file_is_exists)values(getdate(),@physical_backup_device_name_now,@physical_backup_device_namebackup,’0′,’1′)–查找历史备份文件insert into #backup_recorder(backup_datetime,backup_name,backup_path,is_all_backup,file_is_exists)select backup_datetime,backup_name,backup_path,is_all_backup,file_is_existsfrom backup_recorderwhere backup_name@physical_backup_device_name_now and is_all_backup=’0’ and file_is_exists=’1’endendend

DECLARE DelFilePathName CURSOR FORWARD_ONLY FOR select backup_path From #backup_recorder OPEN DelFilePathNameFETCH NEXT FROM DelFilePathName into @DelFilePathNameWHILE @@FETCH_STATUS = 0beginif exists(select *from backup_recorder where backup_path=@DelFilePathName and backup_name@physical_backup_device_name_now)beginselect @CommandText=’del ‘+@DelFilePathNameexecute @Return_Int=master..xp_cmdshell @CommandText–,no_outputif @Return_Int=0 beginupdate backup_recorder set file_is_exists=0 where backup_path=@DelFilePathNameendendFETCH NEXT FROM DelFilePathName into @DelFilePathNameendCLOSE DelFilePathNameDEALLOCATE DelFilePathName

if object_id(‘tempdb..#backup_recorder’) is not nulldrop table #backup_recorder

if left(@physical_backup_device_name,2)=” and ltrim(rtrim(@UserName))” and ltrim(rtrim(@Password))”beginselect @CommandText=’net share ‘+@physical_backup_device_name+’ /delete’exec master..xp_cmdshell @CommandText,no_outputend

以上就是数据库远程全备份的一种解决方案的内容,更多相关文章请关注PHP中文网(www.php.cn)!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/803962.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月26日 19:08:15
下一篇 2025年11月26日 19:22:47

相关推荐

  • 稳定币的发行机制是怎样的?

    稳定币看行情交易平台: 欧易OKX: Binance币安: 火币Huobi: Gateio芝麻开门: 稳定币主要通过锚定特定资产或依靠算法来维持价值稳定,常见的发行机制有法币抵押、加密资产抵押和算法控制三种。具体如下: 法币抵押型:以美元等法币为储备,发行方每发行 1 枚稳定币,需在银行或其他金融机…

    好文分享 2025年12月8日
    000
  • 币库交易所官网地址 coinbase交易所平台地址

    欢迎来到币库交易所(coinbase)。 coinbase 是美国最大的加密货币交易所之一,主要面向全球用户提供比特币(btc)、以太坊(eth)等数字货币的交易服务。作为一个全球知名的数字资产交易平台,coinbase为用户提供安全、便捷的加密货币交易和存储服务。本教程旨在详细指导您完成币库交易所…

    2025年12月8日
    000
  • 狗狗币为什么被称为“ meme 币”?有什么故事?

    binance币安交易所 注册入口: APP下载: 欧易OKX交易所 注册入口: APP下载: 火币交易所: 注册入口: APP下载: 狗狗币,这个在加密货币世界中独树一帜的存在,常常被冠以“ meme 币”的称号。与许多追求尖端技术或解决实际问题的加密货币不同,狗狗币的起源和发展与一种特定的互联网…

    2025年12月8日
    000
  • 欧易okx交易所APP最新版 欧易okx官方正版v6.126.1

    欢迎使用欧易okx交易所app,这是一个领先的数字资产交易平台,致力于为全球用户提供安全、专业、便捷的数字资产交易及管理服务。平台支持多种数字货币的交易,并提供丰富的金融衍生品。本文将为您提供欧易okx交易所app的官方正版下载链接,确保您下载到安全可靠的应用版本。 欧易官网直达: 欧易官方app:…

    2025年12月8日
    000
  • 怎么下载欧意交易所 欧意使用教程

    在%ignore_a_1%日益普及的今天,选择一个安全、便捷、功能强大的交易平台至关重要。欧意交易所(okx)作为全球领先的数字资产交易平台之一,凭借其丰富的交易品种、强大的安全保障和流畅的用户体验,吸引了众多投资者的目光。本教程将详细介绍如何下载欧意交易所,并提供全面的使用指南,帮助您快速上手,安…

    2025年12月8日
    000
  • 币安正版交易所入口 Binance官网在线登录链接

    %ignore_a_1%,作为全球领先的加密货币交易平台,以其丰富的交易品种、强大的安全性以及便捷的用户体验赢得了全球用户的广泛认可。它不仅仅是一个简单的交易平台,更是一个集现货交易、合约交易、Launchpad、DeFi挖 矿等多种功能于一体的综合性数字资产服务生态系统。对于想要进入这个充满机遇的…

    2025年12月8日
    000
  • 币安的USDT怎么提现?TRC20和ERC20手续费差多少?

    币安 USDT 提现时,TRC20 网络手续费低于 ERC20。为确保安全高效提现,需先完成 KYC 验证、绑定正确地址,并了解 TRC20 基于波场、手续费低,ERC20 基于以太坊、手续费较高;操作步骤包括登录账户、进入资金页面、选择现货账户、点击 USDT 提现、正确选择网络类型(务必与接收地…

    2025年12月8日 好文分享
    000
  • 2025binance官网入口在哪?Binance官方下载入口介绍

    币安Binance%ignore_a_1%: 币安app官方下载: Binance,作为全球领先的加密货币交易平台,凭借其强大的技术支持和广泛的用户基础,赢得了众多投资者的青睐。无论是新手还是专业交易者,都可以通过Binance平台进行各种加密货币的交易、存储和管理。随着加密货币市场的不断发展和变化…

    2025年12月7日
    000
  • AO3镜像站备用镜像网址_AO3镜像站快速访问官网

    AO3镜像站备用网址包括ao3mirror.com和xiaozhan.icu,当主站archiveofourown.org无法访问时可切换使用,二者均同步更新内容并支持多语言检索与离线下载功能。 AO3镜像站备用镜像网址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来AO3镜像站快速访问官…

    2025年12月6日 软件教程
    200
  • Pboot插件缓存机制的详细解析_Pboot插件缓存清理的命令操作

    插件功能异常或页面显示陈旧内容可能是缓存未更新所致。PbootCMS通过/runtime/cache/与/runtime/temp/目录缓存插件配置、模板解析结果和数据库查询数据,提升性能但影响调试。解决方法包括:1. 手动删除上述目录下所有文件;2. 后台进入“系统工具”-“缓存管理”,勾选插件、…

    2025年12月6日 软件教程
    400
  • Word2013如何插入SmartArt图形_Word2013SmartArt插入的视觉表达

    答案:可通过四种方法在Word 2013中插入SmartArt图形。一、使用“插入”选项卡中的“SmartArt”按钮,选择所需类型并插入;二、从快速样式库中选择常用模板如组织结构图直接应用;三、复制已有SmartArt图形到目标文档后调整内容与格式;四、将带项目符号的文本选中后右键转换为Smart…

    2025年12月6日 软件教程
    100
  • 怎样用免费工具美化PPT_免费美化PPT的实用方法分享

    利用KIMI智能助手可免费将PPT美化为科技感风格,但需核对文字准确性;2. 天工AI擅长优化内容结构,提升逻辑性,适合高质量内容需求;3. SlidesAI支持语音输入与自动排版,操作便捷,利于紧急场景;4. Prezo提供多种模板,自动生成图文并茂幻灯片,适合学生与初创团队。 如果您有一份内容完…

    2025年12月6日 软件教程
    100
  • word表格怎么调整行高_word表格行高调整的具体操作

    手动拖动可快速调整单行行高;2. 通过表格属性精确设置指定高度,选择固定值或最小值模式;3. 全选表格批量统一行高;4. 设为自动或最小值使行高随内容自适应,确保文字显示完整。 在使用Word制作表格时,调整行高是常见的排版需求。合理的行高能让表格内容更清晰易读。下面介绍几种常用的调整Word表格行…

    2025年12月6日 软件教程
    000
  • Linux journalctl与systemctl status结合分析

    先看 systemctl status 确认服务状态,再用 journalctl 查看详细日志。例如 nginx 启动失败时,systemctl status 显示 Active: failed,journalctl -u nginx 发现端口 80 被占用,结合两者可快速定位问题根源。 在 Lin…

    2025年12月6日 运维
    100
  • Pboot插件数据库连接的配置教程_Pboot插件数据库备份的自动化脚本

    首先配置PbootCMS数据库连接参数,确保插件正常访问;接着创建auto_backup.php脚本实现备份功能;然后通过Windows任务计划程序或Linux Cron定时执行该脚本,完成自动化备份流程。 如果您正在开发或维护一个基于PbootCMS的网站,并希望实现插件对数据库的连接配置以及自动…

    2025年12月6日 软件教程
    000
  • Linux命令行中wc命令的实用技巧

    wc命令可统计文件的行数、单词数、字符数和字节数,常用-l统计行数,如wc -l /etc/passwd查看用户数量;结合grep可分析日志,如grep “error” logfile.txt | wc -l统计错误行数;-w统计单词数,-m统计字符数(含空格换行),-c统计…

    2025年12月6日 运维
    000
  • 今日头条官方主页入口 今日头条平台直达网址官方链接

    今日头条官方主页入口是www.toutiao.com,该平台通过个性化信息流推送图文、短视频等内容,具备分类导航、便捷搜索及跨设备同步功能。 今日头条官方主页入口在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来今日头条平台直达网址官方链接,感兴趣的网友一起随小编来瞧瞧吧! www.tout…

    2025年12月6日 软件教程
    100
  • 「世纪传奇刀片新篇」飞利浦影音双11声宴开启

    百年声学基因碰撞前沿科技,一场有关声音美学与设计美学的影音狂欢已悄然引爆2025“双十一”! 当绝大多数影音数码品牌还在价格战中挣扎时,飞利浦影音已然开启了一场跨越百年的“声”活革命。作为拥有深厚技术底蕴的音频巨头,飞利浦影音及配件此次“双十一”精准聚焦“传承经典”与“设计美学”两大核心,为热爱生活…

    2025年12月6日 行业动态
    000
  • 环境搭建docker环境下如何快速部署mysql集群

    使用Docker Compose部署MySQL主从集群,通过配置文件设置server-id和binlog,编写docker-compose.yml定义主从服务并组网,启动后创建复制用户并配置主从连接,最后验证数据同步是否正常。 在Docker环境下快速部署MySQL集群,关键在于合理使用Docker…

    2025年12月6日 数据库
    000
  • 微信如何开启翻译功能_微信翻译功能的语言切换

    首先开启微信翻译功能,长按外文消息选择翻译并设置“始终翻译此人消息”;接着在“我-设置-通用-多语言”中切换目标语言以优化翻译方向;若效果不佳,可复制内容至第三方工具如Google翻译进行高精度处理。 如果您在使用微信与不同语言的联系人沟通时,发现聊天内容无法理解,则可能是未开启微信内置的翻译功能或…

    2025年12月6日 软件教程
    000

发表回复

登录后才能评论
关注微信