|
目标:
backup database 数据库 to disk='\\你的计算机名\共享目录名\备份文件名'
方法一:通过映射网络驱动器(这样可以解决权限问题)
1.映射
exec master..xp_cmdshell 'net use z: \\xz\c$ "" /user:xz\administrator'
(备注 z: 是映射网络路径对应本机的盘符,与下面的备份对应; \\xz\c$ 是要映射的网络路径; xz\administrator xz是远程的计算机名,administrator是登陆的用户名。)
2.进行数据库备份
backup database 数据库名 to disk='z:\备份文件名'
3.备份完成后删除映射
exec master..xp_cmdshell 'net use z: /delete'
方法二:直接备份到网络中的远程计算机
1.backup database 数据库 to disk='\\远程计算机\D$\备份文件名'
2.最好是在一个域中
3.如果不是,要保证你有远程计算机的administrator权限
4.否则将备份失败
你可以这样测试:
a.\\\\远程计算机\D$
b.如果不让输入账号和密码,则可以
c.如果让输入账号和密码就不可以
可以这样来做:
a.让2台计算机的administrator的密码完全一样
b.都用adminsitrator登陆
c.同时sql server的启动账号也用administrator即可
c.1.在服务器上新建一个用户和本地机器的用户名和密码都一样.
c.2.把服务器的sql服务方式更改为您新设的这个帐户和密码.
c.3.把服务器上sql代理用新建的该用户名和密码启动.
c.4.在服务器上新建一个作业,输入脚本:
BACKUP DATABASE [服务器的数据库名] TO DISK = N'本地机器的网路路径' WITH INIT , NOUNLOAD , NAME = N'back name', NOSKIP , STATS = 10, NOFORMAT
这样就可以了
例子
参考下面的设置来做映射(假设A服务器上的数据库备份到B服务器)(限局域网内):
1.机器A,B创建一个同名的windows用户,用户组设置为administrators,并设置相同的密码,做为备份文件夹文件夹的有效访问用户,操作:
我的电脑》控制面板》管理工具》计算机管理》用户和组》右键用户》新建用户
--建立一个隶属于administrator组的登陆windows的用户
2.在B机器器上,新建一个共享目录,做为备份文件的存放目录,操作:
我的电脑--D:\ 新建一个目录,名为: BAK
--右键这个新建的目录
--属性--共享
--选择"共享该文件夹"
--通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户具有对该文件夹的所有权限
--确定
3.设置 MSSQLSERVER 及 SQLSERVERAGENT 服务的启动用户
开始--程序--管理工具--服务
--右键 MSSQLSERVER
--属性--登陆--选择"此账户"
--输入或者选择第一步中创建的windows登录用户名
--"密码"中输入该用户的密码
--确定
--同样的方法设置 SQLSERVERAGENT
4.在A机器上完成对B机器BAK目录的映射
5.查询分析器中执行下面的语句,检验是否成功:
exec master..xp_cmdshell 'dir 映射的盘符'
6.A服务器上做备份计划
SQL异地备份失败,归根结底是权限问题
如:
SQLServer备到FileServer上
那你的SQLServer的启动用户必须在FileServer上有足够的权限!
《本文引用于http://blog.sjzj.com.cn/article.asp?id=689》 |
|