首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL数据库自动备份到另一台电脑上(欢迎讨论)解决办法

2012-01-15 
SQL数据库自动备份到另一台电脑上(欢迎讨论)原来客户的数据都是自动备份到服务器的,但是近来由于客户的电

SQL数据库自动备份到另一台电脑上(欢迎讨论)
原来客户的数据都是自动备份到服务器的,但是近来由于客户的电脑数据出现了安全问题。因此想更近一步在备份了本地服务器上,再把数据备份到局域网中的另一台电脑上。
在网上查了好多资料问题都没有得到解决。我是这样做的:
写了如下的语句在sql查询分析器里面运行。
declare   @sql   varchar(500)

select   @sql= '\\192.168.42.100\e:\xsl\chisbz '+ '.bak '

exec   master..xp_cmdshell   'net   use   \\192.168.42.100\xsl   123456/user:sghis\new '

backup   database   chisbz   to   disk=@sql

192.168.42.100是局域网中要备份数据的目标机器的IP地址,xsl是这台机器上的共享文件夹(完全共享),sghis是工作组名,服务器和目标机器都属于sghis这个工作组。new是登录目标机器的用户名,123456是登录目标机器时用户名new对应的密码。

当我在SQL查询分析器中执行以上语句时出现如下的错误提示:
Server:   Msg   3201,   Level   16,   State   1,   Line   10
无法打开备份设备   '\\192.168.42.100\e:\xsl\chisbz.bak '。设备出现错误或设备脱机。详细信息请参阅   SQL   Server   错误日志。
Server:   Msg   3013,   Level   16,   State   1,   Line   10
BACKUP   DATABASE   操作异常终止。

只运行exec   master..xp_cmdshell   'net   use   \\192.168.42.100\xsl   123456/user:sghis\new '时,出现如下的提示:
output                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
---------------------------------------
系统发生   5   错误。
NULL
拒绝访问。
NULL
NULL

(5   row(s)   affected)

有谁知道总题出在什么地方吗?

当然,我也可以先把数据备份到服务器上,再写个批处理把数据备份到另一台电脑上。可是网络地址就是找不到,这是问题的关键所在。

欢迎讨论,谢谢指教!

[解决办法]
其实不用这么复杂,你首先使用SQL Server的自动维护工具将数据库备份至本地某目录。

然后做一个批处理文件,使用XCOPY命令,将某个文件夹下的文件复制到另一个位置,写法:

xcopy D:\FolderA\FolderB\*.* \\192.168.0.20\ShareFolderA\ /S /E /D /Y /C

至于/S /E /D /Y /C这些参数,你可以使用Xcopy /help查看一下。

然后使用一些BAT-> EXE的小程序将BAT转换成EXE文件,然后使用Windows的计划任务在数据库备份完毕后(间隔半小时即可)定期调用~~保证可以解决问题。
------解决方案--------------------


需要创建映象
exec master..xp_cmdshell 'net use z: \\192.168.1.2\财务 " " /user:192.168.1.2\administrator '

--备份;with init覆盖|noinit添加
backup database 库名 to disk= 'E:\H_BACKUP.bak ' with init

--COPY
exec master..xp_cmdshell 'copy E:\H_BACKUP.bak z: '
--完成后删除映射
exec master..xp_cmdshell 'net use z: /delete '

热点排行