當前位置:首頁 » 數據倉庫 » 資料庫置疑的原因
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫置疑的原因

發布時間: 2023-06-17 15:45:28

資料庫置疑是什麼

當資料庫主文件丟失或者和伺服器和資料庫文件丟失連接時就這樣。。。

② 在sql server 2000中經常會遇到資料庫置疑,我想問下怎麼解決置疑恢復問題。不是用備份還原的那些

首先資料庫置疑是復雜的,原因有多種一般是因為數據文件損壞,硬碟或者有壞道,或者是因為數據字典內容損壞,日誌損壞等,必須要有針對性的恢復。最簡單的就是日誌文件損壞的恢復,可以通過重新創建日誌的方法恢復。要是其他問題,還沒有備份的話就必須建一個空資料庫,用sqlseever的命令和sql將數據遷入新庫中(即使這樣,也未必能保證不丟失數據),像你說的通過滑鼠點一下的操作就將資料庫恢復的方法現在還沒有!!
1 資料庫屬性,設置中,允許對系統目錄直接修改(Allow modifications to be made directly to the system catalogs) 選中
2 update sysdatabases set status=32768 where name='資料庫名稱'
這條語句執行之後就可以對資料庫進行讀取了!!!!
3 進入查詢分析器 創建一個新資料庫
4 在質疑資料庫中 運行下面語句
select 'select * into 新數據名稱..'+rtrim(name)+' from '+name from
sysobjects where xtype='u' order by name
5 將第四步運行結果復制到新資料庫中執行!!!
這個方法是可以解決大部分資料庫置疑問題的!

③ SQl資料庫被置疑!!!高手請進!!

假定資料庫名為AA
1.將AA_log.ldf文件備份到其它目錄下;
2.將源目錄下的AA_log.ldf文件改名為smlog_log_bak.ldf;
3.在查詢分析器中執行以下語句修改資料庫的狀態:
use Master
go
update sysdatabases set status=32768 where name='AA' --修改狀態
go
shutdown with nowait --停止資料庫伺服器
go
4.退出SQL並在命令行模式中執行以下代碼:
sqlservr -c -T3608 -T4022 --安全模式啟動SQL SERVER
5.在查詢分析器中執行以下語句來查看剛剛修改過狀態的資料庫狀態:
select Name,Status from sysdatabases where Name='AA'
6.在查詢分析器中執行以下代碼重建日誌文件:
dbcc traceon(3604) --跟蹤
dbcc rebuild_log('AA','AA') --文件名要有全路徑和擴展名
本步驟如果成功,繼續執行下一步的操作,如果報錯,也可以不管它繼續下一步,也可以將操作之前建立的同名空資料庫日誌文件COPY過來就行。
7.在查詢分析器中執行以下代碼將資料庫置回正常狀態:
update sysdatabases set status=0 where name='AA'
8.重新啟動資料庫後執行以下語句檢查資料庫:
DBCC CHECKDB --如果執行完有錯誤用以下9.10兩步語句修復
9.要修復資料庫必需將資料庫改為單用戶模式:
Exec sp_dboption '資料庫名稱','single user','true'
10.執行以下語句修復資料庫:
DBCC CHECKDB('AA',REPAIR_ALLOW_DATA_LOSS)
11.將資料庫改為多用戶模式:
Exec sp_dboption 'AA','single user','false'
12.重新啟動電腦,成功!

④ SQL SERVER 2000 重啟資料庫或伺服器以後 出現置疑的問題。

你把你的資料庫文件換一個盤,放置。然後再附加。我以前用sqlserver2005 也出現過類似的問題,不過,我把需要的附加的文件換了一個位置,然後就成功了。這個原因,是你資料庫中存在相同的文件,但是,一時也找不到在哪,所以,就引起附加的沖突了。

⑤ 正在使用的SQL資料庫突然斷電後就置疑了,如何恢復

SQL
SERVER資料庫突然斷電後就置疑是由於內存中的數據丟失或者資料庫結構損壞造成資料庫不能回滾操作,那麼整個資料庫就置疑了,通過DBCC查出問題的原因才好進行解決問題,具體可咨詢廣州正大數據恢復這樣專業的數據恢復公司。

