MSSQL2005远程备份数据库 收藏
原理:添加网络驱动器映射,将备份文件备份到远程目标,最后删除网络驱动器映射。
xp_cmdshell 扩展存储过程将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出。由于xp_cmdshell 可以执行任何操作系统命令,所以一旦SQL Server管理员帐号(如sa)被攻破,那么攻击者就可以利用xp_cmdshell 在SQL Server中执行操作系统命令,如:创建系统管理员,也就意味着系统的最高权限已在别人的掌控之中。由于存在安全隐患,所以在SQL Server 2005中, xp_cmdshell 默认是关闭的。
sp_configure存储过程用于显示或更改当前服务器的全局配置设置。
操作步骤:
1.执行net share sharename=driver:\directory /unlimited,共享目录
2.将下面的文本保存在RemoteBackup.sql中,修改相应的目录及数据库名称
--打开高级设置
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
--打开xp_cmdshell扩展存储过程
EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE
declare @strdirname varchar(100) --目标文件名称
declare @RemotePathstr varchar(100) --远程路径名
declare @LocalPathstr varchar(100) --本机路径名
declare @DBName varchar(100) --待备份数据库名称
set @DBName='DutySystem'
--设置待备份数据库名称
set @strdirname=@DBName+replace(substring(convert(varchar(20),getdate(),120),1,10),'-','')
--设置备份文件名
set @RemotePathstr = 'z:\'+@strdirname+'.bak' --设置远程备份保存目标
--添加网络驱动器映射
exec master..xp_cmdshell 'net use z: \\备份机ip\文件夹名(或盘符$) "password" /user:备份机ip\登录身份(得拥有备份路径的写权限)'
--实施备份
backup database @DBName to disk=@RemotePathstr
--删除映射
exec master..xp_cmdshell 'net use z: /delete'
--关闭xp_cmdshell扩展存储过程、高级设置
EXEC sp_configure 'xp_cmdshell', 0
RECONFIGURE
EXEC sp_configure 'show advanced options', 0
RECONFIGURE
3.执行sqlcmd -S MSSQL服务器\实例名,1433 -P 登陆名 -U 密码 -D master -i 路径\RemoteBackup.sql
4.net share backup /del,关闭目录的共享