cnblogs/dcrenl/SQL远程备份.html
2024-09-24 12:43:01 +08:00

73 lines
3.5 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div id="sina_keyword_ad_area2" class="articalContent ">
<div>set ANSI_NULLS ON</div>
<div>set QUOTED_IDENTIFIER ON</div>
<div>go</div>
<div>&nbsp;</div>
<div>-- =============================================</div>
<div>-- Author: dcrenl</div>
<div>-- Create date: 2013-9-5 9:54:46</div>
<div>-- Description: WEB服务器远程备份数据库,</div>
<div>--此方法需要打开WEB服务器的共享功能.</div>
<div>--验证方法同一局域网其它机器里在运行里输入 \\IP\C$ 要求输入用户名和密码,如果可以访问此方法有效</div>
<div>--</div>
<div>--异地备份还有很多种方法</div>
<div>--1.将数据库备份完之后在数据库服务上创建一个库,添加表,创建一个Image类型字段,</div>
<div>--
然后使用sp_textcopy把备份文件写入数据库,再从WEB服务器将备份文件读取出来,不过此方法读取出来的备份文件有可能会损坏</div>
<div>--2.在WEB服务器安装SQL Server 使用SQLDMOInterop.SQLDMO.dll</div>
<div>--Microsoft.SqlServer.ConnectionInfo.dll 、
Microsoft.SqlServer.Management.Sdk.Sfc.dll</div>
<div>--以上两个DLL文件位置Program Files\Microsoft SQL
Server\100\SDK\Assemblies</div>
<div>--生成数据库表、存储过程和函数等脚本然后在WEB服务上的SQL Server上创建数据库</div>
<div>--使用生成的脚本创建表等然后将数据Insert到WEB服务器上的数据库进行备份</div>
<div>-- =============================================</div>
<div>CREATE PROCEDURE [dbo].[RemoteBack]</div>
<div>@DataDisk nvarchar(max),--需要在数据库服务器上映射的盘符</div>
<div>@WEBAddr nvarchar(max),--WEB服务器地址</div>
<div>@WEBDisk nvarchar(max),--WEB服务器共享目录(例如:D$ 或 C$\Windows)</div>
<div>@Password nvarchar(max),--WEB服务器密码</div>
<div>@UserName nvarchar(max),--WEB服务器用户名</div>
<div>@DataName nvarchar(max)--需要备份的数据库名</div>
<div>AS</div>
<div>BEGIN</div>
<div>SET NOCOUNT ON;</div>
<div>--设置日期时间串</div>
<div>DECLARE &nbsp;@DateTime DateTime</div>
<div>set @DateTime = getdate()</div>
<div>DECLARE @FileTime nvarchar(max)</div>
<div>set @FileTime = convert(nvarchar(50), year(@DateTime)) +
right(cast(month(@DateTime)+100 as varchar),2) +
right(cast(day(@DateTime)+100 as varchar),2) +
right(cast(DateName(hour,GetDate())+100 as varchar),2) +
right(cast(DateName(minute,GetDate())+100 as varchar),2) +
right(cast(DateName(second,GetDate())+100 as varchar),2)</div>
<div>&nbsp;</div>
<div>--打开高级设置</div>
<div>exec sp_configure 'show advanced options',1</div>
<div>reconfigure</div>
<div>--开启xp_cmdshell</div>
<div>exec sp_configure 'xp_cmdshell',1</div>
<div>reconfigure</div>
<div>--将WEB服务器路径映射到数据库服务器</div>
<div>exec ('master..xp_cmdshell ''net use ' + @DataDisk + ': \\' +
@WEBAddr + '\' + @WEBDisk + ' "' + @Password + '" /user:' +
@WEBAddr + '\' + @UserName + '''')</div>
<div>--开始备份并复制到WEB服务器映射到SQL服务上的路径</div>
<div>exec('backup database ' + @DataName + ' to
disk='''+@DataDisk+':\' + @DataName +'_'+ @FileTime +'.bak'' with
init')</div>
<div>&nbsp;</div>
<div>--关闭映射路径</div>
<div>exec ('master..xp_cmdshell ''net use ' + @DataDisk + ':
/delete''')</div>
<div>--关闭xp_cmdshell</div>
<div>exec sp_configure 'xp_cmdshell',0</div>
<div>reconfigure</div>
<div>--关闭高级设置</div>
<div>exec sp_configure 'show advanced options',0</div>
<div>reconfigure</div>
<div>END</div>
</div>
<p>&nbsp;</p>