嚴重級別為21 表示可能存在資料損壞。 可能的原因包括損壞的頁鏈、損壞的iam 或該物件的sys.objects
目錄檢視中存在無效條目。這些錯誤通常由硬體或磁碟裝置驅動程式故障而引起。
ms sql server 提供了很多關於資料庫修復的命令,當ms sql server 資料庫遭到質疑或者是有的無法完成讀取時可以嘗試這些修復命令。
1. dbcc checkdb
重啟伺服器
usemaster
declare
@databasename
varchar(255
)
set@databasename
=』需要修復的資料庫實體的名稱』
exec sp_dboption @databasename, n』single
』, n』true』 –將目標資料庫置為單使用者狀態
dbcc checkdb(@databasename
,repair_allow_data_loss)
dbcc checkdb(@databasename
,repair_rebuild)
exec sp_dboption @databasename, n』single』, n』false』–將目標資料庫置為多使用者狀態
sql2012將目標資料庫修改單使用者狀態語句
alter database dt_cms_ojj set single_user with rollback immediate;
sql2012將目標資料庫修改單使用者狀態語句
alter database dt_cms_ojj set multi_user
然後執行 sql server資料修復命令dbcc checkdb(』需要修復的資料庫實體的名稱』) 檢查資料庫是否仍舊存在錯誤。注意:修復後可能會造成部分資料的丟失。
如果dbcc checkdb 檢查仍舊存在錯誤,可以使用dbcc checktable來修復。
use需要修復的資料庫實體的名稱
declare
@dbname
varchar(255
)set
@dbname
=』需要修復的資料庫實體的名稱』
exec sp_dboption @dbname,』single
user』,'
true』
dbcc checktable(』需要修復的資料表的名稱』,repair_allow_data_loss)
dbcc checktable(』需要修復的資料表的名稱』,repair_rebuild)
—把』 需要修復的資料表的名稱』更改為執行sql server資料修復命令dbcc checkdb時報錯的資料表的名稱
exec sp_dboption @dbname,』single user』,
'false』
dbcc dbreindex 重建指定資料庫中表的乙個或多個索引
用法:dbcc dbreindex (表名,』』) 修復此表所有的索引。
SQLSERVER 資料修復
先執行 dbcc checkdb 資料名稱 找出資料有問題的表 再執行下面的命令 declare dbname varchar 255 set dbname 資料名稱 exec sp dboption dbname,single user true dbcc checktable 有問題的表名 re...
sql server資料修復語句
use 資料庫名 dbcc checkdbdbcc updateusage 資料庫名 架構名 alter database 資料庫名 set single user with rollback immediatealter database 資料庫名 set multi user with roll...
SQL Server 「資料收縮」詳解
在ms中建立資料庫時會為資料庫分配初始的大小 如下圖 資料庫和日誌兩個檔案 隨著資料庫的使用檔案會逐漸增大。資料庫檔案大小的增加有兩種方式 要明白為何資料庫需要收縮,首先需要理解兩個概念 由此可以理解為 分配空間 使用空間。在實際使用的過程中可能會出現分配空間為100mb,而使用空間僅為20mb,這...