数据库日常维护常用的脚本概述及部分测试
2023-06-13 09:14:46 时间
有些数据库语句可能平时用得不多,所以使用的时候总是难免上网查询,略嫌麻烦,今日在CSDN论坛看到有贴收录这些语句,就顺手牵羊copy了一份,本想copy了就结束了,但和部分朋友一样,真正用到它们的时候有时会发现难免会出错,于是,择日不如撞日,就在今天花点时间在SQLSERVER2008中运行试试。之前并没怎么注意SQL2008的语法与之前版本的不同,因为常用的select等语句都一样,一直以为2008应该与2005的版本几乎无差。不料这一试,果然试出了问题,这才发现,以前从书本上见过的backup语句和dump语句已经在2008里面消失了……
废话不多说,把收录的语句及备注贴上来,便于以后查询使用~~
1、数据库备份操作:
declare@sqlvarchar(8000)
set@sql="backupdatabasesmallerptodisk=""d:\"+RTRIM(CONVERT(varchar,getdate(),112))+".bak"""
exec(@sql);
(备注:引号不可缺少任意一个,否则会报错)
2、删除5天前的备份文件:
declare@sqlvarchar(8000)
set@sql="deld:\"+RTRIM(CONVERT(varchar,getdate()-5,112))+".bak"""
execmaster..xp_cmdshell@sql;
(备注:xp_cndshell默认该组件会被阻止,需要先启用它才可正常操作:使用如下语句将其启用EXECsp_configure"showadvancedoptions",1;RECONFIGURE;EXECsp_configure"xp_cmdshell",1;RECONFIGURE;)
3、收缩数据库语句:
dumptransactionsmallerpwithno_log;
(备注:这句话中会提示transaction附近有语法错误,原来在SQL2008中已经不再使用此法来收缩数据库了。而使用:alter,使用方法如下:
alterdatabasesmallerpsetrecoverysimple
dbccshrinkdatabase(smallerp,0);)
backuplogsmallerpwithno_log;
(备注:这句话执行的时候会报错:此语句不支持一个或多个选项(no_log),原因也是因为SQL2008已经不再支持这种写法了。)
4、查看数据库里活动用户和进程信息:
sp_who"active";
(备注:如果只是这么写的话会提示sp_who附近有语法错误,但执行的时候可以查到数据,如果在前面加一个exec,则不再提示错误。且1—50的进程号
为SQLSERVER系统内部用的,只有大于50的进程号才是用户的连接进程。spid是进程号,dbid是数据库编号,objid是数据对象编号)
5、查看数据库里用户和进程信息:
Execsp_who;
6、查看数据库里的锁情况:
Execsp_lock;
7、分析SQLSERVER里sql语句的方法:
setstatisticstime{on|off}(写语句的时候只需要写明是on或者off即可)
setstatisticsio{on|off}
8、文本方式显示查询执行计划:
setshowplan_all{on|off}
setshowplan_text{on|off}
setstatisticsprofile{on|off}
9、差异备份:
declare@strvarchar(100)
set@str="D:\"+replace(replace(replace(convert(varchar,getdate(),20),"-",""),"",""),":","")+".diff"
BACKUPDATABASEsmallerpTODISK=@str
WITHDIFFERENTIAL,RETAINDAYS=8,NOFORMAT,NOINIT,
NAME=N"Demo差异备份",SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO
10、删除过期的备份文件,并设定每天两次:
declare@strvarchar(100),@dirvarchar(100),@fileNamevarchar(30)
set@dir="delD:\"
set@filename=left(replace(replace(replace(convert(varchar,getdate()-15,20),"-",""),"",""),":",""),8)
set@str=@dir+"fullbak"+@filename+"*.bak"
execxp_cmdshell@str
set@filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),"-",""),"",""),":",""),8)
set@str=@dir+"diffbak"+@filename+"*.diff"
execxp_cmdshell@str
set@filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),"-",""),"",""),":",""),8)
set@str=@dir+"logbak"+@filename+"*.trn"
execxp_cmdshell@str
先这些吧,貌似一般不用又相对比较常用~
相关文章
- SQL手工注入漏洞测试(MySQL数据库)
- 国产CPU执行SPL实现数据库运算的性能实用性测试
- php pdo测试批量insert into 和单条insert into对比详解数据库
- 查询数据库中所有表的语句详解数据库
- MySQL Variables locked_in_memory 数据库 参数变量解释及正确配置使用
- Oracle数据库Ping测试(oracleping)
- 测试Oracle数据库:利用脚本实现自动化(oracle测试脚本)
- 测试Oracle数据库压力:基于脚本的方法(oracle压力脚本)
- 管理提升MySQL数据库的并发量管理能力(mysql数据库并发量)
- QTP自动化测试框架与Oracle数据库的联动(qtporacle)
- MySQL数据库优化:Mtop管理工具的使用(mysqlmtop)
- Oracle数据库构建:呼唤质量与效率(oracle数据库构成)
- Oracle数据库优化利用关联索引提升性能(oracle关键字加索引)
- 如何改变Redis数据库的名称(怎么改redis数据库名)
- 3399数据库管理之MySQL时代(3399 mysql)
- 情况通过Redis数据库查看用户情况(查看redis数据库用户)
- 尝试用redis命令测试数据库功能(测试redis命令)
- 数据库基于JSP的Oracle数据库功能测试(jsp测试oracle)
- Oracle数据库连接标识符探索之旅(oracle中连接标识符)
- 优化Oracle数据库如何指定使用索引(oracle使用指定索引)
- Oracle SGA容量扩展拓宽在数据库中的应用(oracle sga增大)
- phpadodb连接带密码access数据库实例,测试成功