找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 2961|回复: 3

[数据库知识] 数据库日常维护常用的脚本部分收录

[复制链接]
发表于 2012-7-7 15:35:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
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

发表于 2012-9-3 11:52:39 | 显示全部楼层
看看么还不错
回复 点赞 拍砖

使用道具 举报

发表于 2012-11-10 00:57:14 | 显示全部楼层
还不错,学习一下
回复 点赞 拍砖

使用道具 举报

发表于 2013-12-15 13:30:54 | 显示全部楼层
看着好像不错的样子
回复 点赞 拍砖

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-11-27 17:52 , Processed in 0.041623 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表