sql2000附加損壞的mdf文件和dbcc修復數據庫
廣告:
sql2000附加損壞的mdf文件和dbcc修復數據庫
1 可用高版本如sqlserver 2008 r2來附加,找出mdf和log所在原始的目錄位置。(但是不能附加成功)
2 再在sql2000企業管理員新建同名數據庫,位置要和原始路徑一一對應。用損壞的mdf替換新建的mdf文件,再啟動服務
3 進入查詢分析器(不要選擇數據庫進入,會提示sa登錄失敗)
use master
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='test' --緊急修復模式
會提示:未啟用對系統目錄的特殊更新。系統管理員必須重新配置 SQL Server 以允許這種操作。
運行:
sp_configure 'allow updates',1
RECONFIGURE WITH OVERRIDE
可檢查 dbcc checkdb('test') with no_infomsgs --只顯示錯誤信息
sp_dboption 'test', 'single user', 'true'
會提示:
未處理修復語句。數據庫需要處于單用戶模式下。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。
再運行:
use master
sp_dboption 'test', 'single user', 'true'
再運行:
use master
sp_dboption 'test', 'single user', 'true'
dbcc checkdb('test',REPAIR_ALLOW_DATA_LOSS)
會提示:未能讀取并閂鎖頁 (1:199)(用閂鎖類型 SH)。sysindexes 失敗。
由于數據移動,未能繼續以nolock方式掃描
恢復正常模式:
update sysdatabases set status =28 where name='test'
處理sql腳本:
osql -S HAO-PC\SQL2001 -U sa -P 123456 -d test_3 -i G:\temp\4.sql
SQL Server已創建表 'XXXX,但其最大行大小(10438)超過了每行的最大字節數(8060)
"警告: 已創建表 'XXXX,但其最大行大小(10438)超過了每行的最大字節數(8060)。如果結果行長度超過 8060 字節,則此表中行的 INSERT 或 UPDATE 將失敗。"
解決: 設計表特別是 varchar(7000) 改成 varchar(5000)
USE MASTER; GO; SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE GO UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='AIS2015' Go sp_dboption 'AIS2015', 'single user', 'true' Go DBCC CHECKDB('AIS2015') DBCC CHECKDB(AIS2015,REPAIR_ALLOW_DATA_LOSS) Go update sysdatabases set status =28 where name='AIS2015' Go sp_configure 'allow updates', 0 reconfigure with override Go sp_dboption 'AIS2015', 'single user', 'false' Go
以上命令如果出錯,請一行一行執行。 查詢分析器里面執行。
廣告: