server2005服务器怎么维护,ms sql server 2005维护计划(备份)失败:应用于目标服务器 对于 xx 失败...

ms sql server 2005维护计划(备份)失败:应用于目标服务器 对于 xx 失败,消息如下

23b24eb00c1b998a1cf62e919b359717.png

ms sql server 2005维护计划(备份)失败:应用于目标服务器 对于 xx 失败

而这个错误,又没有详细的说明,为什么失败,失败在哪里;不说明详细原因,这也是微软的产品经常让人很崩溃的重要原因之一。

网上也有人遇到这这种问题,只是找了个遍也都没有看到解决方法;不知道是否重启一下windows会不会好,但因为是生产环境的服务器,不便于重启。

突然想起命令行,命令行工具!mssql有命令行客户端工作,只是没有用过,应该可以通过bat脚本调用命令行工具执行备份命令,这样还可以很方便的调用7z,(win)rar等来自动压缩,比mssql 自带的维护计划灵活多了。“维护计划”好像也可以调用压缩工具,只是要启用xp_cmd这个很风险的存储过程,让人不安心,所以一般不这么用,备份文件都是手工压缩再下载到本地存档备份。

MS sql 的官方命令行客户端叫sqlcmd,ms sql2005默认安装的,位于 X:\Program Files\Microsoft SQL Server\90\Tools\Binn ,该目录会被自动加入windows 的PATH环境变量中,所以可以直接调用,先看看基本的帮助文档:

C:\Documents and Settings\Administrator>sqlcmd /?

Microsoft (R) SQL Server 命令行工具

版本 9.00.1399.06 NT INTEL X86

版权所有 (c) Microsoft Corporation。保留所有权利。

用法: Sqlcmd            [-U 登录 ID]          [-P 密码]

[-S 服务器]            [-H 主机名]          [-E 可信连接]

[-d 使用数据库名称] [-l 登录超时值]     [-t 查询超时值]

[-h 标题]           [-s 列分隔符]      [-w 屏幕宽度]

[-a 数据包大小]        [-e 回显输入]        [-I 允许带引号的标识符]

[-c 命令结束]            [-L[c] 列出服务器[清除输出]]

[-q "命令行查询"]   [-Q "命令行查询" 并退出]

[-m 错误级别]        [-V 严重级别]     [-W 删除尾随空格]

[-u unicode 输出]    [-r[0|1] 发送到 stderr 的消息]

[-i 输入文件]         [-o 输出文件]        [-z 新密码]

[-f | i:[,o:]] [-Z 新建密码并退出]

[-k[1|2] 删除[替换]控制字符]

[-y 可变长度类型显示宽度]

[-Y 固定长度类型显示宽度]

[-p[1] 打印统计信息[冒号格式]]

[-R 使用客户端区域设置]

[-b 出错时中止批处理]

[-v 变量 = "值"...]  [-A 专用管理连接]

[-X[1] 禁用命令、启动脚本、环境变量[并退出]]

[-x 禁用变量情况]

[-? 显示语法摘要]

C:\Documents and Settings\Administrator>

一个最简单的一个命令行备份实例

C:\Documents and Settings\Administrator>sqlcmd -U sa -P sa -S localhost -Q "backup database foo to disk='f:\backup\foo_110630.bak'"

已为数据库 'foo',文件 'foo' (位于文件 1 上)处理了 5032 页。

已为数据库 'foo',文件 'foo_log' (位于文件 1 上)处理了 1 页。

BACKUP DATABASE 成功处理了 5033 页,花费 1.871 秒(22.036 MB/秒)。

一个比较完善的自动批处理脚本

一个比较完善的自动批处理脚本,可以同时备份并rar压缩多个数据库,可以按需要在此基础上修改改进。

@ECHO ON

set d=%date:~0,10%

set d=%d:-=%

set t=%time:~0,8%

set t=%t::=%

set stamp=%p%%d%%t%

set bakupfolder=F:\backup\

rem    1按子目录保存备份文件;0不按

set lay_in_subfolder=1

call :backupone foo

call :backupone foo2

call :backupone foo3

call :backupone foo4

goto :EOF

@ECHO OFF

:backupone

setlocal

echo %1

set dbname=%1

if not exist %bakupfolder%%dbname% mkdir %bakupfolder%%dbname%

if %lay_in_subfolder%==1 (

set subfolder=%dbname%\

)else set subfolder=

rem echo %bakupfolder%%subfolder%%dbname%%stamp%.bak

sqlcmd -U sa -P "sa" -S localhost -Q "backup database %dbname% to disk='%bakupfolder%%subfolder%%dbname%%stamp%.bak'"

"C:\Program Files\WinRAR\RAR.exe" a -ep1 -r -o+ -m5 -s -df "%bakupfolder%%subfolder%%dbname%%stamp%".rar "%bakupfolder%%subfolder%%dbname%%stamp%.bak"

endlocal&goto :EOF

脚本说明

1. set bakupfolder=F:\backup\

备份文件存放于目录F:\backup\ (此目录需要事先建好)

2. 默认每个数据库放置到bakupfolder下的同名的子目录(脚本自动创建)中;设置lay_in_subfolder=0后,将直接放置到bakupfolder

3. 备份文件名中自动添加备份时的时间字符串,不用担心备份目录下名字重复,也便于管理。

4. call :backupone foo

foo是需要备份的数据库,需要备份其它数据库,按同样的方式一行写一条即可

5. 命令行驱动备份操作:sqlcmd -U sa -P “sa” -S localhost -Q “xxx”

这里连接数据库的用户名密码都是sa,请改成你的实际用户名密码。mssql密码中如果有一些特殊字符,可能报错,所以加上双引号。如果密码简单,不加也可以;不过sa密码,一般都是很变态的吧~~

备份脚本的调用

加到windows计划任务里,定期执行,是一个很好的主意。

上面脚本里,只对mssql数据库执行了备份的操作,如果加入整理索引碎片、重建索引等维护操作,也是很好的自动化维护方案。

这样处理,就可以弃用mssql自带的“维护计划”了。

延伸阅读coded by nessus

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值