以文本方式查看主题

-  昂捷论坛  (http://enjoyit.com.cn/bbs/index.asp)
--  □-自由问答区  (http://enjoyit.com.cn/bbs/list.asp?boardid=35)
----  怎样让Sql Server数据库可以备份到另外一台机器上  (http://enjoyit.com.cn/bbs/dispbbs.asp?boardid=35&id=171)

--  作者:大脑袋
--  发布时间:2005/10/26 20:05:09
--  怎样让Sql Server数据库可以备份到另外一台机器上

1)如果是用的操作系统用户administrator登陆的系统,需要在“管理工具--〉服务”里把
MSSQLSERVER的启动账户改为administrator
2)在要存放数据库备份文件的机器上建立一个共享目录,然后在Sql Server所在的机器上映射成一个驱动器,比如F
3)在数据库里建立一个登录,选择windows身份验证,选择administrator,使之具有系统管理的服务器角色,并且可以访问要备份的数据库
4)这时只要用Windows身份验证进入查询分析器,执行
backup database enjoy_shq to disk= \'f:\\enjoy_shq_bak.bak\'
就可以了

备份数据库到另外一台机器的潜在问题
1)网络不稳定,导致备份失败
2)修改操作系统administator的密码后,启动MSSQLSERVER 服务的地方也要更改密码
3)还没有仔细想怎么让机器自动执行备份到别的服务器,并且自动保留几个备份。

[此贴子已经被飞絮于2005-10-26 21:29:39编辑过]

--  作者:skybook
--  发布时间:2005/10/27 17:14:12
--  

我们是做一个批处理文件执行的,,

就可以在WINDOWS下的计划任务里执行的, 时间和次数都可以选的,,

如要把本机E盘DATA目录下的BAK.DAT拷到计算机名为WORK1下的D盘下的DATABAK目录下,WORK1的当前操作系统下有个用户名为user,密码为user
命令为: @echo off
net use \\\\work1\\ipc$ /user:user user
net use x:=\\\\work1\\d\\databak\\ /user:user user
copy e:\\data\\bak.dat x:\\ /y
net use x: /dele
net use \\\\work1\\ipc$ /dele

关于NET USE 命令的格式,,可以参考一些文档,,并且记住用户名和密码之间有个空格的。
并且WIN98下的这个命令格式有些不一样的。

当然也可以建一个存储过程,,调用SQL的CMDSHELL,,再运行那个文件就行了。


--  作者:飞絮
--  发布时间:2005/10/27 22:28:05
--  

大家一定要重视备份的问题,千万别侥幸。

下面是网上的一个例子,不过好象成功与否是跟连接的用户权限有关的

SQLServer中网络备份一例

/****************************************************************************************
* *
* FielName : backup.sql *
* Function : 自动备份 *
* Author : Yahong *
* Write Date : 2005-5-10 2005-5-19 *
* Version : 00 01 *
* *
*****************************************************************************************/

use master

declare @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)

--建立网络连接
exec xp_cmdshell \'net use K: /delete\'
exec xp_cmdshell \'net use K: \\\\yahong1\\backup backup /user:yahong1\\backup \'


--设定名字
set @dynamic_name=convert(varchar(10),getdate(),120)

set @dir=\'K:\\\'+@dynamic_name
set @dir_db=@dir+\'ibm\'
set @verb=\'mkdir \'


--建立目录

--set @cmd=@verb+@dir
--exec xp_cmdshell @cmd

set @cmd=@verb+@dir_db
exec xp_cmdshell @cmd

--DgLifeng
set @backup_name= \'dglifeng_\'+@dynamic_name
set @disk_name=@dir_db+\'\\\'+@backup_name

EXEC sp_addumpdevice \'disk\',@backup_name, @disk_name
BACKUP DATABASE Dglifeng TO @backup_name

exec sp_dropdevice @backup_name

--lifeng
set @backup_name= \'lifeng_\'+@dynamic_name
set @disk_name=@dir_db+\'\\\'+@backup_name

EXEC sp_addumpdevice \'disk\',@backup_name, @disk_name
BACKUP DATABASE lifeng TO @backup_name
exec sp_dropdevice @backup_name


--lifengOA
set @backup_name= \'lifengOA_\'+@dynamic_name
set @disk_name=@dir_db+\'\\\'+@backup_name

EXEC sp_addumpdevice \'disk\',@backup_name, @disk_name
BACKUP DATABASE lifengOA TO @backup_name
exec sp_dropdevice @backup_name

--mytopship
set @backup_name= \'mytopship_\'+@dynamic_name
set @disk_name=@dir_db+\'\\\'+@backup_name


EXEC sp_addumpdevice \'disk\',@backup_name,@disk_name
BACKUP DATABASE Mytopship TO @backup_name
exec sp_dropdevice @backup_name


--同舟化工 ais001
set @backup_name= \'同舟化工_\'+@dynamic_name
set @disk_name=@dir_db+\'\\\'+@backup_name

EXEC sp_addumpdevice \'disk\',@backup_name,@disk_name
BACKUP DATABASE ais002 TO @backup_name
exec sp_dropdevice @backup_name


--同川化工 ais002
set @backup_name= \'同川化工_\'+@dynamic_name
set @disk_name=@dir_db+\'\\\'+@backup_name