⑥ SQL2000資料庫突然置疑 這是什麼原因造成的 我先介紹下現象。

在MS SQLSERVER中一直有這樣的問題,SQLSERVER的狀態"置疑",原因約有以下幾條:
1.錯誤的刪除日誌;
2.硬體(HD)損壞,造成日誌和數據文件寫錯誤;
3.硬碟的空間不夠,比如日誌文件過大;
解決辦法:
最簡單的辦法是有資料庫的全備份,然後恢復即可.
步驟:
1. 刪除原始的資料庫:
USE MASTER
GO
DROP DATABASE DB_SUEPECT
2.建立同名的資料庫:
USE master
GO
CREATE DATABASE DB_SUSPECT
ON
( NAME = DBNAME_DAT,
FILENAME = 'C:',
SIZE = 10,
FILEGROWTH = 5 )
LOG ON
( NAME = 'DBNAME_LOG',
FILENAME = 'g:',
SIZE = 5MB,
FILEGROWTH = 5MB )
GO
3.恢復資料庫:
RESTORE DATABASE DB_SUSPECT
FROM DBNAME_BACKUP.DAT
4.資料庫完整性檢測:
DBCC CHECKDB('DB_SUSPECT')
5.重新啟動MSSQLSERVER服務.
如果沒有全備份,那就要用一些特殊的方法:
1.設置資料庫為緊急模式
Use Master
GO
sp_configure 'allow updates', 1
reconfigure with override
GO
UPDATE sysdatabases SET status = 32768 where name = 'DB_SUSPECT'
GO
2.停掉SQL Server服務:
.Net STOP MSSQLSERVER
3.把原始資料庫的數據文件DBNAME_DAT.MDF,DBNAME_LOG.LDF移走:
4.啟動SQL Server服務:
.Net START MSSQLSERVER
5.重新建立一個同名的資料庫DB_SUSPECT;
USE master
GO
CREATE DATABASE DB_SUSPECT
ON
( NAME = DBNAME_DAT,
FILENAME = 'C:',
SIZE = 10,
FILEGROWTH = 5 )
LOG ON
( NAME = 'DBNAME_LOG',
FILENAME = 'g:',
SIZE = 5MB,
FILEGROWTH = 5MB )
GO
6.設置資料庫運行在單用戶的模式:
USE MASTER
GO
ALTER DATABASE DB_SUSPECT SET SINGLE_USER
GO
7.停掉SQL服務:
.Net STOP MSSQLSERVER
8.把原來的數據文件再覆蓋回來:
9.啟動SQL Server服務:
.Net START MSSQLSERVER
10.重新設置SQLSERVER的狀態:
USE MASTER
GO
EXEC sp_resetstatus "DB_SUSPECT"
11.資料庫完整性檢測:
DBCC CHECKDB('DB_SUSPECT')
12.恢復資料庫為多用戶模式:
USE MASTER
GO
ALTER DATABASE DB_SUSPECT SET MULTI_USER
GO
13.恢復SQLSERVER原始的配置:
USE MATER
GO
UPDATE sysdatabases SET status = 4194320 where name = 'DB_SUSPECT'
GO
14.配置SQLSERVER不允許更新系統表:
USE MASTER
GO
sp_configure 'allow updates', 0
reconfigure with override
GO
15.重新啟動MSSQLSERVER服務:
最好重新啟動操作系統
16.備份資料庫:
可以通過SQLSERVER企業管理器或T-SQL.需要備份MASTER和DB_SUSPECT
補充一點,如果用DOMAIN\USER時,要注意對.MDF.LDF的所在目錄的許可權.

靈驗腳本
遇到這種資料庫置疑情況,就運行下面這個腳本,屢試不爽:
======================================================
--before running any script, run the following to set the
master database to allow updates
USE master
GO
sp_configure 'allow updates', 1
GO
RECONFIGURE WITH OVERRIDE
GO

--Run the following script
UPDATE master..sysdatabases SET status = status ^ 256
WHERE name = 'Database_Name'

--Run the following script
exec SP_resetstatus Database_Name

