zoukankan
html css js c++ java
常用的数据库维护的脚本
--
--
--
整理了几个常用的数据库维护的脚本,和大家分享,希望能够对大家有所帮助,尤其是
--
初学者。这些脚本只针对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
*/
查看全文
相关阅读:
React元素渲染
初识JSX
微信小程序复制文本到剪切板
微信小程序报错request:fail url not in domain list
小程序,通过自定义编译条件,模拟推荐人功能
积分抵扣逻辑
微信小程序 switch 样式
tomcat 配置开启 APR 模式
tomcat8 传输json 报错 Invalid character found in the request target. The valid characters are defined in RFC 3986
c++数组初始化误区
原文地址:https://www.cnblogs.com/kevinge/p/1214567.html
最新文章
GO语言下载、安装、配置
Go语言简介
个性化你的 Git Log 的输出格式
阿里云(百度云)Linux系统挂载磁盘
Linux(CentOS)启动时自动执行脚本(rc.local)
SpringBoot整合kafka(实现producer和consumer)
docker安装kafka
mysql mysqldump 命令导出指定表的数据
Nginx 出现504 Gateway Time-out的解决方法
shell脚本中判断进程是否存在
热门文章
Windows下Redis的安装
SpringBoot多数据源动态切换数据源
Docker Hub镜像加速器
druid连接池
Ubuntu 绿色(tar.gz)安装 nodejs
小程序轮播点
React 组件的生命周期
条件渲染
React 状态机
React 组件
Copyright © 2011-2022 走看看