当前位置:首页 » 编程语言 » sqlserver数据库备份与还原

sqlserver数据库备份与还原

发布时间: 2022-03-12 11:55:51

1. sqlserver数据库几种备份方法

数据库备份可以分为4个备份类型。

l 全备份:创建备份完成时数据库内存在的数据的副本。

l 差异备份:只记录自上次数据库备份后发生更改的数据。差异数据库备份比数据库备份小,而且备份速度快,因此可以更经常地备份,经常备份将减少丢失数据的危险。

l 日志备份:是自上次备份事务日志后对数据库执行的所有事务的一系列记录。可以使用事务日志备份将数据库恢复到特定的即时点(如输入多余数据前的那一点)或恢复到故障点。

l 文件组备份:可以备份和还原数据库中的个别文件。可以只还原已损坏的文件,而不用还原数据库的其余部分,从而加快了恢复速度。

不同的备份类型适用的范围也不同。全备份,可以只用一步操作完成数据的全部备份,但执行时间比较长。差异备份和日志备份,都不能独立作为一个备份集来使用,需要进行一次全备份。文件备份必须与事务日志备份一起使用,所以文件备份只适用于完全恢复模型和大容量日志记录恢复模型。

每一种备份类型都有不足之处,要针对需要选择备份类型,或者使用几种备份方式的配合来完成数据库的备份。

经常使用备份方式组合有以下几种:

l 全备份+差异备份:以一周为周期,星期日进行全备份,星期一到星期六每天进行差异备份。

l 全备份+日志备份:以一周为周期,星期日进行全备份,星期一到星期六每天进行日志备份。

l 文件组备份+日志备份:备份周期取决于数据库的大小和能力,每周期分别进行一部分数据文件备份,每天进行日志备份。

2. 数据库备份与还原功能的实现

传统方法用SQL Server作数据库后台时,一般采用手工的方式利用SQL Server自身提供的可视化工具或SQL语言进行数据的备份还原功能(余正涛等,2003),但是由于SQL Server 的复杂性,操作比较繁琐,就使得普通用户对数据的备份与还原有一定的困难,并且容易造成错误,可能造成数据丢失等灾难性的后果。考虑到系统完整性和可靠性,可在VB 6.0环境下实现SQL Server数据库的备份与还原工作。

(一)实现思路

为了通过程序实现数据库备份与还原工作,必须在VB环境下引用SQLDMO,SQLDMO(SQL Distributed Management Objects,SQL 分布式管理对象)封装了Microsoft SQL Server数据库中的对象。SQLDMO是Microsoft SQL Server中企业管理器所使用的应用程序接口(包括备份和恢复),允许用支持自动化或COM 的语言编写应用程序。SQLDMO 对象来自SQLDMO.dll,SQLDMO.dll 是随 SQL Server 2000 一起发布的。并通过CreateObject("SQLD MO.SQLServer")函数创建新对象,使用SQLServ er.Connect函数经密码校验可连接服务器,再创建备份核心对象SQLDMO.Backup,同时指定备份文件等参数即可实现数据库备份与还原。具体的备份处理流程如图8-10所示。

特别注意SQL Server 2000 所安装的硬盘分区格式是否是NTFS格式,NTFS是最适合安装SQL Serv⁃er的文件系统。它比FAT文件系统更稳定且更容易恢复。而且它还包括一些安全选项,例如文件和目录ACL,以及文件加密(EFS)。如果是Fat32格式建议将它改成NTFS格式,因为Fat32支持最大文件为4G,数据库超过4G通常会提示日志文件太大之类的错误。

图8-10 数据库备份处理流程图

(二)关键代码

'************数据库备份操作*************

Set gSQLServer=getSQLServer(ServerName,UserName,password)

Private Function BackUpData(gDatabaseName As String,gBkupRstrFileName As String,Server⁃Name As String,UserName As String,password As String)As String

On Error GoTo ErrHandler:

Dim oBackup As SQLDMO.Backup

Dim gSQLServer As SQLDMO.SQLServer

Set tprg=New CProgress

tprg.Title ="正在执行数据库备份......"

ServerName为服务器名称;serName为用户名;password为超级密码

'连接服务器

Set oBackup=New SQLDMO.Backup

Set oBackupEvent=oBackup

gDatabaseName为所要备份数据名称;gBkupRstrFileName为备份文件名

oBackup.Database=gDatabaseName

oBackup.Files=gBkupRstrFileName

已存在gBkupRstrFileName备份文件名,则覆盖

If Len(Dir(gBkupRstrFileName))>0 Then

Kill(gBkupRstrFileName)

End If

oBackup.PercentCompleteNotification=1

Screen.MousePointer=vbHourglass

oBackup.SQLBackup gSQLServer

DoEvents

Screen.MousePointer=vbDefault

