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資料庫,實現全自動操作,不擔心數據會丟失