A. sql SERVER2008一直處於還原狀態,怎麼解決
sqlserver2008一直顯示正在還原.
如果不需要還原,則使用: restore database test with recovery
如果只需要還原,則使用: restore database test with norecovery
B. 如何在SQL Server 2008 R2中還原資料庫
參考方法如下:
1.左下角點擊開始,程序,Microsoft SQL Server 2008 R2 ,找到SQL Server Management Studio,進入企業管理器。
2.選擇伺服器\實例名,登錄名選擇sa,輸入sa登錄密碼,點擊連接。
3.進入企業管理器界面,滑鼠右鍵單擊「資料庫」,選擇「新建資料庫」。
4. 輸入資料庫名稱,例如美女資料,然後點擊確定。然後在企業管理器里就會發現多出了一個資料庫「美女資料」
5. 滑鼠右鍵點擊 「美女資料」這個資料庫,選擇「任務」—「還原」—「資料庫」
6. 進入還原資料庫頁面,選擇「源設備」,然後點擊後面的三個小圓點。
7.點擊「添加」。
8.選擇要恢復的BAK文件。
9. 點擊下面的「選擇用於還原的備份集」,把還原下面的方框全部勾選,,然後點擊左側的「選項」
10.在選項的設置里,把「覆蓋現有資料庫」前面的方框勾選,然後點擊下面的「確定」
11.成功完成資料庫的還原,大功告成!
C. sql server 2008還原資料庫資料庫正在使用怎麼還原
正在使用中的,需要先斷開資料庫的外部連接,然後停止使用,才能進行還原操作。
D. SQLServer2008資料庫怎樣備份還原和數據恢復
在完整恢復模式或大容量日誌恢復模式下,必須先備份活動事務日誌(稱為日誌尾部),然後才能在SQLServerManagementStudio中還原資料庫。有關詳細信息,請參閱如何備份事務日誌(SQLServerManagementStudio)。若要還原已加密的資料庫,您必須有權訪問用於加密資料庫的證書或非對稱密鑰。如果沒有證書或非對稱密鑰,資料庫將無法還原。
認識資料庫備份和事務日誌備份
資料庫備份與日誌備份是資料庫維護的日常工作,備份的目的是在於當資料庫出現故障或者遭到破壞時可以根據備份的資料庫及事務日誌文件還原到最近的時間點將損失降到最低點。
資料庫備份
資料庫備份可以手動備份和語句備份
一.手動備份資料庫
1.滑鼠右鍵選擇你要進行備份的資料庫-任務-備份
可以在常規選項頁面你可以選擇備份類型是進行完整資料庫備份還是差異資料庫備份
2.點擊添加選項,選擇資料庫文件的存放路徑
注意文件名記得加後綴.bak,便於恢復時的查找
3.你還可以在選項頁面是追加到現有的備份集,還是覆蓋所有的現有備份集,還可以選擇備份驗證完整性(建議選擇),還可以選擇是否壓縮備份等。
二.語句備份資料庫
use master goBACKUP DATABASE [test] TO DISK = N'D:Microsoft sql serverMSSQL10.MSSQLSERVERMSSQLBackup est.bak' WITH NOFORMAT, NOINIT, NAME = N'test-完整 資料庫 備份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO
資料庫日誌備份
首先需要注意,資料庫日誌的備份是基於資料庫完整備份,也就是說你備份資料庫日誌之前你首先要先對資料庫進行一次完整的備份,因為之間會涉及到堅持到檢查點 lsn, 這也是本文接下來要講的重點。
一.手動備份資料庫日誌
1.右鍵資料庫-任務-備份-選擇備份類型(事務日誌)
2.點添加,添加日誌文件備份存儲路徑
3.同資料庫完整備份一樣,你也可以選擇覆蓋現有備份集或者追加到現有備份集,這里現在覆蓋現有備份集、驗證完整性,然後確認備份
二.語句備份資料庫事務日誌
BACKUP LOG [test] TO DISK = N'D: est.trn' WITH NOFORMAT, INIT, NAME = N'test-事務日誌 備份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO
資料庫還原
右鍵資料庫-還原資料庫-添加需要進行還原的資料庫文件路徑
在還原源選項中你可以選擇『源資料庫』,『源設備』。1.選擇源資料庫工具會自動顯示該資料庫之前的一些備份,然後直接選擇需要還原的資料庫備份集。
2.選擇源設備點擊後面的...,添加需要還原的資料庫文件
2.點擊確認還原資料庫
資料庫恢復
資料庫恢復的前提是1.一個完整的資料庫備份2.包含這個完整資料庫備份的事務日誌備份3.完整備份之間也可以存在數個差異備份
對於資料庫維護空間始終是一個比較頭疼的問題,特別是對於大型資料庫而言,每天的日誌文件增長是龐大的,很多資料庫管理員會定時對資料庫日誌文件進行收縮,但是經常收縮會存在收縮完日誌文件還是不能減少,這是因為存在很多活動的日誌無法收縮可以用
DBCC LOGINFO('資料庫名稱')
我們看到
status=0的日誌,代表已經備份到磁碟的日誌文件;而
status=2的日誌還沒有備份。當我們收縮日誌文件時,收縮掉的空
間其實就是
status=0的空間,如果日誌物理文件無法減小,這里一
定能看到非常多status=2的記錄
解決辦法:1.可以分離要收縮的資料庫,然後手動刪除日誌文件,然後附加資料庫,資料庫就會產生一個很小的日誌文件(不推薦使用這種方法)
2.右鍵要出來的資料庫選擇「屬性」-"選項",將恢復模式改成"簡單",然後利用收縮工具可以講日誌文件收縮到很小,收縮完記得講恢復模式改成"完整"
也可以用語句進行處理(dbname是你要進行收縮的資料庫名,dbname_log是你要進行收縮的資料庫的邏輯日誌名稱)
USE [master]
GO ALTER DATABASE [dbname] SET recovery SIMPLE WITH NO_WAIT GO
ALTER DATABASE [dbname] SET RECOVERY SIMPLE --簡單模式
GO
USE [dbname]
GO
DBCC SHRINKFILE (N'dbname_log' , 11, TRUNCATEONLY) GO
USE [master]
GO
ALTER DATABASE [dbname] SET RECOVERY FULL WITH NO_WAIT ALTER DATABASE [dbname] SET RECOVERY FULL
對於第一種方法不贊同使用,首先對於資料庫的分離與附加有時候會破壞資料庫,造成資料庫無法還原,還有就是對於在線資料庫也不允許進行分離操作。
對於第二種方法是slq2008收縮日誌文件的一種方法,但是此方法也不能使用過於頻繁,因為進行資料庫恢復模式的更改會截斷事務日誌文件,這樣的話當時利用事務日誌文件進行恢復的時候檢查點不能包含資料庫文件,而且當你要對事務日誌進行備份的時候會重新提示你需要對資料庫進行完整備份。
舉個例子:比如你昨天晚上進行了一次完整備份,然後同時你也進行了一次日誌備份(提前日誌未被截斷),然後你每個小時進行過一次差異備份,最近的差異備份時間點是14點,如果此時資料庫錯誤修改了數據,你可以立馬備份一個日誌文件將資料庫恢復到日誌備份開始到日誌備份終點前的任意時間點 。
如果此時你進行了修改資料庫模式,截斷日誌進行了收縮,那麼你的數據只能恢復到昨天晚上備份的那個日誌備份時間前的任意時間點,也就是今天所做的資料庫更改無法再恢復了,因為日誌文件已經被截斷了,不知道這樣解釋是否明白
因為日誌文件的檢查點(lsn)是連續的,每一次日誌備份都是在上一次備份的基礎上lsn往後增加的,lsn的范圍也包括了資料庫文件的lsn,也只有日誌文件的lsn包括了資料庫文件的lsn,才能將資料庫文件進行回滾。
上圖中總共有三個備份文件,一個完整備份、一個差異備份、一個日誌備份,大家可以注意觀察完整備份的第一個lsn與最後一個lsn,和檢查點
第二個差異備份文件的的第一個lsn與最後一個lsn,和檢查點,最後的日誌備份的第一個lsn和最後一個lsn包含了前面兩個備份文件的lsn,這種情況資料庫就可以恢復到日誌文件備份前的任意時間點,如果日誌文件沒有包含資料庫文件的最後一個lsn也就無法恢復了。