数据库日常维护常用的脚本概述及部分测试

前端之家收集整理的这篇文章主要介绍了数据库日常维护常用的脚本概述及部分测试前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

有些数据库语句可能平时用得不多,所以使用的时候总是难免上网查询,略嫌麻烦,今日在CSDN论坛看到有贴收录这些语句,就顺手牵羊copy了一份,本想copy了就结束了,但和部分朋友一样,真正用到它们的时候有时会发现难免会出错,于是,择日不如撞日,就在今天花点时间在sql SERVER 2008中运行试试。之前并没怎么注意sql2008的语法与之前版本的不同,因为常用的select等语句都一样,一直以为2008应该与2005的版本几乎无差。不料这一试,果然试出了问题,这才发现,以前从书本上见过的backup语句和dump语句已经在2008里面消失了…… 废话不多说,把收录的语句及备注贴上来,便于以后查询使用~~ 1、 数据库备份操作: @H_502_1@

代码如下:
502_1@declare @sql varchar(8000) @H_502_1@set @sql='backup database smallerp to disk=''d:\'+RTRIM(CONVERT(varchar,getdate(),112))+'.bak''' @H_502_1@exec(@sql); @H_502_1@
@H_502_1@(备注:引号不可缺少任意一个,否则会报错) @H_502_1@2、 删除5天前的备份文件: @H_502_1@
代码如下:
502_1@declare @sql varchar(8000) @H_502_1@set @sql='del d:\'+RTRIM(CONVERT(varchar,getdate()-5,112))+'.bak''' @H_502_1@exec master..xp_cmdshell @sql; @H_502_1@
@H_502_1@(备注:xp_cndshell默认该组件会被阻止,需要先启用它才可正常操作:使用如下语句将其启用EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE;) @H_502_1@3、 收缩数据库语句: @H_502_1@
代码如下:
502_1@dump transaction smallerp with no_log; @H_502_1@
@H_502_1@(备注:这句话中会提示transaction附近有语法错误,原来在sql2008中已经不再使用此法来收缩数据库了。而使用:alter,使用方法如下: @H_502_1@
代码如下:
502_1@alter database smallerp set recovery simple @H_502_1@dbcc shrinkdatabase(smallerp,0);) @H_502_1@backup log smallerp with no_log; @H_502_1@
@H_502_1@(备注:这句话执行的时候会报错:此语句不支持一个或多个选项(no_log),原因也是因为sql2008已经不再支持这种写法了。) @H_502_1@4、 查看数据库里活动用户和进程信息: @H_502_1@
代码如下:
502_1@sp_who 'active'; @H_502_1@
@H_502_1@(备注:如果只是这么写的话会提示sp_who附近有语法错误,但执行的时候可以查到数据,如果在前面加一个exec,则不再提示错误。且1—50的进程号 @H_502_1@为sql SERVER系统内部用的,只有大于50的进程号才是用户的连接进程。spid是进程号,dbid是数据库编号,objid是数据对象编号) @H_502_1@5、 查看数据库用户和进程信息: @H_502_1@
代码如下:
502_1@Exec sp_who; @H_502_1@
@H_502_1@6、 查看数据库里的锁情况: @H_502_1@
代码如下:
502_1@Exec sp_lock; @H_502_1@
@H_502_1@7、 分析sql SERVER里sql语句的方法: @H_502_1@
代码如下:
502_1@set statistics time {on | off}(写语句的时候只需要写明是on或者off即可) @H_502_1@set statistics io {on | off} @H_502_1@
@H_502_1@8、 文本方式显示查询执行计划: @H_502_1@
代码如下:
502_1@set showplan_all {on | off} @H_502_1@set showplan_text { on | off } @H_502_1@set statistics profile { on | off } @H_502_1@
@H_502_1@9、 差异备份: @H_502_1@
代码如下:
502_1@declare @str varchar(100) @H_502_1@set @str='D:\'+replace(replace(replace(convert(varchar,20),'-',''),' ',':','')+'.diff' @H_502_1@BACKUP DATABASE smallerp TO DISK=@str @H_502_1@WITH DIFFERENTIAL,RETAINDAYS=8,NOFORMAT,NOINIT,@H_502_1@NAME=N'Demo差异备份',SKIP,NOREWIND,@H_502_1@NOUNLOAD,STATS=10 @H_502_1@GO @H_502_1@
@H_502_1@10、 删除过期的备份文件,并设定每天两次: @H_502_1@
代码如下:
502_1@declare @str varchar(100),@dir varchar(100),@fileName varchar(30) @H_502_1@set @dir='del D:\ ' @H_502_1@set @filename=left(replace(replace(replace(convert(varchar,getdate()-15,8) @H_502_1@set @str=@dir+'fullbak'+@filename+'*.bak' @H_502_1@exec xp_cmdshell @str @H_502_1@set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,8) @H_502_1@set @str=@dir+'diffbak'+@filename+'*.diff' @H_502_1@exec xp_cmdshell @str @H_502_1@set @filename=left(replace(replace(replace(convert(varchar,8) @H_502_1@set @str=@dir+'logbak'+@filename+'*.trn' @H_502_1@exec xp_cmdshell @str @H_502_1@
@H_502_1@先这些吧,貌似一般不用又相对比较常用~

猜你在找的MsSQL相关文章