'清空内存、关闭连接

Set oBackupEvent=Nothing

Set oBackup=Nothing

gSQLServer.Close

Set gSQLServer=Nothing

Set tprg=Nothing

Exit Function

ErrHandler:

m_str状态=Err.Description

Resume Next

Set tprg=Nothing

End Function

'************数据库还原操作*************

Private Function RestoreData(gDatabaseName As String,gBkupRstrFileName As String,Server⁃Name As String,UserName As String,password As String)As String

On Error GoTo ErrHandler:

Dim oRestore As SQLDMO.Restore

Dim msg As String

Dim Response As String

Set tprg=New CProgress

tprg.Title ="正在执行数据库还原......"

Dim gSQLServer As SQLDMO.SQLServer

'ServerName为服务器名称;serName为用户名;password为超级密码

'连接服务器

Set gSQLServer=getSQLServer(ServerName,UserName,password)

Set oRestore=New SQLDMO.Restore

Set oRestoreEvent=oRestore

'gDatabaseName为所要还原数据名称;gBkupRstrFileName为还原文件名

oRestore.Database=gDatabaseName

oRestore.Files=gBkupRstrFileName

Screen.MousePointer=vbHourglass

oRestore.PercentCompleteNotification=1

oRestore.SQLRestore gSQLServer

Screen.MousePointer=vbDefault

'清空内存、关闭连接

Set oRestoreEvent=Nothing

Set oRestore=Nothing

gSQLServer.Close

Set gSQLServer=Nothing

Set tprg=Nothing

Exit Function

ErrHandler:

m_str状态=Err.Description

Resume Next

Set tprg=Nothing

End Function

'************显示备份进度*************

'************显示还原进度*************

End Sub

Private Sub oBackupEvent_PercentComplete(ByVal Message As String,ByVal Percent As Long)

DoEvents

tprg.Value=Percent

End Sub

Private Sub oRestoreEvent_PercentComplete(ByVal Message As String,ByVal Percent As Long)

DoEvents

tprg.Value=Percent

3. SqlServer数据库备份的数据库可以还原到MySQL数据库吗

SQL语句备份和恢复
SQL Server:
备份命令:
BACKUP DATABASE test
TO disk = 'c:\test'
WITH FORMAT,
NAME = 'Full Backup of MyNwind'

4. 如何设置将SQL SERVER2012数据库备份还原到SQL SERVER2008上

我试过了,貌似不行 ,即使把2012的数据库兼容模式降到2008或者更低,低版本的SQLServer也没法解析2012的数据库的备份

只有高版本sqlserver识别低版本的数据库文件\备份

当然如果你不要表内数据或者数据少
你可以生成数据库脚本到 2008去用这个脚本创建整个数据库架构,然后再手动将需要的数据导入

5. 重装系统后SQLserver备份的数据库怎么还原

你是在数据库上备份的,还是直接复制了mdf文件?要是直接复制了mdf文件就打开企业管理器,在数据库上右键→所有任务→附加数据库要是在数据库上直接选所有任务备份的数据库,就打开企业管理器,在数据库上右键→所有任务→还原数据库</a>

6. 请问sqlserver数据库恢复怎么办,从一台机器上备份数据库传到另一台机器上 还原数据库总是出错,

你可能机器上装有多实例,05实例及08实例,而你一直用ssms启动的05实例
查看一下配置管理器,看看sqlserver(xxx)这样的服务有几个,不计express版的那些
然后尝试用.\括号中的名称,例如sqlserver(mssql)-》登录时服务器名用.\mssql
登录后查看版本

7. SqlServer2005怎样备份,还原

你好,SqlServer2005备份和还原方式可以通过以下两种方式解决:
1、手动的话直接在SQL Server管理器里选中要备份的数据库,按鼠标右键,选所有任务->备份数据库就可以了,还原也是这样操作
2、如果需要专业备份服务的话,可以用多备份来备份SqlServer数据库,实现全自动操作,不担心数据会丢失

热点内容
数控车床编程加工 发布:2025-01-15 14:31:43 浏览:714
怎么破解iphone5密码 发布:2025-01-15 14:26:48 浏览:434
php数组打印 发布:2025-01-15 14:15:56 浏览:621
java流的关闭 发布:2025-01-15 14:15:55 浏览:755
东东农场自动脚本 发布:2025-01-15 14:10:05 浏览:390
apache禁止访问文件 发布:2025-01-15 14:01:55 浏览:442
速腾哪个配置动力最好 发布:2025-01-15 13:56:44 浏览:902
编程做转盘 发布:2025-01-15 13:56:04 浏览:194
安卓辅助脚本如何写 发布:2025-01-15 13:42:50 浏览:127
压缩裤的穿法 发布:2025-01-15 13:39:24 浏览:316