前言:

管理一个公司的一个服务器,最近有一些维护SQLserver数据库活弄,写下防止忘了.

因为公司采用SQL\Redis\MongoDB共用,SQL用来存储基础的结构\权限\等一些杂七杂八的东西.

Redis用来给自动化系统使用,用来做些不方便在程序里搞的小动作.mongoDB用来存储大量的用户\设备上报和操作信息,数据分析库.

然后老板说了.我们所有的基础都基于SQLserver,这个做下备份.让弄个远程备份.

然后备份了一些日子发现有点大,就弄个删除,删除一下.

懒得看的话直接去最后,拷走用.前面有几个步骤.你得容我扯扯蛋.

1.创建备份文件夹

  • 进入到你的数据库在的服务器.远程网络访问那个共享文件夹,如果可以了第一步就OK了
  • 远程到你想备份的电脑,在你想备份的地方建立一个文件夹,共享读写.

2.开启执行备份语句

  • 现在要开启xp_cmdshell 语句执行,这玩意默认不是开启的,说防止权限提升.你说防止就防止吧.现在需要备份先开启
  • EXEC sp_configure 'show advanced options', 1;
    RECONFIGURE;
    EXEC sp_configure 'xp_cmdshell', 1;
    RECONFIGURE;
  • 开启高级选项 ,开启xp_cmdshell ,如果想看高级选项的内容可以看 exec sp_configure.看看更改的结果.
  • 高级选项一般是不开启的.xp_cmdshell也是不开启的.不要单独这样写.等会把这玩意写到计划作业里面,就是第三步开头.

3.远程备份

  • 建立一个计划作业,在步骤里面写远程访问的命令
  • 用远程账户访问文件夹,然后用xp_cmdshell执行备份命令,切掉访问的用户.
  • 大概的代码写一下

--开启高级选项和shell命令使用

EXEC sp_configure 'show advanced options', 1;
 RECONFIGURE;
 EXEC sp_configure 'xp_cmdshell', 1;
 RECONFIGURE;

--验证用户 
exec master..xp_cmdshell 'net use \\172.200.218.110\188a password /user:172.200.218.110\administrator';
--准备要备份的地址和文件信息
declare @dstart varchar(50);
set @dstart = convert(varchar(100),GetDate(),112);
declare @path varchar(400);
set @path ='\\172.200.218.110\\188a\\12a\testdb'+@dstart+'.bak'
--备份数据库
backup database testdb to disk=@path WITH FORMAT
--断开
exec master..xp_cmdshell'net use \\172.200.218.110\188a /delete'
  • 开启选项的就不说了
  • exec master..xp_cmdshell 'net use 固定语句让你准备开始执行命令, \\172.200.218.110\188a 网络共享地址, password 存备份的电脑的密码, /user: 固定句式,
    172.200.218.110\administrator 存备份域下的用户, 如此就开启了对这个存备份的电脑的文件夹的操作权限.
  • \\172.200.218.110\\188a\\12a\ 这些是存备份的文件夹,然后就是备份的名字了.可以备份多天的.
  • backup database testdb to disk=@path WITH FORMAT 备份数据库 testdb ,到指定的路径和给定的文件名.
  • exec master..xp_cmdshell'net use \\172.200.218.110\188a /delete' 关闭对这个存备份的电脑的文件夹的操作权限.

4.远程删除

  上面开启了多天的备份,或者限时的备份,

  跟设置的计划任务有关,

  远程备份要考虑带宽.我们内部是万兆的网络,数据库又不大.因为我们数据库开启的简单日志模式,

  平时的操作日志太多.删除的也多.自动化好多设备运行的垃圾数据,如果开启完全日志,日志量吓人.所以一天备份一次,耗时3分多,

  但是时间长了也受不了.服务器虽然大也不能可劲造.地主家也没有余粮.所以固定时间的备份删除很有必要

  exec master..xp_delete_file 0,N'\\172.20.218.11\\188a','bak',time

  • 这个玩意要放在用户开启远程访问里面.
  • exec master..xp_delete_file 0 固定句式,老子要删东西了
  • N'\\172.20.218.11\\188a' 要删这个目录下的东西
  • 'bak' 我要删的是这样东西
  • time 这个时间点以前的都删

5.关闭备份语句

前面收开启了高级选项和shell不安全,有权限提升的危险,我们就关了shell和高级选项.

EXEC sp_configure 'xp_cmdshell', 0;
RECONFIGURE;
EXEC sp_configure 'show advanced options', 0;
RECONFIGURE;

总体合起来像这样

--开启高级选项
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE; --验证用户
exec master..xp_cmdshell 'net use \\172.200.218.110\188a password /user:172.200.218.110\administrator';
--准备要备份的地址和文件信息
declare @dstart varchar(50);
set @dstart = convert(varchar(100),GetDate(),112);
declare @path varchar(400);
set @path ='\\172.200.218.110\\188a\testdb'+@dstart+'.bak'
--备份数据库
backup database testdb to disk=@path WITH FORMAT --删除过期数据库
declare @endtime varchar(200)
set @endtime = convert(varchar(100),GetDate()-60,120)
exec master..xp_delete_file 0,N'\\172.20.218.11\\188a','bak',@endtime --断开
exec master..xp_cmdshell'net use \\172.200.218.110\188a /delete' --关闭高级选项
EXEC sp_configure 'xp_cmdshell', 0;
RECONFIGURE;
EXEC sp_configure 'show advanced options', 0;
RECONFIGURE;

