如何将sql数据库备份到本地
来源:百度文库 编辑:神马文学网 时间:2024/06/05 01:51:09
---备份的时候,在SQL中做映射
--1.映射
exec master..xp_cmdshell 'net use z: \\xz\c$ " " /user:xz\administrator '
/*--说明:
z: 是映射网络路径对应本机的盘符,与下面的备份对应
\\xz\c$ 是要映射的网络路径
xz\administrator xz是远程的计算机名,administrator是登陆的用户名
--*/
--2.进行数据库备份
backup database 数据库名 to disk= 'z:\备份文件名 '
--3.备份完成后删除映射
exec master..xp_cmdshell 'net use z: /delete '
-------------------------------
"master..xp_cmdshell 'net use \\ "+uo_3.of_ComputerName()+ "\c$ "+ls_syspassword+ " /user: "+uo_3.of_ComputerName()+ "\ "+uo_3.of_getloginid()+ " ' "
这是我的一个例子,uo_3.of_ComputerName()得到本地计算机名,ls_syspassword本机密码
uo_3.of_getloginid()系统用户
本段代码用于在客户端把服务器数据备份到本地
------------------------------
转:
/*************** http://www.csdn.net/develop/article/21/21304.shtm
标题 使用SQLSERVER的扩展存储过程实现远程备份与恢复 happy_david(原作)
最近我在为公司的框架程序(以数据应用为导向的应用体系)做数据管理模块,这个模块的需求比较简单:备份、恢复和清理日志。我公司的软件基本上以C/S为基本架构,所以数据管理模块中两个主要的功能‘备份与恢复’都可能会在Client端操作,备份与恢复’的文件也都有可能存储在client端,因而这个数据管理模块就必须能够实现在远程备份与恢复数据库。
文章的前提阐述完了,就该说说如何具体实现吧。其实都很简单,我想写个远程备份的测试实例
给大家看,就能够很清楚的描述吧!
实例说明:
环境:win2k+sqlserver 2K+查询分析器
SQLSERVER服务实例名称:mainserver
需要备份的数据库名称: msdb
本地机器名称(Client端):david
本地用户:zf 密码:123
本地域名:domain
本地提供备份需求的文件夹:e:\test
第一步: 建立共享文件夹
在程序代码中调用(或者CMD窗口) net share test=e:\test
或者用NetShareAdd这个API
简要说明:
net share : 是WINDOWS内部的网络命令。
作用:建立本地的共享资源,显示当前计算机的共享资源信息。
语法:参见 net share /?
第二步: 建立共享信用关系
master..xp_cmdshell 'net use \\david\test 123 /user:domain\zf '
简要说明:
1:xp_cmdshell :是SQLSERVER的扩展存储过程。
作用,以操作系统命令行解释器的方式执行给定的命令字符串,
并以文本行方式返回任何输出。
语法:参见SQLSERVER联机帮助
2:net use : 是WINDOWS内部的网络命令。
作用,将计算机与共享资源连接或断开,或者显示关于计算机
连接的信息。该命令还控制持久网络连接。
语法:参见 net use /?
第三步:备份数据库
backup database msdb to disk= '\\david\test\msdb.bak '
这个不需要说明吧,语法参见SQLSERVER联机帮助
第四步: 删除共享文件夹
在程序代码中调用(或者CMD窗口) net share test /delete
或者用NetShareDel这个API
结果:
已处理 1376 页,这些页属于数据库 'msdb ' 的文件 'MSDBData '(位于文件 1 上)。
已处理 1 页,这些页属于数据库 'msdb ' 的文件 'MSDBLog '(位于文件 1 上)。
BACKUP DATABASE 操作成功地处理了 1377 页,花费了 3.653 秒(3.086 MB/秒)。
这样mainserver服务器上的msdb就备份到了david机器的E:\test\msdb.bak文件了,使用起来很简单吧?恢复数据库操作也是一样,只要将第三个步骤的语句改为 'restore database msdb from disk= '\\david\test\msdb.bak '就可以啦。。你看完了也可以试试呀?!(最简单的测试工具查询分析器+CMD窗口)
备注:xp_cmdshell 这个扩展存储过程只能SA级别的用户调用,而且是SQLSERVER的安全隐患之
一,许多DBA都喜欢将其删除或者禁用,所以开发人员使用时要倍加小心哦。
文章中的例子只是简要的说明了应如何利用扩展存储过程实现远程备份与恢复,没有涉及安全以及其他方面的考虑,希望读者在代码中自行完善。
/**************************************************
SQL异地备份失败,归根结底是权限问题!!!
如:
SQLServer备到FileServer上
那你的SQLServer的启动用户必须在FileServer上有足够的权限!
--------------------^^^---------------------------------
1、SQLServer上新建一SQLUser用户权限大一点。
2、FileServer上建同一用户对某一文件夹有足够权限。
3、两机的SQLUser密码相同(方便一点)
4、将SQLServer改为SQLUser启动
(管理工具--> 服务--> mssql项--> 属性--> 指定用户及密码)
5、\\192.168.*.*\文件夹\ShareBak.Bak就可以了
-----------------------------------------------------------
简单一点就是:
如果你两台都是windows2ks
你的机器也用同样的Administrator密码,且sql服务器用administrator启动
那你写设备时就可以写:\\ip\.......
如果对方是98那你要完全共享一下!
你写设备时就可以写:\\ip\.......
------
我用的一个例子:
/*
备份数据库:
@DatabaseName 需备份的数据库名
@Path 备份文件存放路径,可以是本机路径或网络上的路径(需完全共享)
Usage:
Exec myBack 'DB_ERP01 ', '\\HSQL\PSQLBack '
*/
ALTER proc myBack @DatabaseName varchar(20),@Path varchar(20)
As
declare @fn varchar(100),@sql varchar(200)
set @fn = @Path +(case when right(@Path,1) <> '\ ' then '\ ' else ' ' end)
+@DatabaseName+ '_ '
+convert(char(8),getdate(),112)+ '_ '
+replace(convert(char(8),getdate(),108), ': ', ' ')
+ '.bak '
set @sql = 'backup database '+@DatabaseName + ' to disk = ' ' ' + @fn + ' ' ' '
exec(@sql)
--1.映射
exec master..xp_cmdshell 'net use z: \\xz\c$ " " /user:xz\administrator '
/*--说明:
z: 是映射网络路径对应本机的盘符,与下面的备份对应
\\xz\c$ 是要映射的网络路径
xz\administrator xz是远程的计算机名,administrator是登陆的用户名
--*/
--2.进行数据库备份
backup database 数据库名 to disk= 'z:\备份文件名 '
--3.备份完成后删除映射
exec master..xp_cmdshell 'net use z: /delete '
-------------------------------
"master..xp_cmdshell 'net use \\ "+uo_3.of_ComputerName()+ "\c$ "+ls_syspassword+ " /user: "+uo_3.of_ComputerName()+ "\ "+uo_3.of_getloginid()+ " ' "
这是我的一个例子,uo_3.of_ComputerName()得到本地计算机名,ls_syspassword本机密码
uo_3.of_getloginid()系统用户
本段代码用于在客户端把服务器数据备份到本地
------------------------------
转:
/*************** http://www.csdn.net/develop/article/21/21304.shtm
标题 使用SQLSERVER的扩展存储过程实现远程备份与恢复 happy_david(原作)
最近我在为公司的框架程序(以数据应用为导向的应用体系)做数据管理模块,这个模块的需求比较简单:备份、恢复和清理日志。我公司的软件基本上以C/S为基本架构,所以数据管理模块中两个主要的功能‘备份与恢复’都可能会在Client端操作,备份与恢复’的文件也都有可能存储在client端,因而这个数据管理模块就必须能够实现在远程备份与恢复数据库。
文章的前提阐述完了,就该说说如何具体实现吧。其实都很简单,我想写个远程备份的测试实例
给大家看,就能够很清楚的描述吧!
实例说明:
环境:win2k+sqlserver 2K+查询分析器
SQLSERVER服务实例名称:mainserver
需要备份的数据库名称: msdb
本地机器名称(Client端):david
本地用户:zf 密码:123
本地域名:domain
本地提供备份需求的文件夹:e:\test
第一步: 建立共享文件夹
在程序代码中调用(或者CMD窗口) net share test=e:\test
或者用NetShareAdd这个API
简要说明:
net share : 是WINDOWS内部的网络命令。
作用:建立本地的共享资源,显示当前计算机的共享资源信息。
语法:参见 net share /?
第二步: 建立共享信用关系
master..xp_cmdshell 'net use \\david\test 123 /user:domain\zf '
简要说明:
1:xp_cmdshell :是SQLSERVER的扩展存储过程。
作用,以操作系统命令行解释器的方式执行给定的命令字符串,
并以文本行方式返回任何输出。
语法:参见SQLSERVER联机帮助
2:net use : 是WINDOWS内部的网络命令。
作用,将计算机与共享资源连接或断开,或者显示关于计算机
连接的信息。该命令还控制持久网络连接。
语法:参见 net use /?
第三步:备份数据库
backup database msdb to disk= '\\david\test\msdb.bak '
这个不需要说明吧,语法参见SQLSERVER联机帮助
第四步: 删除共享文件夹
在程序代码中调用(或者CMD窗口) net share test /delete
或者用NetShareDel这个API
结果:
已处理 1376 页,这些页属于数据库 'msdb ' 的文件 'MSDBData '(位于文件 1 上)。
已处理 1 页,这些页属于数据库 'msdb ' 的文件 'MSDBLog '(位于文件 1 上)。
BACKUP DATABASE 操作成功地处理了 1377 页,花费了 3.653 秒(3.086 MB/秒)。
这样mainserver服务器上的msdb就备份到了david机器的E:\test\msdb.bak文件了,使用起来很简单吧?恢复数据库操作也是一样,只要将第三个步骤的语句改为 'restore database msdb from disk= '\\david\test\msdb.bak '就可以啦。。你看完了也可以试试呀?!(最简单的测试工具查询分析器+CMD窗口)
备注:xp_cmdshell 这个扩展存储过程只能SA级别的用户调用,而且是SQLSERVER的安全隐患之
一,许多DBA都喜欢将其删除或者禁用,所以开发人员使用时要倍加小心哦。
文章中的例子只是简要的说明了应如何利用扩展存储过程实现远程备份与恢复,没有涉及安全以及其他方面的考虑,希望读者在代码中自行完善。
/**************************************************
SQL异地备份失败,归根结底是权限问题!!!
如:
SQLServer备到FileServer上
那你的SQLServer的启动用户必须在FileServer上有足够的权限!
--------------------^^^---------------------------------
1、SQLServer上新建一SQLUser用户权限大一点。
2、FileServer上建同一用户对某一文件夹有足够权限。
3、两机的SQLUser密码相同(方便一点)
4、将SQLServer改为SQLUser启动
(管理工具--> 服务--> mssql项--> 属性--> 指定用户及密码)
5、\\192.168.*.*\文件夹\ShareBak.Bak就可以了
-----------------------------------------------------------
简单一点就是:
如果你两台都是windows2ks
你的机器也用同样的Administrator密码,且sql服务器用administrator启动
那你写设备时就可以写:\\ip\.......
如果对方是98那你要完全共享一下!
你写设备时就可以写:\\ip\.......
------
我用的一个例子:
/*
备份数据库:
@DatabaseName 需备份的数据库名
@Path 备份文件存放路径,可以是本机路径或网络上的路径(需完全共享)
Usage:
Exec myBack 'DB_ERP01 ', '\\HSQL\PSQLBack '
*/
ALTER proc myBack @DatabaseName varchar(20),@Path varchar(20)
As
declare @fn varchar(100),@sql varchar(200)
set @fn = @Path +(case when right(@Path,1) <> '\ ' then '\ ' else ' ' end)
+@DatabaseName+ '_ '
+convert(char(8),getdate(),112)+ '_ '
+replace(convert(char(8),getdate(),108), ': ', ' ')
+ '.bak '
set @sql = 'backup database '+@DatabaseName + ' to disk = ' ' ' + @fn + ' ' ' '
exec(@sql)
如何将sql数据库备份到本地
将Access数据库移植到SQL Server[摘]
如何用SQL备份和还原数据库
用Sql Server 2000的数据库备份来还原Sql Server 2005中的数据库...
SQL Server数据库安全备份和恢复策略
用VB备份和恢复SQL Server数据库的方法
Sql server数据库备份的三个恢复模型
数据库备份
C#连接本地和远程数据库SQL和Access的字符串 - 梦在贝加尔湖 - 博客园
SQL Server 2000数据库备份恢复语句 _51CTO技术论坛_中国领先的IT技术...
MS SQL server 2005(SQL2005)在查询分析器里面备份 数据库的语句
如何使用FORFILES命令来删除SQL Server备份
asp代码实现EXCEL数据导入到SQL数据库
sharepoint不能访问,如何通过备份数据库恢复sharepoint网站
360浏览器自动备份本地收藏夹到设定的目录的插件
当SQL Server数据库崩溃时如何恢复
如何压缩SQL Server 2005 Compact Edition数据库
如何收缩SQL Server 2005 Compact Edition数据库
如何维护SQL Server 2005 CE数据库(非编程)
如何删除SQL Server 2005 Compact Edition数据库
如何让防火墙与SQL Server数据库共存
sqlserver2005自动备份数据库
关于oracle数据库备份
oracle备份还原数据库