整理的几个常用的数据库维护的脚本
--
--整理了几个常用的数据库维护的脚本,和大家分享,希望能够对大家有所帮助,尤其是
--初学者。这些脚本只针对Sql Server 2000,在Sql Server 2005下没有进行测试,有些
--可能不适用。如果有错误,请联系我<Yahongq111@163.com>
--
--
/**//*********************************************************************************
* FielName : backup.sql
* Function : 自动备份
* Author : Yahong<Yahongq111@163.com>
* 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 : 数据库还原
* Author : Yahong<Yahongq111@163.com>
* 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 : 收缩数据库的日志文件
* Author :Yahong<Yahongq111@163.com>
* 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
*/
转载于:https://www.cnblogs.com/Yahong111/archive/2007/09/19/898326.html
整理的几个常用的数据库维护的脚本相关推荐
- 整理几个国内外常用的广告联盟给大家参考
我们个人网站创建的目的是什么?情怀还是盈利?对于大部分人而言肯定是出于情怀才能坚持下去,进而最终的目的还是希望网站盈利,甚至希望成为那些令人羡慕的优秀站长实现财务自由.ajie jierai.com ...
- 【整理】Word OpenXML常用标签
[整理]Word OpenXML常用标签 一.背景 最近在做关于Word内容自动标引,需要了解Word的底层结构,顺便梳理一下OpenXML的标签含义,方便后续开发,提高对OpenXML标签的查找效率 ...
- Firefox 常用扩展插件及脚本推荐 打造你不一样的Firefox
前言: 进入2011年以来,整个浏览器领域的竞争越发激烈,随着IE9正式版的发布.Chrome.Opera等浏览器厂商也相继更新/发布了新的版本.经过多次跳票之后,FireFox4.0正式版终于在今天 ...
- Python气象绘图笔记——常用气象绘图函数脚本封装与使用记录
由于工作需要,将对我常用的python绘图脚本进行封装,为了防止代码丢失.忘记使用流程等,写个博客记录下. 要加载的包 import os import matplotlib.ticker as mt ...
- 哈工大博士历时半年整理的《Pytorch常用函数函数手册》开放下载!内含200余个函数!...
近期有很多小伙伴在公众号后台咨询有没有关于Pytorch函数使用的学习资料.Pytorch是目前常用的深度学习框架之一,深受学生党的喜爱,小白本人也是使用的Pytorch框架.为了帮助更多小伙伴,小白 ...
- 整理下开发中常用的第三方库
在日常开发中,我们常常使用一些第三方库.我就在这整理下我常用的第三方库.这只是我常用的,使用习惯不一定和别人相同.但用于日常开发足够了. 1. AFNetworking 这是用于网络请求的库,使用方法 ...
- GitHub 优秀的 Android 开源项目 淘宝技术牛p博客整理开发中最常用的GitHub上 优秀的 Android 开源项目整理(精品)...
原文地址为http://www.trinea.cn/android/android-open-source-projects-view/,作者Trinea 主要介绍那些不错个性化的View,包括Lis ...
- 【UE4(虚幻)】学习笔记(七)---- UE4安卓打包整理及安卓设置常用设置说明
本次学习笔记分为两个部分: 1.整理UE4打包教程 2.补充说明打包中细节 一.整理UE4打包教程 哔哩哔哩 哔哩哔哩 上面两个视频参照着来理解打包,android配置文件建议下载一直闪光皮皮虾那个u ...
- linux去掉文件快捷方式,整理总结:Linux常用命令篇
整理的常用 linux 命令清单. 一.创建目录 mkdir# 在当前目录 创建myApp文件夹 $ mkdir myApp # 创建/a/b/c文件夹,如果/a或/a/b不存在,则自动创建 $ mk ...
最新文章
- 2020年五大虚拟现实和增强现实趋势
- 百思不得姐第4天:文本框占位文字颜色
- WampServer修改端口及菜单Localhost
- douchat 4.0 新版发布,助力小程序后台开发
- 前端学习(2077):开始回顾
- 发票管理软件_企业为什么需要ERP企业管理软件?
- PHP+crontab 完美实现定时任务
- python爬取喜马拉雅vip音频_Python简易爬虫教程(三)--爬取喜马拉雅音频
- 大蟒蛇Python平台相关知识
- android 打好的补丁位置,Android 6.0上打完第一个补丁后再打新补丁Crash
- HDU - 4489 The King’s Ups and Downs (排列组合+dp)
- 爷青回!最近很火的朋友圈怀旧小电视源码来啦!看到最后一个视频我大呼好家伙!
- 基于STM32F103芯片实现LED灯闪烁
- 微信公众号分享网页注意点
- 百数智慧社区细分领域合作案例展示
- 【IoT开发】D3引擎升级啦!速速来体验机智云新版智能场景推送
- ESP8266(ESP模块)Arduino开发环境快速搭建方法--含网盘离线文件
- 计算机多媒体课程教师教学心得,多媒体教学的心得体会_多媒体教学教师心得...
- android AdapterView 关键方法分析
- 金融时间序列分析: 10. ARMA模型实例(R,Python)
热门文章
- java安装好了打不开机_门套安装是45度拼接还是直角好?当初不懂行,没有半年就重装!...
- MediaElementAudioSourceNode
- Pandas dtypes(数据类型)
- java 夏令时区_如何获得另一个时区的夏令时状态
- uint32是什么数据类型_C++编程基础: 4. 数据类型
- 微信开发php插件下载图片,微信开发之微信jsapi选择图片,上传图片,预览和下载图片方法...
- 基于物联网的新型智能家居控制系统设计
- 面试题系列:网络篇夺命连环12问
- 为ESXi 4.x / 5.x / 6.x / 7.x创建持久暂存位置(1033696)
- 一项一项教你测等保2.0——Windows入侵防范