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