数据库日常维护常用的脚本部分收录

运维 数据库运维 SQL Server
之前并没怎么注意SQL2008的语法与之前版本的不同,因为常用的select等语句都一样,一直以为2008应该与2005的版本几乎无差。不料这一试,果然试出了问题,这才发现,以前从书本上见过的backup语句和dump语句已经在2008里面消失了……

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

废话不多说,把收录的语句及备注贴上来,便于以后查询使用~~

1、  数据库备份操作:

  1.   declare @sql varchar(8000)  
  2.   set @sql='backup database smallerp to disk=''d:\'+RTRIM(CONVERT(varchar,getdate(),112))+'.bak'''  
  3.   exec(@sql);
  4. (备注:引号不可缺少任意一个,否则会报错) 

2、  删除5天前的备份文件:

  1.   declare @sql varchar(8000)  
  2.   set @sql='del d:\'+RTRIM(CONVERT(varchar,getdate()-5,112))+'.bak'''  
  3.   exec master..xp_cmdshell @sql;
  4. (备注:xp_cndshell默认该组件会被阻止,需要先启用它才可正常操作:使用如下语句将其启用EXEC sp_configure 'show advanced   options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;) 

3、  收缩数据库语句:

  1. dump  transaction smallerp with no_log;  
  2. (备注:这句话中会提示transaction附近有语法错误,原来在SQL2008中已经不再使用此法来收缩数据库了。而使用:alter,使用方法如下:  
  3. alter database smallerp set recovery simple  
  4. dbcc shrinkdatabase(smallerp,0);)  
  5.  
  6. backup log smallerp with no_log;  
  7. (备注:这句话执行的时候会报错:此语句不支持一个或多个选项(no_log),原因也是因为SQL2008已经不再支持这种写法了。) 

4、  查看数据库里活动用户和进程信息:

  1. sp_who 'active';  
  2. (备注:如果只是这么写的话会提示sp_who附近有语法错误,但执行的时候可以查到数据,如果在前面加一个exec,则不再提示错误。且1—50的进程号  
  3. 为SQL SERVER系统内部用的,只有大于50的进程号才是用户的连接进程。spid是进程号,dbid是数据库编号,objid是数据对象编号) 

5、  查看数据库里用户和进程信息:

  1.   Exec sp_who;  

6、  查看数据库里的锁情况:

  1.   Exec sp_lock; 

7、  分析SQL SERVER里sql语句的方法:

  1.   set statistics time {on | off}(写语句的时候只需要写明是on或者off即可)   
  2.   set statistics io {on | off

8、  文本方式显示查询执行计划:

  1.   set showplan_all {on | off}   
  2.   set showplan_text { on | off }   
  3.   set statistics profile { on | off } 

9、  差异备份:

  1.   declare @str varchar(100)  
  2.   set @str='D:\'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.diff'  
  3.   BACKUP DATABASE smallerp TO DISK=@str  
  4.   WITH DIFFERENTIAL,RETAINDAYS=8,NOFORMAT,NOINIT,  
  5.   NAME=N'Demo差异备份',SKIP,NOREWIND,  
  6.   NOUNLOAD,STATS=10  
  7.   GO 

10、  删除过期的备份文件,并设定每天两次:

  1.   declare @str varchar(100),@dir varchar(100),@fileName varchar(30)  
  2.   set @dir='del D:\ ' 
  3.   set @filename=left(replace(replace(replace(convert(varchar,getdate()-15,20),'-',''),' ',''),':',''),8)  
  4.   set @str=@dir+'fullbak'+@filename+'*.bak' 
  5.   exec xp_cmdshell @str  
  6.   set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),' ',''),':',''),8)  
  7.   set @str=@dir+'diffbak'+@filename+'*.diff' 
  8.   exec xp_cmdshell @str  
  9.   set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),' ',''),':',''),8)  
  10.   set @str=@dir+'logbak'+@filename+'*.trn' 
  11.   exec xp_cmdshell @str 

先这些吧,貌似一般不用又相对比较常用~

原文链接:http://www.cnblogs.com/Jennifer/archive/2011/05/12/2044139.html

 

【编辑推荐】

  1. 深入探究SYBASE数据库日志
  2. Sybase日期函数应用示例
  3. Sybase数据库函数全介绍
  4. Sybase建立索引的原则
  5. Sybase分页显示存储过程
责任编辑:艾婧 来源: 博客园
相关推荐

2011-05-25 09:20:24

Oracle数据库

2009-02-03 13:06:17

日常维护规范MySQL

2011-06-14 15:11:59

ORACLE

2009-01-07 09:46:18

InformixOnline数据库

2010-09-07 16:45:58

DB2数据库

2011-08-18 16:42:04

Oracle数据库维护SQL代码示例

2010-08-04 14:45:12

2011-03-24 16:38:00

Exchange数据库维护

2011-08-01 13:59:22

Oracle数据库命名空间

2021-12-08 09:00:00

数据库Liquibase脚本

2011-04-29 10:21:30

笔记本电池光驱

2022-12-23 07:48:23

多数据库Citus集群

2010-11-29 11:51:59

Sybase数据库维护

2011-05-26 15:53:59

数据库更新维护

2021-07-19 06:44:33

UPS电源蓄电池

2009-12-29 14:58:05

ADSL设备维护

2023-03-22 09:18:53

数据库管理架构

2009-06-18 16:29:00

牛新庄数据库

2020-11-23 16:42:38

数据库MySQL技术

2010-07-09 11:28:12

SQL Server数
点赞
收藏

51CTO技术栈公众号