AS
begin
--创建映射
--系统数据库备份为192.168.20.88上的共享文件夹,administrator具有读写权限
--12345为administrator网络访问192.168.20.88的密码
exec master..xp_cmdshell 'net use w: \\192.168.20.88\系统数据库备份$ 12345 192.168.20.88/user:administrator',NO_OUTPUT
-----2000用游标:
declare @s nvarchar(200),@del nvarchar(200)
select @s='',@del=''
declare datebak cursor for
select
[bak]='backup database '+quotename(Name)+' to disk =''w:'+Name+'_'+convert(char(10),getdate(),112)+'.bak'' with init',
[del]='exec master..xp_cmdshell '' del w:'+Name+'_'+convert(char(10),getdate()-7,112)+'.bak'', no_output'
from master..sysdatabases where dbid>4 --不备份系统数据库
open datebak
fetch next from datebak into @s,@del
while @@fetch_status=0
begin
exec (@del)
exec(@s)
fetch next from datebak into @s,@del
end
close datebak
deallocate datebak
--删除映射
exec master..xp_cmdshell 'net use w: /delete'
end
GO
--大家帮忙看看那里出错了
16 个解决方案
#1
错误信息贴出来啊
#2
报什么错误
#3
单从脚本看么有问题,估计你的问题在使用了即不被推荐的 网络备份的问题
长出问题也就是必然了
长出问题也就是必然了
#4
BackupDiskFile::CreateMedia: 备份设备“w:T8CRM_20110519 .bak”create 失败。操作系统错误 = 3(系统找不到指定的路径。)。
#5
liuhuayang 上个帖子加你给方案啥都不给,光在那里说闲话。
#11楼 得分:0回复于:2011-05-14 11:27:42我觉得ls是大公司里的老鸟吧,我们公司买不起磁盘阵列也做不起镜像
1 在本地备份(所有人都会这么备份的)
2 利用SQL SERVER maintance plan 在将你的文件拷贝到任何地方
(如果你备份的文件有问题,那么你将备份文件拷贝到其他地方也是徒然)
1.所有人都会这么备份的
2.如果你的备份的文件有问题,那么你将备份文件拷贝到其他地方也是徒然
我的回答是1对应你的1,2是对应你的2,然后外加一个网络的和FTP的,
或者用OS做个系统调度复制到其他服务器
请问一下我不外加个网络备份、ftp拷贝,在公司不购买磁盘阵列设备做不起镜像的前提下,
你还有什么更好的解决方案么?
你这老手真有点冬日娜的感觉!
#11楼 得分:0回复于:2011-05-14 11:27:42我觉得ls是大公司里的老鸟吧,我们公司买不起磁盘阵列也做不起镜像
1 在本地备份(所有人都会这么备份的)
2 利用SQL SERVER maintance plan 在将你的文件拷贝到任何地方
(如果你备份的文件有问题,那么你将备份文件拷贝到其他地方也是徒然)
1.所有人都会这么备份的
2.如果你的备份的文件有问题,那么你将备份文件拷贝到其他地方也是徒然
我的回答是1对应你的1,2是对应你的2,然后外加一个网络的和FTP的,
或者用OS做个系统调度复制到其他服务器
请问一下我不外加个网络备份、ftp拷贝,在公司不购买磁盘阵列设备做不起镜像的前提下,
你还有什么更好的解决方案么?
你这老手真有点冬日娜的感觉!
#6
这个错误有配置引起,也会由性能引起。关键看你问题发生的频率。 是否一直发生,还是随机发生
#7
一直发生,从未配置成功过
#8
。。。
#9
net use命令怎么这么别扭
net use w: \\192.168.20.88\系统数据库备份$ 12345 /user:administrator
net use w: \\192.168.20.88\系统数据库备份$ 12345 /user:administrator
#10
如果administrator帐号存在于对方机器
net use w: \\192.168.20.88\系统数据库备份$ 12345 /user:192.168.20.88\administrator
顺便说一下 不要用映射盘的方式尽量 会带来很多问题
net use w: \\192.168.20.88\系统数据库备份$ 12345 /user:192.168.20.88\administrator
顺便说一下 不要用映射盘的方式尽量 会带来很多问题
#11
会带来什么问题呢?
#12
给我说带来什么问题嘛,高手!!!
#13
因为通过xp_cmdshell方式调用windows接口net use生成的作用于和windows直接调用net use的作用域完全不一样,也就是说相互是不可见的.你可以试试你在sqlserver里通过xp_cmdshell调用net use生成的盘符在windows里是不可见的.
但是在有的时候(注意是有时候)这个作用域会有交集,也就是说互相又可见了.这个应该是一个bug,不太清楚2008里面修正了没有
就谈谈我以前碰到一个问题就是有系统管理员因为在不知道sqlserver的情况下,建立了映射盘进行文件备份等操作(当然盘符和tsql里面的一致),造成了xp_cmdshell调用出错(agent调用),手动去调试代码又没有任何错误,这个问题浪费了我1天的时间.
所以建议还是能不用尽量不用
#14
那你的意思是说:
xp_cmdshell调用cmd命令,有时候对windows来说是看不见的
而在windows里直接先建立好映射,再用sqlserver来备份,但是
sqlserver又看不到
windows里直接先建立好映的映射目录,
这个我倒测试应验了,
但是如果是能够成功应用起来的,那也不是什么坏事情或给你带来什么大问题啊
xp_cmdshell调用cmd命令,有时候对windows来说是看不见的
而在windows里直接先建立好映射,再用sqlserver来备份,但是
sqlserver又看不到
windows里直接先建立好映的映射目录,
这个我倒测试应验了,
但是如果是能够成功应用起来的,那也不是什么坏事情或给你带来什么大问题啊
#15
你说的映射目录是什么?我的意思是用\\computer\share 这样的方式来备份(避免建立虚拟盘符) 这样不会有问题 而且也可以用net use进行认证 比如 net use \\computer\share /user:192.168.20.88/administrator
#16
右键网上邻居,“映射网络驱动器”,我用delphi做了个程序测试读写映射的网络驱动器,是可以正常使用的,但是这个xp_cmdshell就不行
#1
错误信息贴出来啊
#2
报什么错误
#3
单从脚本看么有问题,估计你的问题在使用了即不被推荐的 网络备份的问题
长出问题也就是必然了
长出问题也就是必然了
#4
BackupDiskFile::CreateMedia: 备份设备“w:T8CRM_20110519 .bak”create 失败。操作系统错误 = 3(系统找不到指定的路径。)。
#5
liuhuayang 上个帖子加你给方案啥都不给,光在那里说闲话。
#11楼 得分:0回复于:2011-05-14 11:27:42我觉得ls是大公司里的老鸟吧,我们公司买不起磁盘阵列也做不起镜像
1 在本地备份(所有人都会这么备份的)
2 利用SQL SERVER maintance plan 在将你的文件拷贝到任何地方
(如果你备份的文件有问题,那么你将备份文件拷贝到其他地方也是徒然)
1.所有人都会这么备份的
2.如果你的备份的文件有问题,那么你将备份文件拷贝到其他地方也是徒然
我的回答是1对应你的1,2是对应你的2,然后外加一个网络的和FTP的,
或者用OS做个系统调度复制到其他服务器
请问一下我不外加个网络备份、ftp拷贝,在公司不购买磁盘阵列设备做不起镜像的前提下,
你还有什么更好的解决方案么?
你这老手真有点冬日娜的感觉!
#11楼 得分:0回复于:2011-05-14 11:27:42我觉得ls是大公司里的老鸟吧,我们公司买不起磁盘阵列也做不起镜像
1 在本地备份(所有人都会这么备份的)
2 利用SQL SERVER maintance plan 在将你的文件拷贝到任何地方
(如果你备份的文件有问题,那么你将备份文件拷贝到其他地方也是徒然)
1.所有人都会这么备份的
2.如果你的备份的文件有问题,那么你将备份文件拷贝到其他地方也是徒然
我的回答是1对应你的1,2是对应你的2,然后外加一个网络的和FTP的,
或者用OS做个系统调度复制到其他服务器
请问一下我不外加个网络备份、ftp拷贝,在公司不购买磁盘阵列设备做不起镜像的前提下,
你还有什么更好的解决方案么?
你这老手真有点冬日娜的感觉!
#6
这个错误有配置引起,也会由性能引起。关键看你问题发生的频率。 是否一直发生,还是随机发生
#7
一直发生,从未配置成功过
#8
。。。
#9
net use命令怎么这么别扭
net use w: \\192.168.20.88\系统数据库备份$ 12345 /user:administrator
net use w: \\192.168.20.88\系统数据库备份$ 12345 /user:administrator
#10
如果administrator帐号存在于对方机器
net use w: \\192.168.20.88\系统数据库备份$ 12345 /user:192.168.20.88\administrator
顺便说一下 不要用映射盘的方式尽量 会带来很多问题
net use w: \\192.168.20.88\系统数据库备份$ 12345 /user:192.168.20.88\administrator
顺便说一下 不要用映射盘的方式尽量 会带来很多问题
#11
会带来什么问题呢?
#12
给我说带来什么问题嘛,高手!!!
#13
因为通过xp_cmdshell方式调用windows接口net use生成的作用于和windows直接调用net use的作用域完全不一样,也就是说相互是不可见的.你可以试试你在sqlserver里通过xp_cmdshell调用net use生成的盘符在windows里是不可见的.
但是在有的时候(注意是有时候)这个作用域会有交集,也就是说互相又可见了.这个应该是一个bug,不太清楚2008里面修正了没有
就谈谈我以前碰到一个问题就是有系统管理员因为在不知道sqlserver的情况下,建立了映射盘进行文件备份等操作(当然盘符和tsql里面的一致),造成了xp_cmdshell调用出错(agent调用),手动去调试代码又没有任何错误,这个问题浪费了我1天的时间.
所以建议还是能不用尽量不用
#14
那你的意思是说:
xp_cmdshell调用cmd命令,有时候对windows来说是看不见的
而在windows里直接先建立好映射,再用sqlserver来备份,但是
sqlserver又看不到
windows里直接先建立好映的映射目录,
这个我倒测试应验了,
但是如果是能够成功应用起来的,那也不是什么坏事情或给你带来什么大问题啊
xp_cmdshell调用cmd命令,有时候对windows来说是看不见的
而在windows里直接先建立好映射,再用sqlserver来备份,但是
sqlserver又看不到
windows里直接先建立好映的映射目录,
这个我倒测试应验了,
但是如果是能够成功应用起来的,那也不是什么坏事情或给你带来什么大问题啊
#15
你说的映射目录是什么?我的意思是用\\computer\share 这样的方式来备份(避免建立虚拟盘符) 这样不会有问题 而且也可以用net use进行认证 比如 net use \\computer\share /user:192.168.20.88/administrator
#16
右键网上邻居,“映射网络驱动器”,我用delphi做了个程序测试读写映射的网络驱动器,是可以正常使用的,但是这个xp_cmdshell就不行