sqlserver备份的几种方式

5.如果你们机房的防火墙足够流弊,程序代码写的足够严谨,数据库没有公网ip,那你可以使用xp_cmdshell这个存储过程,否则请关闭这个config。

通过脚本 作业的方式备份数据库(用xp_cmdshell)

ps:如果你觉得你们服务器的网络、代码、以及防火墙足够安全可以开启xp_cmdshell的方式来备份,否则慎用

  • 如果数据库没开启xp_cmdshell的功能需要用以下脚本开通此功能,开通以后记得关闭sp_configure。
USE Master
GO
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'xp_cmdshell',1;
GO
RECONFIGURE WITH OVERRIDE;
GO
  • 下边是备份的脚本
DECLARE @DBNAME VARCHAR(128)
DECLARE @PATH VARCHAR(50)
DECLARE @SQL NVARCHAR(MAX)
DECLARE @DDATE VARCHAR(8)

SET @PATH = 'E:BackUp'
SET @DDATE = convert(char(8),getdate(),112)

--删除超过1天的备份
SET @SQL ='xp_cmdshell '' forfiles /p "' @path '" /d -0 /m *.bak /c "cmd /c echo deleting @file.... && del /f @file"'''
EXEC (@SQL)

SET @SQL = ''
SELECT @SQL = @SQL   '
BACKUP DATABASE [' NAME '] TO DISK = ''' @PATH '' REPLACE(name,'.','') @DDATE '.bak '''
FROM master..sysdatabases
WHERE NAME NOT IN ('master','tempdb','model','msdb')
EXEC (@SQL)

4.用powershell调用sqlcmd来执行备份命令。

在master库下边写好备份的存储过程pr_1

然后创建powershell脚本,将下边语句粘贴进去并保存成xx.ps1,在通过Windows的任务调度定时执行备份就可以了(我就是举个例子过期删除备份的语句也可以通过powershel实现,在家没有环境就随便写个思路没写全各位见谅)。

$dbname = 'test'
write-host "------"$dbname
& cmd /c
"sqlcmd -U sa -P 123456  -S 127.0.0.1 -Q `" pr_1 '$dbname'`" "

以上就是常见的几种备份的方法,大家可以根据自己的业务场景来选择适合自己的备份方式。

15.有时候当你新建或者修改一个表或者字段的以后,你执行查询或者写出来新建的字段发现新添加的对象下边有个红线,鼠标放上去会显示列名无效,对于我这种有轻微强迫症的人很难受。造成这个现象的原因是:SQL Server的intellisense,没有感知到这项修改,我们可以手动的执行快捷键ctrl shift r来重新感知。

用sqlserver的维护计划

在这里我就不给截图演示了,这个比较简单,无非就是通过sqlserver自己的维护计划拖拽出2个一个‘备份数据库’任务和一个‘清除维护’任务。

需要注意的点

  1. 有备份任务里边选择备份的库尽量选‘所有用户数据库’这项,以免选择了特定数据库备份以后某天添加了新数据库却忘了勾选导致丢备份。
  2. 选项验证备份集完整性和压缩备份尽量都选上。
  3. 备份的路径尽量别选磁盘根目录。

7.如非特殊需求尽量不要用过ssms跨机器登陆。比如你在192.168.1.3这个服务器上用ssms登陆通过ip账号密码192.168.1.4这台服务器的db,这是没问题的,但是当你使用完以后尽量养成随手关掉这个连接的习惯。否则下一个人或者你自己不注意就会把想在本机上执行的脚本执行到了远端的那个db上。

通过脚本 作业的方式备份数据库(非xp_cmdshell)

DECLARE @filename VARCHAR(500)
DECLARE @date DATETIME
DECLARE @OLD_DATE DATETIME
SET @date=GETDATE()
SET @OLD_DATE=GETDATE()-5 --超过5天的备份即将被删除
SET @FILENAME = 'E:存放位置数据库名称-' CAST(DATEPART(YYYY,@DATE) AS VARCHAR(10)) '-' CAST(DATEPART(MM,@DATE) AS VARCHAR(10)) '-' CAST(DATEPART(DD,@DATE) AS VARCHAR(10)) '.BAK'
#备份数据库
BACKUP DATABASE [数据库名称] TO DISK = @filename WITH COMPRESSION
#删除过期备份
EXECUTE master.dbo.xp_delete_file 0,N'E:存放位置',N'bak',@OLD_DATE,1

  GO

ps:本blog手打原创转载请注明出处。

11.作业监视器只能看到作业最后一次执行的状态。

大过年的脑子里都被各种吃吃喝喝的填满了- -暂时就想起来这么多,以后有想到的再补充,如果有不准确的或者不明白的地方欢迎各位拍砖。

3.profiler是个好东西,谁用谁知道。

4.windows的性能监视器是监控sqlserver性能必备的工具。具体监控指标我会在其他blog里写。

如果把日志文件按照默认的百分比10%增长,同样当db业务量很大或者有大事务的时候,日志会蹭蹭的增长,假如现在日志文件大小是100G,那每次增长步长就是10G,各位可以想一下如果数据库突然像磁盘申请10个G的空间,那当时的io情况会是什么样。

前言:任何的优化和修改都是以业务情况为前提,可能有的写的有误或者不准确的地方,欢迎各位来拍砖。

1.在创建db的时候自增长建议设置成按MB(M)增长,步长根据业务量来设置,一般情况建议设置100-200M,还有就是尽量别改初始大小,这个默认就好。

本文由美洲杯在哪买球发布于计算机教程,转载请注明出处:sqlserver备份的几种方式

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。