大概就这样,我也是用一次,有些代码因为怕泄露公司信息,改了下,不知道能用不,

如果不能用就看个意思

想搞的更多,你可以到官网上.更多功能

sql server 远程备份 bak 删除的更多相关文章

  1. sql server远程备份和恢复

    sql server远程备份和恢复 SQLSERVER服务实例名称:192.168.0.2需要备份的数据库名称: a备份机器名称(Client端):192.168.0.3备份机用户:zf 密码:123 ...

  2. SQL Server 远程备份详解

    例1: 有A数据库服务器,B本机: 我现在想通过在B机器上通过代码调用SQL来执行A数据库的备份到B机器上 调用的SQL语句为:Backup Database MYDATABASE To Disk=' ...

  3. SQL Server 远程备份数据库

    在一些涉及到数据库的项目中,经常会有定时备份数据库的需要.定时备份到本机的话,还是挺容易的,计划任务就可以完成,但如果是整机挂了,那备份到本机是没意义的,那么就需要来考虑备份到局域网中,其它电脑里. ...

  4. SQL SERVER 远程备份DB

    --检查sqlserver所在服务的运行账号是否有权限访问共享文件夹,没有的话右键添加写权限 --开启权限sp_configure 'show advanced options', 1;gorecon ...

  5. SQL Server远程数据库操作(备份、还原等)

    · SQL Server远程数据库备份到本地: exp sauser/sapassword@192.168.8.233:1433/DBName file=d:/backup.dmp OWNER=sum ...

  6. SQL Server数据库 备份A库,然后删除A库,再还原A库,此时数据库一直显示“正在还原”的解决方法

    SQL Server数据库 备份A库,然后删除A库,再还原A库,此时数据库一直显示"正在还原"的解决方法: A库一直显示"正在还原". 在这种状态下,由于未提交 ...

  7. SQL SERVER 数据库备份的三种策略及语句

    1.全量数据备份    备份整个数据库,恢复时恢复所有.优点是简单,缺点是数据量太大,非常耗时 全数据库备份因为容易实施,被许多系统优先采用.在一天或一周中预定的时间进行全数据库备份使你不用动什么脑筋 ...

  8. SQL Server的备份

    原文:SQL Server的备份 0.参考文献 1.恢复模式 SQL Server 备份和还原操作发生在数据库的恢复模式的上下文中. 恢复模式旨在控制事务日志维护. “恢复模式”是一种数据库属性,它控 ...

  9. SQL 怎样 远程备份数据库到本地

    SQL 怎样 远程备份数据库到本地 --1.启用xp_cmdshell USE master EXEC sp_configure 'show advanced options', 1 RECONFIG ...

随机推荐

  1. 【C#】浅克隆和深克隆的区别和在C#中的体现形式

    前言:我们知道对象分引用类型和值类型. 浅克隆:复制一个现有对象,引用类型指向同一个内存块(string为最特殊的对象,这里当作值类型来看先) public class User { public i ...

  2. React + Python 七月小说网 启程(一)

    一.为啥要做这个网站 很久没有写技术相关的博客了,最近几个月忙飞,各种工作,技术根本学不完,很难受. 趁着春节期间,终于有空闲时间做自己爱做的事情了,美滋滋. 热爱技术,热爱小说,于是诞生了个这么玩意 ...

  3. 客户端 post ,get 访问服务器

    private void sendReuestExpansion() { HttpRequest<T> req = this; HttpWebRequest request; try { ...

  4. Http报头中不能添加中文字符

    今逢一Bug,如下: Invalid non-ASCII or control character in header: 0x6D4B 大意为:报头中有非法字符.故可将其编码后,set入Header, ...

  5. session的获取

    Springmvc: RequestAttributes ra = RequestContextHolder.getRequestAttributes(); HttpServletRequest re ...

  6. 数据结构之BF算法,kmp算法,三元组,十字链表总结

    在这一章中,老师教了我们四种数据结构:BF算法,kmp算法,三元组和十字链表:还给我们讲了2019年团体天体赛中T1-8的AI题 1.对于BF和kmp算法,老师除了在课堂上讲解算法的主要核心思想外,还 ...

  7. Python爬虫:带参url的拼接

    如果连接直接这样写,看上去很直观,不过参数替换不是很方便,而且看着不舒服 https://www.mysite.com/?sortField=%E4%BA%BA%E5%B7%A5%E6%99%BA%E ...

  8. query flot 直方图上显示对应的y值

    方法1:使用在图上加 相对定位的 div 提示对应的直方图数量. 具体实现:获取直方图上所有的点,得到y值和对应的坐标位置,插入相对div 主要js代码:plot 为对应的图对象 //初始化柱状图数据 ...

  9. 条目四《用empty来代替检查size()是否为0》

    条目四<用empty来代替检查size()是否为0> 首先先说结论: empty()实现为内联函数.(众所周知, 优秀的内联函数的效率比一般函数是高的) 在stl标准库中,empty()对 ...

  10. bzoj1004 [HNOI2008]Cards Burnside定理+背包

    题目传送门 思路:首先是Burnside引理,要先学会这个博客. Burnside引理我们总结一下,就是 每种置换下不动点的数量之和除以置换的总数,得到染色方案的数量.        这道题,显然每种 ...