数据库远程备份

 

如果 xp_cmdshell 不能执行,请开启

xp_cmdshell 扩展存储过程将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出。由于xp_cmdshell 可以执行任何操作系统命令,所以一旦SQL Server管理员帐号(如sa)被攻破,那么攻击者就可以利用xp_cmdshell 在SQL Server中执行操作系统命令,如:创建系统管理员,也就意味着系统的最高权限已在别人的掌控之中。由于存在安全隐患,所以在SQL Server 2005中, xp_cmdshell 默认是关闭的。 
  两种方式启用xp_cmdshell 
  1.打开外围应用配置器—> 
  功能的外围应用配置器—> 
  实例名Database Enginexp_cmdshell—> 
  启用 
  2.sp_configure 
  -- 允许配置高级选项 
  EXEC sp_configure 'show advanced options', 1 
  GO 
  -- 重新配置 
  RECONFIGURE 
  GO 
  -- 启用xp_cmdshell 
  EXEC sp_configure 'xp_cmdshell', 0 
  GO 
  --重新配置 
  RECONFIGURE 
  GO 
  --执行想要的xp_cmdshell语句 
  Exec xp_cmdshell 'query user' 
  GO 
  --用完后,要记得将xp_cmdshell禁用(从安全角度安全考虑) 
  -- 允许配置高级选项 
  EXEC sp_configure 'show advanced options', 1 
  GO 
  -- 重新配置 
  RECONFIGURE 
  GO 
  -- 禁用xp_cmdshell 
  EXEC sp_configure 'xp_cmdshell', 1 
  GO 
  --重新配置 
  RECONFIGURE 

 

-- 创建网络映射(Y是盘符;IP地址后面要带共享文件夹的名称;aaa 这个文件夹要给设上everone的权限    password是密码,双引号引起;account是远程电脑的登录名)就是登录服务器的账号 就是192.168.1.102 的账号密码
exec master..xp_cmdshell 'net use Y: \\192.168.1.102\aaa "bao" /user:192.168.1.102\work2'

-- 按日期时间做文件名(注意路径中的文件夹,需要先建立好)
declare @filename varchar(200)
select @filename = 'Y:\' + replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ','-'),':','') + '.bak'


-- 执行备份(DB是要备份的数据库名称)
--print @filename
backup database [数据库名字] to disk = @filename

-- 删除网络映射(Y是盘符,同上) exec master..xp_cmdshell 'net use Y: /delete'

相关文章
相关标签/搜索