--stop and start the MSDTC at this stage

--After the procere is created, immediately disable
updates to the system tables:
exec sp_configure 'allow updates', 0
GO
RECONFIGURE WITH OVERRIDE
GO

⑦ 如何修復SQL資料庫置疑 修復SQL資料庫置疑方法

1、在實際的操作中由於突然斷電或者突然斷網造成資料庫置疑(在企業管理器中資料庫後面出現置疑兩個字),下面我們通過以下方法來進行修復置疑的資料庫。

2、我們使用默認方式建立一個供恢復使用的資料庫(如test)。可以在SQL Server Enterprise Manager裡面建立。

3、停掉資料庫伺服器。

4、將剛才生成的資料庫的日誌文件test_log.ldf刪除,用要恢復的資料庫mdf文件覆蓋剛才生成的資料庫數據文件test_data.mdf。

5、啟動資料庫伺服器。此時會看到資料庫test的狀態為「置疑」。這時候不能對此資料庫進行任何操作。

6、設置資料庫允許直接操作系統表。此操作可以在SQL Server Enterprise Manager裡面選擇資料庫伺服器,按右鍵,選擇「屬性」,在「伺服器設置」頁面中將「允許對系統目錄直接修改」一項選中。也可以使用如下語句來實現。

⑧ 資料庫為什麼會置疑有什麼條件會產生這個原因

1 SQL Server所在分區空間是否夠?資料庫文件大小是否達到最大文件限制?

2 資料庫文件損壞或被非正常刪除時出現這種情況

3 病毒防火牆的掃描也會引起資料庫置疑

INF: Consideration for a virus scanner on a computer that is running SQL Server 2000
http://support.microsoft.com/default.aspx?scid=kb;en-us;309422

If the virus sweep has opened a database file and still has it open when SQL Server tries to open the database (such as when SQL Server starts or when SQL Server opens a database that AutoClose has closed), the database to which the file belongs might be marked suspect. The SQL Server database files typically have the .mdf, .ldf, and .ndf file suffixes.

4 當SQL Server啟動時,將會嘗試獲得對資料庫文件的排他訪問權,如果此時該文件被其他程序佔用,或者遺失,資料庫將會被標記為置疑。
PRB: Missing device causes database to be marked suspect
http://support.microsoft.com/kb/180500/EN-US/

⑨ SQL2000資料庫msdb質疑怎麼處理

原因:非正常程序中斷或錯誤結束SQL服務,都會導致MSDB資料庫被「置疑」。

Msdb 資料庫供SQLServer 代理程序調度警報和作業以及記錄操作員時使用。比如,我們備份了一個資料庫,會在表backupfile中插入一條記錄,以記錄相關的備份信息。

但因為Msdb資料庫並未存儲特別重要的信息,因此可以從別的機器拷貝一份相同的msdbdata.mdf和msdblog.ldf覆蓋掉即可。

解決步驟

A伺服器為被「置疑」的伺服器;B伺服器上裝有和A伺服器相同版本的資料庫軟體。版本是SQL SERVER 2000。

步驟1、停止B伺服器上的SQL SERVER 服務,拷貝「msdbdata.mdf」和「msdblog.ldf」文件。

步驟2、停止A伺服器上的SQL SERVER 服務,將從B伺服器上拷貝「msdbdata.mdf」和「msdblog.ldf」文件覆蓋掉A伺服器上的這兩個文件。

步驟3、重新啟動A伺服器上的SQL SERVER服務。

步驟4、如果MSDB資料庫仍然是置疑狀態,可以執行下面的SQL。

USEMASTER
GO
SP_CONFIGURE'ALLOWUPDATES',1RECONFIGUREWITHOVERRIDE
GO
UPDATESYSDATABASESSETSTATUS=32768WHERENAME='msdb'
Go
sp_dboption'msdb','singleuser','true'
Go
DBCCCHECKDB('msdb')
Go
updatesysdatabasessetstatus=28wherename='msdb'
Go
sp_configure'allowupdates',0reconfigurewithoverride
Go
sp_dboption'msdb','singleuser','false'
Go