當前位置:首頁 » 編程語言 » sql資料庫顯示停電
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql資料庫顯示停電

發布時間: 2022-10-04 12:44:54

A. 我有一個sql2008資料庫,正在使用時,突然停電了,來電後,打開電腦後資料庫顯示「置疑」,請問怎麼處理啊

先使用「無日誌附加」的方法進行附加數據後,對資料庫做DBCC檢測,然後針對錯誤進行修復 。一般如果資料庫正在進行讀寫操作,突然斷電,會導致資料庫無法回寫正常的數據,這樣就會導致資料庫索引及其它錯誤,常見的有「並閆鎖頁錯誤」、「表錯誤: 分配單元ID 169144,頁(1:XXXX)。測試(IS_OFF (BUF_IOERR, pBUF->bstat))失敗。」,可以先用DBCC先進行修復 ,命令:
DBCC CHECKDB(DBName,REPAIR_FAST) --不丟失數據
DBCC CHECKDB(DBName,REPAIR_REBUILD)--不丟失數據
DBCC CHECKDB(DBName,REPAIR_ALLOW_DATA_LOSS)--會丟失數據
如果還是修復不好,就找專業的數據恢復公司做修復吧,可以找北亞數據恢復修復 ,他們修復SQL資料庫很厲害。。。

B. SQL的823錯該怎麼改

nbsp;最近工作上碰見SQL資料庫附加提示「823」號錯誤。從網上搜了一些資料,按照幾個方法執行後解決了此類問題。並對解決後資料庫出現不一致的問題也做了解決辦法的說明。我的資料庫是因為伺服器系統壞掉,重新安裝到別的伺服器上了,把資料庫文件和日誌拷過去後,想附加,結果出現了823錯誤提示。於是就到網上網路了一下,找到了這個方法。

原因: 1、因為停電等原因造成MSSQL資料庫,提示823錯誤。

2、日誌文件被破壞823錯誤。

SQL Server資料庫備份有兩種方式,一種是使用BACKUP DATABASE將資料庫文件備份出去,另外一種就是直接拷貝資料庫文件mdf和日誌文件ldf的方式。下面將主要討論一下後者的備份與恢復。本文假定您能熟練使用SQL Server Enterprise Manager(SQL Server企業管理器)和SQL Server Quwey Analyser(SQL Server查詢分析器)
1、正常的備份、恢復方式
正常方式下,我們要備份一個資料庫,首先要先將該資料庫從運行的數據伺服器中斷開,或者停掉整個資料庫伺服器,然後復制文件。
卸下資料庫的命令:Sp_detach_db 資料庫名
連接資料庫的命令:Sp_attach_db或者sp_attach_single_file_db
s_attach_db [@dbname =] ′dbname′, [@filename1 =] ′filename_n′ [,...16]
sp_attach_single_file_db [@dbname =] ′dbname′, [@physname =] ′physical_name′
使用此方法可以正確恢復SQL Sever7.0和SQL Server 2000的資料庫文件,要點是備份的時候一定要將mdf和ldf兩個文件都備份下來,mdf文件是資料庫數據文件,ldf是資料庫日誌文件。
例子:
假設資料庫為test,其數據文件為test_data.mdf,日誌文件為test_log.ldf。下面我們討論一下如何備份、恢復該資料庫。
卸下資料庫:sp_detach_db 'test'
連接資料庫:sp_attach_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data.mdf','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf'
sp_attach_single_file_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data.mdf'
2、只有mdf文件的恢復技術
由於種種原因,我們如果當時僅僅備份了mdf文件,那麼恢復起來就是一件很麻煩的事情了。
如果您的mdf文件是當前資料庫產生的,那麼很僥幸,也許你使用sp_attach_db或者sp_attach_single_file_db可以恢復資料庫,但是會出現類似下面的提示信息
設備激活錯誤。物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF' 可能有誤。
已創建名為 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.LDF' 的新日誌文件。
但是,如果您的資料庫文件是從其他計算機上復制過來的,那麼很不幸,也許上述辦法就行不通了。你也許會得到類似下面的錯誤信息
伺服器: 消息 1813,級別 16,狀態 2,行 1
未能打開新資料庫 'test'。CREATE DATABASE 將終止。
設備激活錯誤。物理文件名 'd:\test_log.LDF' 可能有誤。
怎麼辦呢?別著急,下面我們舉例說明恢復辦法。
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('test')
此時可以在SQL Server Enterprise Manager裡面看到該資料庫處於「只讀\置疑\離線\緊急模式」可以看到資料庫裡面的表,但是僅僅有系統表
G.下面執行真正的恢復操作,重建資料庫日誌文件
dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf')
執行過程中,如果遇到下列提示信息:
伺服器: 消息 5030,級別 16,狀態 1,行 1
未能排它地鎖定資料庫以執行該操作。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。[brown]
說明您的其他程序正在使用該資料庫,如果剛才您在F步驟中使用SQL Server Enterprise Manager打開了test庫的系統表,那麼退出SQL Server Enterprise Manager就可以了。
正確執行完成的提示應該類似於:
[brown]警告: 資料庫 'test' 的日誌已重建。已失去事務的一致性。應運行 DBCC CHECKDB 以驗證物理一致性。將必須重置資料庫選項,並且可能需要刪除多餘的日誌文件。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。
此時打開在SQL Server Enterprise Manager裡面會看到資料庫的狀態為「只供DBO使用」。此時可以訪問資料庫裡面的用戶表了。
H.驗證資料庫一致性(可省略)
dbcc checkdb('test')
一般執行結果如下:
CHECKDB 發現了 0 個分配錯誤和 0 個一致性錯誤(在資料庫 'test' 中)。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。
I.設置資料庫為正常狀態
sp_dboption 'test','dbo use only','false'
如果沒有出錯,那麼恭喜,現在就可以正常的使用恢復後的資料庫啦。
J.最後一步,我們要將步驟E中設置的「允許對系統目錄直接修改」一項恢復。因為平時直接操作系統表是一件比較危險的事情。當然,我們可以在SQL Server Enterprise Manager裡面恢復,也可以使用如下語句完成
sp_configure 'allow updates',0
go
reconfigure with override
go

