将SQL Server远程服务器的数据库备份到目标机(转)
来源:互联网 发布:数据库开发前景 编辑:程序博客网 时间:2024/05/16 04:15
使用前,必须在目标机上开通一个可写访问的共享文件夹。
存储过程内容如下:
CREATE PROCEDURE Sp_Backup_To_Remote
(
@Database VARCHAR(128), -- 要备份的数据库名
@RemoteIP VARCHAR(15), -- 备份到目标机的IP地址
@ShareName VARCHAR(128), -- 目标机的共享名
@SharePath VARCHAR(128), -- 目标机的共享中的路径,将备份到这里
@UserName VARCHAR(20), -- 连接目标机共享的用户,此用户必须具有对该共享的写权限
@Password VARCHAR(20), -- 连接目标机共享的密码
@BackupFile VARCHAR(128) -- 备份到目标机的文件名
)
AS
DECLARE @ResultINT
DECLARE @ErrorMessageVARCHAR(512)
/** 添加使用的备份设备 */
-- 备份设备名称
DECLARE @DeviceNameVARCHAR(128)
SET @DeviceName = @UserName+ '@' + @RemoteIP + '/' + @ShareName + '/' + @SharePath+ '/'
-- 备份设备路径
DECLARE @DevicePathVARCHAR(512)
SET @DevicePath ='//' + @RemoteIP+ '/' + @ShareName + '/' + @SharePath + '/' + @BackupFile
-- 添加备份设备
EXEC @Result =Sp_AddumpDevice 'Disk' , @DeviceName, @DevicePath
IF @Result = 1
BEGIN
SET @ErrorMessage ='添加备份设备失败。名为 ' +'''' + @DevicePath+ '''' + ' 的物理设备已经存在,为保证成功备份,请手工删除 master.dbo.sysdevices 表中列phyname值为 '+ '''' + @DevicePath + '''' + ' 的设备。'
RAISERROR (@ErrorMessage, 16, 1)
RETURN 0
END
/** 添加共享连接 */
-- 添加共享连接命令
DECLARE @AddShareVARCHAR(512)
SET @AddShare ='NET USE //' + @RemoteIP+ '/' + @ShareName + ' ' + @Password + ' /USER:' + @UserName + '@' + @RemoteIP
-- 执行添加共享连接
EXEC @Result =xp_cmdshell @AddShare
IF @Result = 1
BEGIN
SET @ErrorMessage ='添加共享连接失败,备份失败。'
RAISERROR (@ErrorMessage, 16, 1)
RETURN 0
END
/** 备份数据库 */
BACKUP DATABASE @DatabaseTO @DeviceName
/** 删除共享连接 */
-- 删除共享连接命令
DECLARE @DeleteShareVARCHAR(512)
SET @DeleteShare ='NET USE //' + @RemoteIP+ '/' + @ShareName + ' /DELETE'
-- 执行删除共享连接
EXEC @Result =xp_cmdshell @DeleteShare
IF @Result = 1
BEGIN
SET @ErrorMessage ='删除共享连接失败。'
RAISERROR (@ErrorMessage, 16, 1)
RETURN 0
END
/** 删除使用的备份设备 */
EXEC @Result =Sp_DropDevice @DeviceName
IF @Result = 1
BEGIN
SET @ErrorMessage ='删除备份设备失败。请手工删除 master.dbo.sysdevices 表中列phyname值为 '+ '''' + @DevicePath + '''' + ' 的设备。'
RAISERROR (@ErrorMessage, 16, 1)
RETURN 0
END
PRINT'命令完成。'
RETURN 1
GO
调用这个存储过程,那就很方便了,可以在目标机上(可以是本地),也可以在远程服务器上,当然也可以是别的机子,只不过,在目标机或本地或别的机子上调用这个存储过程时,要为远程服务器添加一个SQL Server注册,然后使用<这个注册名>.master.dbo.Sp_Backup_To_Remote就可以了。
- 将SQL Server远程服务器的数据库备份到目标机(转)
- 如何将远程SQL Server数据库备份到本地数据库
- SQL Server 2000如何将远程数据库备份到本地
- 备份服务器上的sql server数据库到本机
- 备份SQL SERVER远程数据库到本地
- 备份SQL SERVER远程数据库到本地
- 将远程服务器上的SQL SERVER数据库导出到本地
- 将服务器的SQL数据库备份或导入到本地
- 将服务器的SQL数据库备份到本地
- SQL Server 多个数据库远程备份到另一台服务器
- 如何将高版本的SQL Server数据库备份到低版本的SQL Server
- 远程SQL SERVER服务器备份数据到客户机
- 远程SQL SERVER服务器备份数据到客户机
- 远程备份sql数据库到本机
- SQL Server 远程备份数据库
- SQL Server如何备份远程数据库到本地
- SQL SERVER怎样将某个服务器上面的数据自动备份到另一台服务器上面(异地备份)
- SQL server 2008R2 采用脚本把远程连接的数据库备份到本地
- Linux设备驱动程序编写
- UNIX网络编程卷2进程间通信读书笔记(二)—管道 (2)
- SAP常用系统函数
- 用Javascript区别浏览器
- javascript的event事件与获取鼠标光标- -
- 将SQL Server远程服务器的数据库备份到目标机(转)
- smartforms思考
- 对MarshalByRefObject的解释
- Oracle数据库的访问
- 博客
- 转载-C++多线程调试和测试的注意事项
- java调用带输出参数的存储过程
- C/C++ 组合问题
- oracle 检查被锁的表及解锁