`
caozuiba
  • 浏览: 903604 次
文章分类
社区版块
存档分类
最新评论

整理的几个常用的数据库维护的脚本

 
阅读更多
<iframe marginwidth="0" marginheight="0" src="http://218.16.120.35:65001/PC/Global/images/b.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>

/*********************************************************************************
* FielName : backup.sql
* Function : 自动备份
* Date : 2005-5-10 2005-5-19 2006-8-1 2007-09-18
* Version : 00 01 02 03
*
* Remark :
* 2006-08-01 增加差异备份和完全备份两种情况,生成多个备份副本
* 2008-09-18 增加备份一个实例中的所有数据库的情况,并在备份后清除日志
*
*********************************************************************************/

use master

declare @DbName varchar(255),@dir varchar(256),@dir_db varchar(256),

@verb varchar(256),@cmd varchar(256),

@backup_name varchar(256),@dynamic_name varchar(10),

@disk_name varchar(256),@copy nvarchar(100),

@today datetime,@weekday int

--建立网络连接
exec xp_cmdshell 'net use K: /delete'
exec xp_cmdshell 'net use I: /delete'

exec xp_cmdshell 'net use K: //193.254.40.118/backup backup /user:Web/backup '
exec xp_cmdshell 'net use I: //172.16.8.48/databackup backup /user:QA-SERVER-TEST/backup'

--设定名字
set @today=getdate()
set @dynamic_name=convert(varchar(10),@today,120)

set @dir='K:/'+@dynamic_name
set @dir_db=@dir+'Database'
set @verb='mkdir '

--建立目录
set @cmd=@verb+@dir_db
exec xp_cmdshell @cmd

declare cur_database cursor forward_only read_only for
select name from sysdatabases
where dbid>4 --系统数据库的dbid<=4

open cur_database

fetch next from cur_database
into @DbName

while @@fetch_status=0
begin

set @backup_name= @DbName+'_'+@dynamic_name

set @disk_name=@dir_db+'/'+@backup_name+'.bak'

--添加备份设备

EXEC sp_addumpdevice 'disk',@backup_name, @disk_name

set @weekday= datepart(dw,@today)

if (@weekday=6) --如果是周五,则进行完全备份

BACKUP DATABASE @DbName TO @backup_name

else --其他时候进行差异备份

BACKUP DATABASE @DbName TO @backup_name with differential

--清理日志

backup log @DbName with no_log

--释放设备

exec sp_dropdevice @backup_name

--复制备份副本到其他地方

set @copy='copy '+@disk_name+' I:'

exec xp_cmdshell @copy

--备份下一个数据库

fetch next from cur_database

into @DbName
end
close cur_database
deallocate cur_database

--删除网络连接
exec xp_cmdshell 'net use K: /delete'
exec xp_cmdshell 'net use I: /delete'

/******************************************************************************
*
* File Name : Restore.sql
* Function : 数据库还原
* Version : 00
* Date : 2007-09-18
* Remark :
*
*******************************************************************************/

use master

declare

@DbName varchar(255) --数据库的名字

,@WholeFileName varchar(255) --完全备份的文件名

,@DifferentFileName varchar(255) --差异备份的文件名

,@MasterFileName varchar(255) --数据文件名,注意他们都是逻辑名称

,@LogFileName varchar(255) --日志文件名

,@TargetDir varchar(255) --还原后数据库文件所在的路径,如果没有指定该参数,

--则必须存在与原数据库相同的路径

declare @WholeDeviceName varchar(255)

,@DifferenctDeviceName varchar(255)

,@TargetMasterFileName varchar(255)

,@TargetLogFileName varchar(255)

--建立网络链接
exec xp_cmdshell 'net use K: //172.16.8.48/200709 backup /User:qa-server-test/backup'

--在这里设置需要备份的文件等信息
set @DbName='CCTQA' --需要还原的数据库的名字,注意不要搞错了,否则

--覆盖了其他的数据库,可别说我没有提醒你
set @WholeFileName='CCTQA_2007-09-14.bak' --完全备份文件

--以下4行如果没有,不要指定,把他们注释掉就行了
set @DifferentFileName='CCTQA_2007-09-17.bak' --最后一次差异备份文件
set @MasterFileName='CCTQA_Data' --数据文件
set @LogFileName='CCTQA_Log' --日志文件
set @TargetDir='D:/CCTQA/Databae' --目标路径

--设置目标路径
set @TargetMasterFileName=@TargetDir+'/'+@MasterFileName
set @TargetLogFileName=@TargetDir+'/'+@LogFileName

--添加还原设备
set @WholeDeviceName=@DbName+'WholeDevice'
set @WholeFileName='K:/'+@WholeFileName
exec sp_addumpdevice 'disk',@WholeDeviceName,@WholeFileName

--开始备份
if(isnull(@DifferentFileName,'')<>'') --如果具有差异备份的还原
begin

--添加差异备份还原的设备

set @DifferenctDeviceName=@DbName+'DifferenctDevice'

set @DifferentFileName='K:/'+@DifferentFileName

exec sp_addumpdevice 'disk',@DifferenctDeviceName,@DifferentFileName

--备份

if(isnull(@TargetDir,'')='')

restore database @DbName from @WholeDeviceName

with NORECOVERY

else --如果还原后的数据库文件的路径与备份前的路径不一致

restore database @DbName from @WholeDeviceName

with NORECOVERY,

move @MasterFileName to @TargetMasterFileName,

move @LogFileName to @TargetLogFileName

restore database @DbName from @DifferenctDeviceName
end
else
begin --只有完全备份的还原

if(isnull(@TargetDir,'')='')

restore database @DbName from @WholeFileName

else

restore database @DbName from @WholeFileName

with move @MasterFileName to @TargetMasterFileName,

move @LogFileName to @TargetLogFileName
end

--释放备份设备
exec sp_dropdevice @WholeDeviceName
if(isnull(@DifferentFileName,'')<>'')

exec sp_dropdevice @DifferenctDeviceName

--删除网络链接
exec xp_cmdshell 'net use K: /delete'

/************************************************************************
*
* File Name : ShrinkLog.sql
* Function : 收缩数据库的日志文件
* Version : 00
* Date : 2007-09-16
* Remark :
*
*************************************************************************/

--
--第一步:设置需要收缩的数据库,找到需要收缩数据文件
--

use cctqa
select Size/128 Size,Name from sysfiles

/*
declare @LogName varchar(255),@TargetSize int

--
--
--第二步:设置需要收缩的日志文件的逻辑名字和收缩后的大小
--千万不要搞错了,选错了文件,有可能会丢失数据,那时候
--哭都哭不回来了。
--
--

set @LogName='CCTQA_Log'
set @TargetSize=1

declare @str varchar(300), @DatabaseName varchar(255)
set @DatabaseName=db_name()

if(not exists(select * from sysfiles where name=@LogName))
begin

set @str='没有找到日志文件'+@LogName

raiserror(@str,0,1)
end else
begin

declare @curSize int,@maxTime int

set @maxTime=10

set @curSize=(select size from sysfiles where name=@LogName)/128

print '收缩之前的日志文件的大小是:'+cast(@curSize as varchar(10))+'MB'

while (@curSize>@TargetSize) and (@maxTime>0)

begin

backup log @DatabaseName with no_log

DBCC SHRINKFILE(@LogName,@TargetSize)

set @curSize=(select size from sysfiles where name=@LogName)/128

set @maxTime=@maxTime-1

end

set @curSize=(select size from sysfiles where name=@LogName)/128

print '收缩之后的日志文件的大小是:'+cast(@curSize as varchar(10))+'MB'
end
*/

分享到:
评论

相关推荐

    Oracle数据库学习指南

    45.使用Database Configuration Assistant安装第二个数据库 46.Oracle 数据库向 MS SQL Server 7.0 的迁移 Oracle1: 1. Decode()函数使用技巧(NT+IIS+ASP+ORACLE) 2. Dual伪列 3. EXP、IMP 命令详解 4. ...

    数据库系统课程设计报告.doc

    3 设计内容 数据库设计:12张表 PB设计:30个窗口,12个数据窗口,一个菜单窗口,体现12个表格之间的关系,通过 对脚本的撰写,在窗口中表现出来 4 应用范围 本系统适用于医药单位对于货物的进销存以及管理员进行...

    X-Scan v3.1

    支持插件功能,提供了图形界面和命令行两种操作方式,扫描内容包括:远程服务类型、操作系统类型及版本,各种弱口令漏洞、后门、应用服务漏洞、网络设备漏洞、拒绝服务漏洞等二十几个大类。对于多数已知漏洞,我们给...

    X-Scan

    支持插件功能,提供了图形界面和命令行两种操作方式,扫描内容包括:远程服务类型、操作系统类型及版本,各种弱口令漏洞、后门、应用服务漏洞、网络设备漏洞、拒绝服务漏洞等二十几个大类。对于多数已知漏洞,我们给...

    asp.net知识库

    通过作业,定时同步两个数据库 SQLSERVER高级注入技巧 利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的内容是否合法 asp.net报表解决方法 SQLDMO类的使用 SQL过程自动C#封装,支持从表到...

    PHP和MySQL Web开发第4版pdf以及源码

    2.10.1 使用普通文件的几个问题 2.10.2 RDBMS是如何解决这些问题的 2.11 进一步学习 2.12 下一章 第3章 使用数组 3.1 什么是数组 3.2 数字索引数组 3.2.1 数字索引数组的初始化 3.2.2 访问数组的内容 ...

    PHP和MySQL WEB开发(第4版)

    2.10.1 使用普通文件的几个问题 2.10.2 RDBMS是如何解决这些问题的 2.11 进一步学习 2.12 下一章 第3章 使用数组 3.1 什么是数组 3.2 数字索引数组 3.2.1 数字索引数组的初始化 3.2.2 访问数组的内容 3.2.3 使用...

    PHP和MySQL Web开发第4版

    2.10.1 使用普通文件的几个问题 2.10.2 RDBMS是如何解决这些问题的 2.11 进一步学习 2.12 下一章 第3章 使用数组 3.1 什么是数组 3.2 数字索引数组 3.2.1 数字索引数组的初始化 3.2.2 访问数组的内容 ...

    Tagging-Taggie 基于标签管理的个人知识管理开源软件

    因为这几年来都没有时间开发和维护,所以现在开源,希望有人能发扬光大。由于时间关系,没有很好整理文档,而且不是最新版,需要的请联系。本人曾参与Sourceforge的latex2rtf项目,在知识管理方面具有独创见解,希望...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

     《Java开发实战1200例》分为I、II两卷共计1200个例子,包括了开发中各个方面最常用的实例,是目前市场上实例最全面的开发类图书;书中实例来源于多位工程师的多年积累,具有很强的实用性。 本书是第II卷,以开发...

    x-SCAN -V3.3-CN.

    扫描内容包括:远程服务类型、操作系统类型及版本,各种弱口令漏洞、后门、应用服务漏洞、网络设备漏洞、拒绝服务漏洞等二十几个大类。对于多数已知漏洞,我们给出了相应的漏洞描述、解决方案及详细描述链接,其它...

    强大的扫描工具x-scan

    二十几个大类。对于多数已知漏洞,我们给出了相应的漏洞描述、解决方案及详细描述链接,其它漏洞资 料正在进一步整理完善中,您也可以通过本站的“安全文摘”和“安全漏洞”栏目查阅相关说明。 3.0及后续版本提供...

    塞普森信息管理系统2008奥运旗舰版修正版070524

    此版本适合个人用户,您可以免费下载使用。 新增功能:数据库:进一步数据库优化和改进,提高整体运行效率; JS调用:可以调用每个分类的JS,调用的JS采用AJAX技术可以无静态刷新;...修正了网友提出的几个小bug.070524.

    MySQL管理之道 性能调优、高可用与监控.part2.rar

    《mysql管理之道:性能...10.2 mysql数据库的监控脚本 288 第五部分 项目案例 第11章 项目案例讲解 292 11.1 数据碎片整理方案 292 11.2 用户信息表水平拆表方案 296 11.3 阿里巴巴中间件cobar水平拆表方案 299

    大量批处理实用程序例程

    把一个数拆分为几个数的和.cmd 无限制实数加减运算脚本.cmd 水仙花数算法.cmd 求一列数所有不同组合的和.cmd 求最大公约数和最小公倍数.cmd 用随机数做四则运算.cmd 百钱买百鸡的买法.cmd 计算2的N次方.cmd 计算开方...

    AIX系统管理

    2.8 AIX的几个重要技术 20 2.8.1 LVM-Logical Volume Manager 20 2.8.2 JFS-Journal File System 20 2.8.3 系统管理接口工具(smit) 20 第 3 章 AIX基本命令使用 21 3.1 基本系统使用命令 21 3.1.1 系统进入和退出 ...

Global site tag (gtag.js) - Google Analytics