對於提示"分配錯誤"及"一致性錯誤"依次執行下列語句:

sp_dboption '資料庫', 'SINGLE USER', TRUE
DBCC CHECKDB('資料庫', REPAIR_ALLOW_DATA_LOSS)
sp_dboption '資料庫', 'SINGLE USER', FALSE

用這些修復語句修復後,返回的一些有代表性的錯誤信息:

再根據錯誤信息,查詢不能修復的信息備份,將之刪除,再將備份的信息插入原來的地方,問題解決

C. sql資料庫怕停電

sql資料庫怕停電的原因:
在突然停電的情況下,都有不同幾率引起資料庫損壞,且是致命的,無法修復

D. 如何解決SQL SERVER 2000 一直處於停止狀態

轉:
不管你的SQL Server 2000 資料庫是因為停電或者正常情況下突然就不能啟動了,也就是說一直處於停止狀態,重啟電腦或者殺毒都不管用。如果你查看系統日誌,發現「SQL Server evaluation period has expired.」,恭喜你,你的問題現在可以解決了。

知道為什麼嗎?因為你使用的是SQL Server 2000 評估版,120 天評估期過期後,SQL Server 將無法啟動。或者你的SQL Server 2000因為突然斷電,由於SQL Server 2000 BUG成了SQL Server 2000評估版,致使資料庫無法使用,當然這種情況是筆者在工作中總結出來的,至今還沒有推翻此結論,所以這種情況也適合筆者講到的方法。

方法/步驟

1

首先請看以下腳本,不管你知不知道什麼是腳本:

腳本1:

date/t>jeampc.txt

date 2008-08-08

net start mssqlserver

@for /f "tokens=1" %%c in (jeampc.txt) do date %%c

2

腳本2:

@echo off

set nowtime=%date%

echo 2008-08-08|date

sc start MSSQLSERVER

ping -n 5 127.1>nul

echo %nowtime%|date

exit

3

你看不懂這些腳本沒有關系,你只要知道2008-08-08是什麼就可以了。對了,這個是時間,請看準格式,把這里的時間修改為你的資料庫還能正常使用的時間,然後保存為jeampc.bat文件,創建快捷方式,添加到開機啟動項里。OK,重啟計算機,你的資料庫就能正常使用了。

END
網路經驗:jingyan..com

注意事項

如果不想jeampc.bat開機運行,手動運行jeampc.bat文件也可以,雙擊一下即可。

E. 我的SQL資料庫在寫數據的時候突然停電了,再來電打開電腦資料庫就質疑了,應該怎麼解決

--資料庫恢復-資料庫日誌文件遭破壞,恢復資料庫:
--資料庫名:置疑資料庫
USE MASTER
go
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
go
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑資料庫'
go
sp_dboption '置疑資料庫', 'single user', 'true'
go
DBCC CHECKDB('置疑資料庫')
go
update sysdatabases set status =28 where name='置疑資料庫'
go
sp_configure 'allow updates', 0 reconfigure with override
go
sp_dboption '置疑資料庫', 'single user', 'false'
go
--'置疑資料庫'恢復成功!

F. 伺服器突然停電SQL是否損壞

