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

所属分类: 数据库 / mssql2008 阅读数: 231
收藏 0 赞 0 分享

有些数据库语句可能平时用得不多,所以使用的时候总是难免上网查询,略嫌麻烦,今日在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

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

更多精彩内容其他人还在看

SQL Server 2008登录错误:无法连接到(local)解决方法

在一些朋友安装完SQL Server 2008之后大多会遇到连接出错的问题比如:SQL Server 2008登录错误:无法连接到(local)等等相关问题,本文将详细介绍解决方法,需要的朋友可以参考下
收藏 0 赞 0 分享

SQL2008 附加数据库提示5120错误解决方法

有些朋友在操作sql2008数据库时会提示5120错误,本文将介绍详细的解决方法,有需要的朋友可以参考下
收藏 0 赞 0 分享

SQL Server储过程加密和解密原理深入分析

在网络上,看到有SQL Server 2000和SQL Server 2005 的存储过程加密和解密的方法,后来分析了其中的代码,发现它们的原理都是一样的;感觉这两个存储过程蛮有意思的,拿来与大家分享,需要了解的朋友可以参考下
收藏 0 赞 0 分享

Excel导入数据库时出现的文本截断问题解决方案

在把Excel导入到数据库中时,发生文本截断问题:即导入的数据每行只有一部分,遇到这样的问题,甚是尴尬,接下来介绍此问题的解决方法,感兴趣的朋友可以了解下,希望本文对你有所帮助
收藏 0 赞 0 分享

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

今天花点时间在SQL SERVER 2008中运行试试常用的数据库维护脚本,结果发现以前从书本上见过的backup语句和dump语句已经在2008里面消失了,感兴趣的你可不要错过了哈,经验之谈啊,希望可以帮助到你
收藏 0 赞 0 分享

sql2008安装后服务器改名造成名称不一致解决方法

查看服务器名是否一致如果不一致,则以serverproperty(servername)为准,接下来介绍详细解决方法,感兴趣的朋友可以参考下,希望可以帮助到你
收藏 0 赞 0 分享

sql2008评估期已过的解决办法及序列号

sql2008评估期已过的解决办法及序列号,有关如何升级您的测试版软件的信息
收藏 0 赞 0 分享

使用Sqlserver事务发布实现数据同步(sql2008)

事务的功能在sqlserver中由来已久,因为最近在做一个数据同步方案,所以有机会再次研究一下它以及快照等,发现还是有很多不错的功能和改进的。这里以sqlserver2008的事务发布功能为例,对发布订阅的方式简要介绍一下操作流程,一方面做个总结备份,一方面与大家进行一下分享和交
收藏 0 赞 0 分享

SQL2008 附加数据库提示 5120错误 解决办法

SQL2008 附加数据库提示 5120错误 解决办法,需要的朋友可以参考一下
收藏 0 赞 0 分享

如何把Excel数据导入到SQL2008数据库的实例方法

最近想练习一下批量插入数据,所以从网上找了一下资料,做了一个怎么把Excel文件数据导入到数据库。
收藏 0 赞 0 分享
查看更多