⑴ 資料庫處於迴避恢復模式怎麼解決
如果是單用戶模式,要清楚這個表中的數據。如果還是不行就新建一個資料庫,將現有的數據導到新庫里。
也可能是因為當前資料庫正處在
EMERGENCY
(緊急狀態)下,
可以使用
alter
database
資料庫名
set
online
來恢復成在線狀態。
恢復資料庫的方法:
1.
update sysdatabases set status =0 where name = 'fdshop'
,go
把狀態重置為0,重啟庫。
2.
修復的話,先將將資料庫置為單用戶模式,sp_dboption 'fdshop','single user','true',如果報錯,可能有用戶正在使用庫,在進程管理裡面殺掉,用戶進程,重新執行,直到成功。
3.
嘗試對其進行不丟失數據的修復:DBCC CHECKDB('fdshop',REPAIR_REBUILD)。
嘗試對其進行可能丟失數據的修復DBCCCHECKDB('fdshop',REPAIR_ALLOW_DATA_LOSS)
。
4.
將資料庫置為多用戶模式:sp_dboption 'fdshop','single user','false'
,如果用戶庫無法啟動,則打開sql server分析查詢器,執行以下命令。
⑵ SQL資料庫完整恢復模式下恢復資料庫
按照正常的資料庫備份操作備份一下資料庫,然後按照後面的操作只還原數據文件 A. 我們使用默認方式建立一個供恢復使用的資料庫(如test)。可以在SQL Server Enterprise Manager裡面建立。
B. 停掉資料庫伺服器。
C. 將剛才生成的資料庫的日誌文件test_log.ldf刪除,用要恢復的資料庫mdf文件覆蓋剛才生成的資料庫數據文件test_data.mdf。
D. 啟動資料庫伺服器。此時會看到資料庫test的狀態為「置疑」。這時候不能對此資料庫進行任何操作。
E. 設置資料庫允許直接操作系統表。此操作可以在SQL Server Enterprise Manager裡面選擇資料庫伺服器,按右鍵,選擇「屬性」,在「伺服器設置」頁面中將「允許對系統目錄直接修改」一項選中。也可以使用如下語句來實現。
use master
go
sp_configure 'allow updates ',1
go
reconfigure with override
go
F. 設置test為緊急修復模式
update sysdatabases set status=-32768 where dbid=DB_ID( 'text ')
此時可以在SQL Server Enterprise Manager裡面看到該資料庫處於「只讀\置疑\離線\緊急模式」可以看到資料庫裡面的表,但是僅僅有系統表
G. 下面執行真正的恢復操作,重建資料庫日誌文件
dbcc rebuild_log( 'text ', 'D:\MSSQL7\Data\text_log.ldf ')
執行過程中,如果遇到下列提示信息:
伺服器: 消息 5030,級別 16,狀態 1,行 1
未能排它地鎖定資料庫以執行該操作。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。
說明您的其他程序正在使用該資料庫,如果剛才您在F步驟中使用SQL Server Enterprise Manager打開了text庫的系統表,那麼退出SQL Server Enterprise Manager就可以了。
正確執行完成的提示應該類似於:
警告: 資料庫 'test ' 的日誌已重建。已失去事務的一致性。應運行 DBCC CHECKDB 以驗證物理一致性。將必須重置資料庫選項,並且可能需要刪除多餘的日誌文件。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。
此時打開在SQL Server Enterprise Manager裡面會看到資料庫的狀態為「只供DBO使用」。此時可以訪問資料庫裡面的用戶表了。
H. 驗證資料庫一致性(可省略)
dbcc checkdb( 'text ')
一般執行結果如下:
CHECKDB 發現了 0 個分配錯誤和 0 個一致性錯誤(在資料庫 'test ' 中)。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。
I. 設置資料庫為正常狀態
sp_dboption 'text ', 'dbo use only ', 'false '
如果沒有出錯,那麼恭喜,現在就可以正常的使用恢復後的資料庫啦。
J. 最後一步,我們要將步驟E中設置的「允許對系統目錄直接修改」一項恢復。因為平時直接操作系統表是一件比較危險的事情。當然,我們可以在SQL Server Enterprise Manager裡面恢復,也可以使用如下語句完成
sp_configure 'allow updates ',0
go
reconfigure with override
go
⑶ 什麼叫「迴避恢復」模式
我看別人是這樣說的:SQL2000的,確實有這個狀態,相當於2008的緊急狀態
USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='AIS20140331140513'
Go
恢復正常狀態把32768改為28。 SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
這條語句是允許修改系統目錄,資料庫修復完之後,記得把1改為0執行一下。
⑷ 怎樣解決資料庫處於迴避恢復模式
您好,很高興為您解答。
之前做了什麼操作?如果不行,就新建一個資料庫,將現有的數據導到新庫里
如若滿意,請點擊右側【採納答案】,如若還有問題,請點擊【追問】
希望我的回答對您有所幫助,望採納!
~ O(∩_∩)O~
⑸ SQL三種恢復模式有什麼區別
一、定義不同
Simple簡單恢復模式,Simple模式的舊稱叫」Checkpoint with truncate log「。Full完整恢復模式,和Simple模式相反,Full模式的舊稱叫」Checkpoint without truncate log「。Bulk-logged 大容量日誌恢復。
二、功能不同
完整sql server恢復模式:
資料庫引擎把所有操作都記錄到事務日誌上,並且資料庫引擎絕對不會截斷日誌,完整恢復模式能使資料庫恢復到故障時間點。
簡單sql server恢復模式:
資料庫引擎最低限度地記錄大多數操作,並在每個檢查點之後截斷事務日誌。它不能備份或還原事務日誌,也不能還原單獨的數據頁。
大容量日誌模式:
資料庫引擎對大容量操作(select into和bulk insert)進行最小記錄。如果一個日誌備份包含任何大容量操作,就可以使資料庫恢復到日誌備份的結尾,但不能恢復到某個時間點,它僅用於大容量操作期間。
三、好處不同
在Simple模式下,SQL Server會在每次checkpoint或backup之後自動截斷log,也就是丟棄所有的inactive log records,僅保留用於實例啟動時自動發生的instance recovery所需的少量log,這樣做的好處是log文件非常小,不需要DBA去維護。
Full模式SQL Server不主動截斷log,只有備份log之後,才可以截斷log,否則log文件會一直增大,直到撐爆硬碟,因此需要部署一個job定時備份log。Full的好處是可以做point-in-time恢復,最大限度的保證數據不丟失,一般用於critical的業務環境里。
Bulk-logged是針對以下Bulk操作,會產生盡量少的log:
1、Bulk load operations (bcp and BULK INSERT).
2、SELECT INTO.
3、Create/drop/rebuild index 通常bulk操作會產生大量的log,對SQL Server的性能有較大影響,bulk-logged模式的作用就在於降低這種性能影響,並防止log文件過分增長。
⑹ 未能在資料庫 '資料庫名字1' 中運行 BEGIN TRANSACTION,因為該資料庫處於迴避恢復模式。
遇到這種問題,如果 sql 伺服器正常情況下,我一般是恢復資料庫。其次是更改用戶。
⑺ 無法在資料庫 'E2' 中運行 BEGIN TRANSACTION,因為該資料庫處於迴避恢復模式
遇到這種問題,如果 sql 伺服器正常情況下,我一般是恢復資料庫。其次是更改用戶。
⑻ 伺服器: 消息 3908,級別 16,狀態 1,行 1
試試這個步驟,我也是剛剛搜到的。
1. 新建一個同名的資料庫
2.再停掉sql server
3.用suspect資料庫的文件覆蓋掉這個新建的同名資料庫
1. use master
2. go
3. sp_configure 'allow updates',1 reconfigure with override
4. go
5. update sysdatabases set status =32768 where name='置疑的資料庫名'
6. go
7. sp_dboption '置疑的資料庫名', 'single user', 'true'
8. go
9.先把數據狀態設為:緊急修復模式
update sysdatabases set status=-32768 where dbid=DB_ID('dbname')
10、dbccrebuild_log('dbname','dbfilepath\dbname.mdf')
11、update sysdatabases set status =28 where name='置疑的資料庫名'
13. sp_configure 'allow updates', 0 reconfigure with override
14. go
15. sp_dboption '置疑的資料庫名', 'single user', 'false'
16. go