通過事件查看器,查看發現系統文件系統揭損壞,嘗試使用CHKDSK修復。

支持。雲伺服器備份提供資料庫備份。針對不兼容的應用資料庫,建議在備份前,暫停所有數據的寫操作,再進行備份。

如果無法暫停寫操作,則可以將應用系統停止或者將伺服器停機,進行離線的備份;如果備份前不進行任何操作,則恢復後,伺服器的狀態類似異常掉電後再啟動,資料庫會進行日誌回滾操作保證一致性。

簡介:

SQL語言1974年由Boyce和Chamberlin提出,並首先在IBM公司研製的關系資料庫系統SystemR上實現。由於它具有功能豐富、使用方便靈活、語言簡潔易學等突出的優點,深受計算機工業界和計算機用戶的歡迎。

1980年10月,經美國國家標准局(ANSI)的資料庫委員會X3H2批准,將SQL作為關系資料庫語言的美國標准,同年公布了標准SQL,此後不久,國際標准化組織(ISO)也作出了同樣的決定。

G. 如何解決SQL SERVER 2000 一直處於停止狀態

不管你的SQL Server 2000 資料庫是因為停電或者正常情況下突然就不能啟動了,也就是說一直處於停止狀態,重啟電腦或者殺毒都不管用。如果你查看系統日誌,發現「SQL Server evaluation period has expired.」,恭喜你,你的問題現在可以解決了。

知道為什麼嗎?因為你使用的是SQL Server 2000 評估版,120 天評估期過期後,SQL Server 將無法啟動。或者你的SQL Server 2000因為突然斷電,由於SQL Server 2000 BUG成了SQL Server 2000評估版,致使資料庫無法使用,當然這種情況是筆者在工作中總結出來的,至今還沒有推翻此結論,所以這種情況也適合筆者講到的方法。
首先請看以下腳本,不管你知不知道什麼是腳本:
腳本1:
date/t>jeampc.txt
date 2008-08-08
net start mssqlserver
@for /f "tokens=1" %%c in (jeampc.txt) do date %%c
腳本2:
@echo off
set nowtime=%date%
echo 2008-08-08|date
sc start MSSQLSERVER
ping -n 5 127.1>nul
echo %nowtime%|date
exit
你看不懂這些腳本沒有關系,你只要知道2008-08-08是什麼就可以了。對了,這個是時間,請看準格式,把這里的時間修改為你的資料庫還能正常使用的時間,然後保存為jeampc.bat文件,創建快捷方式,添加到開機啟動項里。OK,重啟計算機,你的資料庫就能正常使用了。

H. 突然停電導致sql伺服器服務不能啟動,不能進入資料庫

沒遇到過這種情況,由於錯誤日誌不太全,懷疑是磁碟問題,

  1. 找到對就在的物理文件,拷貝到其他機器試一下是否能附加上

  2. 如果可以附加上,可考慮重新安裝資料庫

  3. 如果無法附加,試著用剛剛安裝好的SQLSERVER的master資料庫替換掉伺服器那邊的master資料庫

I. 我的SQL資料庫在寫入數據的時候突然停電了,再打開電腦就出現了資料庫質疑,應該怎麼解決

修復斷電等損壞的SQL 資料庫,你可以試試。
如資料庫名為:FreeHost
首先是設置為單用戶模式,然後修復,最後是恢復多用戶模式。
ALTER DATABASE [FreeHost] SET SINGLE_USER
GO
DBCC CHECKDB('FreeHost',repair_allow_data_loss) WITH TABLOCK
GO
ALTER DATABASE [FreeHost] SET MULTI_USER
GO

註:
--CHECKDB 有3個參數:
--REPAIR_ALLOW_DATA_LOSS
--執行由 REPAIR_REBUILD 完成的所有修復,包括對行和頁進行分配和取消分配以改正分配錯誤、結構行或頁的錯誤,以及刪除已損壞的文本對象。這些修復可能會導致一些數據丟失。修復操作可以在用戶事務下完成以允許用戶回滾所做的更改。如果回滾修復,則資料庫仍會含有錯誤,應該從備份進行恢復。如果由於所提供修復等級的緣故遺漏某個錯誤的修復,則將遺漏任何取決於該修復的修復。修復完成後,備份資料庫。
--REPAIR_FAST 進行小的、不耗時的修復操作,如修復非聚集索引中的附加鍵。這些修復可以很快完成,並且不會有丟失數據的危險。
--REPAIR_REBUILD 執行由 REPAIR_FAST 完成的所有修復,包括需要較長時間的修復(如重建索引)。執行這些修復時不會有丟失數據的危險。

--DBCC CHECKDB('FreeHost') with NO_INFOMSGS,PHYSICAL_ONLY