只有mdf文件的數(shù)據(jù)庫附加失敗的修復(fù)方法分享(置疑、只讀)
更新時間:2012年02月01日 00:25:24 作者:
有時候因為某些原因數(shù)據(jù)庫只有mdf文件了,需要附加數(shù)據(jù)庫,會出現(xiàn)一些問題,大家可以參考下面的方法試試
只有mdf文件的數(shù)據(jù)庫附加失敗的修復(fù)
附加時報如下錯誤:
服務(wù)器: 消息 1813,級別 16,狀態(tài) 2,行 1
未能打開新數(shù)據(jù)庫 'test'。CREATE DATABASE 將終止。
設(shè)備激活錯誤。物理文件名 "d:\data\test_log.LDF' 可能有誤。
步驟:
A、用“企業(yè)管理器”新建一個同名的數(shù)據(jù)??梢孕薷哪J(rèn)路徑,為表述方便,我使用D:\data\,數(shù)據(jù)文件名test.mdf,日志文件名test_log.ldf
B、停止SQL服務(wù)
C、刪除test_log.ldf文件,將新建的test.mdf文件用舊的test.mdf文件替換。
D、啟動SQL服務(wù)。進入企業(yè)管理器后發(fā)現(xiàn)test數(shù)據(jù)顯示為“置疑”,此后保證無人連接上此數(shù)據(jù)庫,并不做任何操作。
E、設(shè)置test數(shù)據(jù)庫允許直接操作系統(tǒng)表。此操作可以在SQL Server Enterprise Manager里面選擇數(shù)據(jù)庫服務(wù)器,按右鍵,選擇“屬性”,在“服務(wù)器設(shè)置”頁面中將“允許對系統(tǒng)目錄直接修改”一項選中。也可以使用如下語句來實現(xiàn)。我在實際操作的時候沒有使用命令,命令方式大家可以自己測試 ^_^
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
F、設(shè)置test數(shù)據(jù)庫為緊急修復(fù)模式。在查詢分析器中執(zhí)行如下語句:update sysdatabases set status=-32768 where dbid=DB_ID('test')
復(fù)制代碼執(zhí)行后在企業(yè)管理器中刷新后會發(fā)現(xiàn)ttdb數(shù)據(jù)庫顯示為“只讀\置疑\脫機\緊急模式”??梢钥吹綌?shù)據(jù)庫里面的表,但是僅僅有系統(tǒng)表。
G、重建數(shù)據(jù)庫日志文件。在查詢分析器中執(zhí)行如下語句:
dbcc rebuild_log('test','d:\Data\test_log.ldf')
執(zhí)行之前必須退出企業(yè)管理器,并且沒有人連接些數(shù)據(jù)庫。否則會報如下錯誤:
服務(wù)器: 消息 5030,級別 16,狀態(tài) 1,行 1
未能排它地鎖定數(shù)據(jù)庫以執(zhí)行該操作。
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。
正常的消息:
警告: 數(shù)據(jù)庫 'test' 的日志已重建。已失去事務(wù)的一致性。應(yīng)運行 DBCC CHECKDB 以驗證物理一致性。將必須重置數(shù)據(jù)庫選項,并且可能需要刪除多余的日志文件。
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。
此時打開在SQL Server Enterprise Manager里面會看到數(shù)據(jù)庫的狀態(tài)為“只供DBO使用”。可以訪問數(shù)據(jù)庫里面的用戶表了。
H、驗證數(shù)據(jù)庫一致性(可省略,不過我忠實地執(zhí)行了^_^),查詢分析器中執(zhí)行:
dbcc checkdb('test')
報出了每個表的執(zhí)行情況后,最后報:
CHECKDB 發(fā)現(xiàn)了 0 個分配錯誤和 0 個一致性錯誤(在數(shù)據(jù)庫 'test' 中)。
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。
I、設(shè)置數(shù)據(jù)庫為正常狀態(tài)。執(zhí)行語句:
sp_dboption 'test','dbo use only','false'
走到這一步,如果沒有報錯,已經(jīng)可以長長舒一口氣了,去喝口水吧。:P
J、最后一步,我們要將步驟E中設(shè)置的“允許對系統(tǒng)目錄直接修改”一項恢復(fù)。怎么做當(dāng)然不用再多說啦。也可以執(zhí)行語句:
sp_configure 'allow updates',0
go
reconfigure with override
go
附加時報如下錯誤:
服務(wù)器: 消息 1813,級別 16,狀態(tài) 2,行 1
未能打開新數(shù)據(jù)庫 'test'。CREATE DATABASE 將終止。
設(shè)備激活錯誤。物理文件名 "d:\data\test_log.LDF' 可能有誤。
步驟:
A、用“企業(yè)管理器”新建一個同名的數(shù)據(jù)??梢孕薷哪J(rèn)路徑,為表述方便,我使用D:\data\,數(shù)據(jù)文件名test.mdf,日志文件名test_log.ldf
B、停止SQL服務(wù)
C、刪除test_log.ldf文件,將新建的test.mdf文件用舊的test.mdf文件替換。
D、啟動SQL服務(wù)。進入企業(yè)管理器后發(fā)現(xiàn)test數(shù)據(jù)顯示為“置疑”,此后保證無人連接上此數(shù)據(jù)庫,并不做任何操作。
E、設(shè)置test數(shù)據(jù)庫允許直接操作系統(tǒng)表。此操作可以在SQL Server Enterprise Manager里面選擇數(shù)據(jù)庫服務(wù)器,按右鍵,選擇“屬性”,在“服務(wù)器設(shè)置”頁面中將“允許對系統(tǒng)目錄直接修改”一項選中。也可以使用如下語句來實現(xiàn)。我在實際操作的時候沒有使用命令,命令方式大家可以自己測試 ^_^
復(fù)制代碼 代碼如下:
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
F、設(shè)置test數(shù)據(jù)庫為緊急修復(fù)模式。在查詢分析器中執(zhí)行如下語句:update sysdatabases set status=-32768 where dbid=DB_ID('test')
復(fù)制代碼執(zhí)行后在企業(yè)管理器中刷新后會發(fā)現(xiàn)ttdb數(shù)據(jù)庫顯示為“只讀\置疑\脫機\緊急模式”??梢钥吹綌?shù)據(jù)庫里面的表,但是僅僅有系統(tǒng)表。
G、重建數(shù)據(jù)庫日志文件。在查詢分析器中執(zhí)行如下語句:
復(fù)制代碼 代碼如下:
dbcc rebuild_log('test','d:\Data\test_log.ldf')
執(zhí)行之前必須退出企業(yè)管理器,并且沒有人連接些數(shù)據(jù)庫。否則會報如下錯誤:
服務(wù)器: 消息 5030,級別 16,狀態(tài) 1,行 1
未能排它地鎖定數(shù)據(jù)庫以執(zhí)行該操作。
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。
正常的消息:
警告: 數(shù)據(jù)庫 'test' 的日志已重建。已失去事務(wù)的一致性。應(yīng)運行 DBCC CHECKDB 以驗證物理一致性。將必須重置數(shù)據(jù)庫選項,并且可能需要刪除多余的日志文件。
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。
此時打開在SQL Server Enterprise Manager里面會看到數(shù)據(jù)庫的狀態(tài)為“只供DBO使用”。可以訪問數(shù)據(jù)庫里面的用戶表了。
H、驗證數(shù)據(jù)庫一致性(可省略,不過我忠實地執(zhí)行了^_^),查詢分析器中執(zhí)行:
復(fù)制代碼 代碼如下:
dbcc checkdb('test')
報出了每個表的執(zhí)行情況后,最后報:
CHECKDB 發(fā)現(xiàn)了 0 個分配錯誤和 0 個一致性錯誤(在數(shù)據(jù)庫 'test' 中)。
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。
I、設(shè)置數(shù)據(jù)庫為正常狀態(tài)。執(zhí)行語句:
復(fù)制代碼 代碼如下:
sp_dboption 'test','dbo use only','false'
走到這一步,如果沒有報錯,已經(jīng)可以長長舒一口氣了,去喝口水吧。:P
J、最后一步,我們要將步驟E中設(shè)置的“允許對系統(tǒng)目錄直接修改”一項恢復(fù)。怎么做當(dāng)然不用再多說啦。也可以執(zhí)行語句:
復(fù)制代碼 代碼如下:
sp_configure 'allow updates',0
go
reconfigure with override
go
相關(guān)文章
SQL Server一個字符串拆分多行顯示或者多行數(shù)據(jù)合并成一個字符串
這篇文章介紹了SQL Server一個字符串拆分多行顯示或者多行數(shù)據(jù)合并成一個字符串的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05SQL Server誤區(qū)30日談 第7天 一個實例多個鏡像和日志傳送延遲
這個誤區(qū)就有點老生常談了。每一個主體服務(wù)器只允許一個鏡像服務(wù)器。如果你希望存在多個主體服務(wù)器的副本,那么請使用事務(wù)日志傳送,事務(wù)日志傳送允許針對每一個主體存在多個輔助實例2013-01-01為數(shù)據(jù)庫生成某個字段充填隨機數(shù)的存儲過程
為數(shù)據(jù)庫生成某個字段充填隨機數(shù)2010-05-05SQL Server中修改“用戶自定義表類型”問題的分析與方法
這篇文章主要給大家介紹了關(guān)于SQL Server中修改“用戶自定義表類型”問題的分析與方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09解析SQL Server聚焦移除(Bookmark Lookup、RID Lookup、Key Lookup)
本文主要講解索引性能優(yōu)化,著重對Bookmark Lookup、RID Lookup、Key Lookup三者進行移除的實現(xiàn)進行解析,以此來提高查詢性能。希望對大家有所幫助2016-12-12sql?server多行數(shù)據(jù)合并一行顯示簡單實現(xiàn)代碼
有時候我們需要將多行數(shù)據(jù)按照某一列進行合并,以便更方便地進行數(shù)據(jù)分析和處理,這篇文章主要給大家介紹了關(guān)于sql?server多行數(shù)據(jù)合并一行顯示簡單實現(xiàn)的相關(guān)資料,需要的朋友可以參考下2023-12-12