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

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

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

时间: 2024-09-21 11:24:03

数据库日常维护常用的脚本概述及部分测试_mssql2008的相关文章

sybase数据库日常维护

数据库日常维护工作是系统管理员的重要职责.其内容主要包括以下几个部分:一.备份系统数据SYBASE 系统的备份与恢复机制保证了在系统失败时重新获取数据的可能性.SQL Server 提供了两种不同类型的恢复机制:一类是系统自动完成的恢复,这种措施在每次系统启动时都自动进行,保证了在系统瘫痪前完成的事务都写到数据库设备上,而未完成的事务都被回退:另一类是人工完成的恢复,这是通过 DUMP 和 LOAD 命令来执行人工备份和恢复工作.因此定期备份事务日志和数据库是一项十分重要的日常维护工作. 1.备

ORACLE数据库日常维护知识点总结_oracle

首先要说的是,不同版本数据库提供的系统表会有不同,你可以根据数据字典查看该版本数据库所提供的表 like this: select * from dict where table_name like '%SESSION% '; 就可以查出一些表,然后根据这些表就可以获得会话信息. 像这样就是 查询当前正在操作的会话: SELECT SID, SERIAL#, STATUS, USERNAME, SCHEMANAME, OSUSER,TERMINAL, MACHINE, PROGRAM, A.NA

Oracle DBA数据库日常维护完全手册

在Oracle数据库运行期间,DBA应该对数据库的运行日志及表空间的使用情况进行监控,及早发现数据库中存在的问题. 一.Oracle警告日志文件监控 Oracle在运行过程中,会在警告日志文件(alert_SID.log)中记录数据库的一些运行情况: ●数据库的启动.关闭,启动时的非缺省参数: ●数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点(checkpoint)操作没有执行完成造成不能切换,会记录不能切换的原因: ●对数据库进行的某些操作,如创建或删除表空间.增加数据文件:

nginx日常维护常用命令_nginx

一.简明nginx常用命令 1. 启动 Nginx 复制代码 代码如下: poechant@ubuntu:sudo ./sbin/nginx 2. 停止 Nginx 复制代码 代码如下: poechant@ubuntu:sudo ./sbin/nginx -s stoppoechant@ubuntu:sudo ./sbin/nginx -s quit -s都是采用向 Nginx 发送信号的方式. 3. Nginx 重载配置 复制代码 代码如下: poechant@ubuntu:sudo ./sb

sql 2008数据库日常维护脚本记录

今天花点时间在SQL SERVER 2008中运行试试.之前并没怎么注意SQL2008的语法与之前版本的不同,因为常用的select等语句都一样,一直以为2008应该与2005的版本几乎无差.不料这一试,果然试出了问题,这才发现,以前从书本上见过的backup语句和dump语句已经在2008里面消失了--       废话不多说,把收录的语句及备注贴上来,便于以后查询使用~~ 1.  数据库教程备份操作: declare @sql varchar(8000) set @sql='backup d

Oracle DBA的数据库日常维护知识

DBA要定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源.同时,对一些"挂死"的连接,可能会需要DBA手工进行清理. 首先要说的是,不同版本数据库提供的系统表会有不同,你可以根据数据字典查看该版本数据库所提供的表 like  this: select  *  from  dict  where  table_name  like  '%SESSION% '; 就可以查出一些表,然后根据这些表就可以获得会话信息. 像这样就是 查

Linux日常维护常用命令集合整理

  网络命令: # ifconfig# 显示网络信息,包括IP地址.数据包接收/发送情况 # ifconfig eth0 up# 启动eth0 # vi /etc/sysconfig/network-scripts/ifcfg-eth0 # 更改eth0配置文件 # iwconfig # 显示无线网络信息 # sudo /etc/init.d/network restart | start | stop# 重启网络|启动网络|停止网络 # service network start| servi

Access数据库日常维护方法(优化)_Access

本文适用范围:使用Access作为数据库建设的网站. Access数据库的安全性 1.确保Access数据库不能直接下载,也就是通过http方式无法直接下载您的数据库.如果可以下载,会被黑客利用,盗取您网站上的全部资料. 2.把Access数据库重命名成一个比较复杂的名字,不要使用默认的mdb扩展名,也不要使用asp作为扩展名.建议不用扩展名或使用一个特殊的扩展名,比如kjje4#55.aaa. 数据库大小请勿超过50M 1.经实践总结,当Access数据库超过50M时,网站的整体响应会变得非常

数据库性能优化常用sql脚本总结

  最近闲来无事,正好抽出时间,来总结总结 sql性能优化方面的一下小技巧,小工具.虽然都是些很杂的东西,但是我个人觉得,如果真的清楚了里面的一下指标,或许真的能抵半个DBA. 有些时候,找不到DBA或者根本就没有DBA的时候,程序员就只能靠自己想办法了解决.久而久之,久病成医,说不定就成了半个DBA了. 这里面的一些脚本,有自己总结的,也有网上找的.希望能给程序员在性能优化方面一些帮助.(PS: 这些脚本,都是SQL Server 下的).    1. 当前连接的Session 有多少 SEL