喜剧:环境SERVER2000 + SQL SERVER 7.0 SERVER2000 两台机器的用户名:ADMINISTRATOR 且均无密码。共享BAK目录执行backup database msdb to disk='\\server\bak\filename.bak'后,提示: Server: Msg 3201, Level 16, State 1, Line 1 Cannot open backup device '\\server\bak\filename.bak'. Device error or device off-line. See the SQL Server error log for more details. Server: Msg 3013, Level 16, State 1, Line 1 Backup or restore operation terminating abnormally.按朱兄意思执行 4、将SQLServer改为SQLUser启动 (管理工具-->服务-->mssql项-->属性-->指定用户为ADMINISTRATOR及密码为空)后,可使用。 不知道是什么原因。有没大师能解释一下。高分送。
1.
backup database 数据库名 to disk='\\serverName\dir\filename'--备份到另外一台机器
2.
backup database 数据库名 to disk='c:\dir\filename'--备份到本地
----下面角本关于建JOB
use msdb
go
--1.新建作业
exec sp_add_job 'wgs'
--2.设置作业
exec sp_add_jobstep @job_name='wgs',
@step_name = 'test' ,
@subsystem = 'TSQL' ,
@command = 'backup database 数据库名 to disk='c:\FolderName\FileName' ,--写你要执行的任务
@retry_attempts = 5,
@retry_interval = 5
--3.调度作业
EXEC sp_add_jobschedule @job_name = 'wgs',
@name = 'aa1',
@freq_type = 4, -- 每天执行
@freq_interval = 1,
@active_start_time = 120000--上中午12点开始
--下面删除作业
exec msdb..sp_delete_job @job_name = 'wgs'
的时候要有足够的权限
实际例子:
环境:
机器A: Windows 2000+SQL Server 2000 (IP地址为:192.168.0.3)
机器B: Windows 2000 (IP地址为:192.168.0.4)
要求:
每天8:00,将SQL Server上的数据库northwind备份到机器B上准备工作:
在机器B上建立共享文件夹back,注意赋予EveryOne组改写的权限
步骤:
为了交流的方便,我写了一个尽量简单的备份存储过程,读者可以按需要完善
declare @url varchar(256),@user varchar(256), @password varchar(256)
set @url='\\192.168.0.162\back'
set @user='ee'
set @password='121314'declare @str varchar(8000)
set @str='master..xp_cmdshell ''net use '+@url+' '+@password + ' /user:'+@user+''''
print @str
--使用net use 建立与远程机器的连接
exec('master..xp_cmdshell ''net use '+@url+' '+@password + ' /user:'+@user+'''') /*************** http://www.csdn.net/develop/article/21/21304.shtm
标题 使用SQLSERVER的扩展存储过程实现远程备份与恢复 happy_david(原作)
最近我在为公司的框架程序(以数据应用为导向的应用体系)做数据管理模块,这个模块的需求比较简单:备份、恢复和清理日志。我公司的软件基本上以C/S为基本架构,所以数据管理模块中两个主要的功能‘备份与恢复’都可能会在Client端操作,备份与恢复’的文件也都有可能存储在client端,因而这个数据管理模块就必须能够实现在远程备份与恢复数据库。 文章的前提阐述完了,就该说说如何具体实现吧。其实都很简单,我想写个远程备份的测试实例
给大家看,就能够很清楚的描述吧!
实例说明:
环境:win2k+sqlserver 2K+查询分析器
SQLSERVER服务实例名称:mainserver
需要备份的数据库名称: msdb
本地机器名称(Client端):david
本地用户:zf 密码:123
本地域名:domain
本地提供备份需求的文件夹:e:\test 第一步: 建立共享文件夹
在程序代码中调用(或者CMD窗口) net share test=e:\test
或者用NetShareAdd这个API
简要说明:
net share : 是WINDOWS内部的网络命令。
作用:建立本地的共享资源,显示当前计算机的共享资源信息。
语法:参见 net share /?
第二步: 建立共享信用关系
master..xp_cmdshell 'net use \\david\test 123 /user:domain\zf'
简要说明:
1:xp_cmdshell :是SQLSERVER的扩展存储过程。
作用,以操作系统命令行解释器的方式执行给定的命令字符串,
并以文本行方式返回任何输出。
语法:参见SQLSERVER联机帮助
2:net use : 是WINDOWS内部的网络命令。
作用,将计算机与共享资源连接或断开,或者显示关于计算机
连接的信息。该命令还控制持久网络连接。
语法:参见 net use /? 第三步:备份数据库
backup database msdb to disk='\\david\test\msdb.bak'
这个不需要说明吧,语法参见SQLSERVER联机帮助 第四步: 删除共享文件夹
在程序代码中调用(或者CMD窗口) net share test /delete
或者用NetShareDel这个API
结果:
已处理 1376 页,这些页属于数据库 'msdb' 的文件 'MSDBData'(位于文件 1 上)。
已处理 1 页,这些页属于数据库 'msdb' 的文件 'MSDBLog'(位于文件 1 上)。
BACKUP DATABASE 操作成功地处理了 1377 页,花费了 3.653 秒(3.086 MB/秒)。 这样mainserver服务器上的msdb就备份到了david机器的E:\test\msdb.bak文件了,使用起来很简单吧?恢复数据库操作也是一样,只要将第三个步骤的语句改为'restore database msdb from disk='\\david\test\msdb.bak'就可以啦。。你看完了也可以试试呀?!(最简单的测试工具查询分析器+CMD窗口)备注:xp_cmdshell 这个扩展存储过程只能SA级别的用户调用,而且是SQLSERVER的安全隐患之
一,许多DBA都喜欢将其删除或者禁用,所以开发人员使用时要倍加小心哦。
文章中的例子只是简要的说明了应如何利用扩展存储过程实现远程备份与恢复,没有涉及安全以及其他方面的考虑,希望读者在代码中自行完善。
/**************************************************
SQL异地备份失败,归根结底是权限问题!!!
如:
SQLServer备到FileServer上
那你的SQLServer的启动用户必须在FileServer上有足够的权限!
--------------------^^^---------------------------------
1、SQLServer上新建一SQLUser用户权限大一点。
2、FileServer上建同一用户对某一文件夹有足够权限。
3、两机的SQLUser密码相同(方便一点)
4、将SQLServer改为SQLUser启动
(管理工具-->服务-->mssql项-->属性-->指定用户及密码)
5、\\192.168.*.*\文件夹\ShareBak.Bak就可以了
-----------------------------------------------------------
简单一点就是:
如果你两台都是windows2ks
你的机器也用同样的Administrator密码,且sql服务器用administrator启动
那你写设备时就可以写:\\ip\.......如果对方是98那你要完全共享一下!
你写设备时就可以写:\\ip\.......
SERVER2000
两台机器的用户名:ADMINISTRATOR 且均无密码。共享BAK目录执行backup database msdb to disk='\\server\bak\filename.bak'后,提示:
Server: Msg 3201, Level 16, State 1, Line 1
Cannot open backup device '\\server\bak\filename.bak'. Device error or device off-line. See the SQL Server error log for more details.
Server: Msg 3013, Level 16, State 1, Line 1
Backup or restore operation terminating abnormally.按朱兄意思执行
4、将SQLServer改为SQLUser启动
(管理工具-->服务-->mssql项-->属性-->指定用户为ADMINISTRATOR及密码为空)后,可使用。
不知道是什么原因。有没大师能解释一下。高分送。