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,关闭目录的共享