如何备份本地数据库到另一个电脑(限局域网)

其实,我这种方法也是百度搜的,然而核心思想是,在远程电脑上建立一个共享文件夹,然后数据库备份的时候直接备份到那个共享文件夹里

 

不过通过这个例子,可以学习到:

1、 局域网电脑共享文件夹。

2、 SQLserver如何创建维护作业、维护计划

3、 netuse 命令的使用,包括远程建立连接等等,还顺便学习了dos几个命令

 

 

列出我做这个例子,用到的所有的参考网址,写下的即为用到的:

(1)win7建立局域网共享

http://jingyan.baidu.com/article/fec7a1e53efe621190b4e7ae.html

 

(2)(网络共享无法访问)提示指定的网络密码不正确

http://blog.163.com/plawsh@126/blog/static/16292592720125129437273/

用的是win7系统,其它的应该差不多

解决方法

开始-运行-gpedit,打开组策略,计算机配置—Windows设置—安全设置—本地策略—安全选项,来到“网络安全:LAN管理器身份验证级别”,双击打开,把它设置成“发送 LM和 NTLM 响应”。

如果是Home版的话,方法是:打开注册表,把HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa右边的LmCompatibilityLevel键值改成1。如果还不能访问就更新一下组策略在命令提示符中输入 gpupdate 回车

 

(3)核心参考***如何远程备份数据库****,其他的都是围绕这个产生的步骤或问题

http://wenku.baidu.com/view/1c0405d328ea81c758f57882.html (主)

http://blog.itpub.net/9537053/viewspace-722211/ (辅)

(辅)

 

(4)步骤(3)中的数据库维护计划建立过程

http://wenku.baidu.com/view/01faa5fe700abb68a982fbfe.html

 

(5)步骤(3)中的net use命令使用

http://www.360doc.com/content/10/0822/01/2079984_47828491.shtml

http://www.blogjava.net/zhaijianhui/archive/2009/05/19/271432.html 这人写的很详细,有我用到的

 

(6)步骤(3)中的Exec master..xp_cmdshell用法


http://blog.sina.com.cn/s/blog_55fbe05c01008gho.html

,提示错误1312时候看这个网址




我最终总结的几个核心的语句,不同地方的写法:

1.1建立链接在dos下写法,4种,自己比较,图片可放大:



1.2建立链接在,Sqlserver查询分析器里的写法:

结果就是前2种写法不行,后2种写法行


3建立链接在存储过程中的写法:







核心2:建立远程映射和拷贝文件

http://blog.itpub.net/9537053/viewspace-722211/ 参考这个人的


2.1这里就写下,sql查询分析器的写法吧~



execMaster..xp_cmdshell 'net use * /d /y'---删除旧链接
execMaster..xp_cmdshell 'net use H: \\192.168.1.199\111 /user:192.168.1.199\Administratorp@xxl'-----建立199\111共享文件夹映射成本机H盘,Administrator用户名,xxl电脑密码
execMaster..xp_cmdshell 'copy d:\database\TUONENGGYM_db_2016-01-15-16-03-14.BAKh:\'----拷贝本地的d盘下的文件到映射的h盘
execMaster..xp_cmdshell 'net use * /d /y'----删除映射的h盘



废话不多说,下面写下,我工作的步骤:

我电脑ip:192.168.1.110,win7,Sqlserver2000

远程电脑ip:192.168.1.199 ,win7,用户名:administrator,电脑密码:xxl


1、在199上建立共享文件夹

这NM就不罗嗦了,直接在他电脑d盘新建111文件夹,右击共享。

共享的时候添加Guest 或 Everyone用户,完成。

注意:这地方设置一下





2、在master数据库中创建存储过程名为Bakup_DataBase

内容如下:


 

CREATE procbakup_DataBase
as 
Declare @strPswvarchar(50)
Declare @strUsrvarchar(50)
Declare@strCmdShell varchar(300)
Declare@strDataBaseName varchar(20)
Declare@FullFileName Varchar(200) 
Declare @FileFlagvarchar(50) 
Declare @FileFlag2varchar(50) 
Declare @ToFileNamevarchar(200) 
Declare@ToFileName2 varchar(200) 
Declare @SQLStrvarchar(500)
Declare @SQLStr2varchar(500)
Declare @SQLStr3varchar(500)
Declare @FlagDelvarchar(20)
Declare @SQLDelnetvarchar(50)
Declare @SQLNetConvarchar(500)
Declare @SQLCopyvarchar(500)
Declare @addDBNamevarchar(500)
Declare @delDBNamevarchar(500)
Declare @delDBName2varchar(500)
Declare @ToFilePathvarchar(500)
Declare @strDiskvarchar(50)
 
Set@strDataBaseName='TUONENGGYM'--填写数据库名称(如:Soondy)
Set @addDBName=@strDataBaseName+ '_db_' + replace(replace(convert(char(20),getdate(),20),':','-'),' ','-') --备份的文件命名规则:yyyy-mm-dd hh:mi:ss(24小时制).bak
Set@delDBName=@strDataBaseName + '_db_' +replace(replace(convert(char(20),getdate()-7,23),':','-'),' ','-')     --7天前的文件命名规则:yyyy-mm-dd.bak
Set@ToFilePath='H:\'+@addDBName+'.BAK'
 
Set@FlagDel='True'--填写True表示删除备份文件,填写False或其他字符表示保留该文件
 
 
Set@strUsr='Administrator'
Set @strPsw='xxl'
Set @strDisk='H:'
---------------'netuse H: \\192.168.1.199\111 /user:192.168.1.199\Administrator p@xxl'
Set @SQLNetCon='netuse H: \\192.168.1.199\111 /user:192.168.1.199\Administrator p@xxl'

注意:现场应用时是win2003电脑2台都是,然后多次测试与网上查找原因发现,上面那语句不行(但在win7之间测的是没问题的,语句改成如下方式,可以了,不然一直提示错误1326用户名和密码错误)

--exec Master..xp_cmdshell 'net use H: \\192.168.1.199\111建立新映射,把199\111文件夹映射成本地H盘

 



--Set@SQLNetCon='net use '+@strDisk+' \\192.168.1.199\111/user:192.168.1.199\'+@strUsr+' p@'+@strPsw
Set @delDBName2 ='del ' + 'H:\'+ @delDBName+ '*.BAK'
 
execMaster..xp_cmdshell 'net use * /d /y'--删除旧链接
--execMaster..xp_cmdshell 'net use H: \\192.168.1.199\111/user:192.168.1.199\Administrator p@xxl'--建立新映射,把199\111文件夹映射成本地H盘
execMaster..xp_cmdshell  @SQLNetCon-- 'netuse H: \\192.168.1.199\111 /user:192.168.1.199\Administrator p@xxl'
 
 
--BackUpDataBase  @strDataBaseName  To Disk=  'H:\GYM20160115.BAK'  with init    --备份数据库
BackUpDataBase  @strDataBaseName  To Disk= @ToFilePath  with init   --备份数据库到映射的H盘
if (@FlagDel ='True')exec master.. xp_cmdshell @delDBName2--执行删除本地的备份临时文件
 
execMaster..xp_cmdshell 'net use * /d /y'--删除链接
GO

 

给个图片参照下:

 

 

3、打开SQL Server 企业管理器,在指定需要备份的数据库上面,创建一个维护计划。可按需要设定将来运行这个维护计划的时间/周期。

具体内容,各个步骤看图操作:

 

 

1、 完成了。

可以双击这个作业进行备份测试,也可以等时间到了测试。