Sql Server 2000附加數據庫出現1813錯誤的解決方法
今天進行了一錯誤操作。
數據庫xxzx_discuz,因生成大量日志使日志文件'xxzx_discuz_Log.LDF' 占滿了磁盤所有空間,使網站無法正常使用數據庫。
自己圖省事分離數據庫xxzx_discuz后,直接刪除'xxzx_discuz_Log.LDF' (因為文件太大,無法存放到回收站),重新附件到SQL Server時出現兩個提示:------------------------------------------------------------------------------------------------------------------------------SQL Server 企業管理器---------------------------為日志文件指定的文件名不正確。將創建新的日志文件。要繼續嗎?---------------------------是(Y)否(N)------------------------------------------------------------------------------------------------------------------------------Microsoft SQL-DMO (ODBC SQLState: 42000)---------------------------錯誤 1813: 未能打開新數據庫 'xxzx_discuz'。CREATE DATABASE 將終止。設備激活錯誤。物理文件名 'S:Program FilesMicrosoft SQL ServerMSSQLdataxxzx_discuz_Log.LDF' 可能有誤。---------------------------確定------------------------------------------------------------------------------------------------------------------------------
從而無法將數據庫正常附加到SQL Server 2000,正常情況下這樣操作是沒有問題的,SQL Server會重新生成日志文件,但是因為之前出現了磁盤空間不足,日志文件不完整,從而造成了無法正常附加。
解決辦法如下(從網上找來的):
0.備份數據文件'xxzx_discuz_Log.MDF' 1.新建一個同名的數據庫'xxzx_discuz'; 2.再停掉sqlserver服務(注意不要分離數據庫)3.用原數據庫的數據文件'xxzx_discuz_Log.MDF' 覆蓋掉新建的數據庫
4.再重啟sqlserver服務5.此時打開企業管理器時會出現置疑,先不管,執行下面的語句(注意修改其中的數據庫名)6.完成后一般就可以訪問數據庫中的數據了。這時,數據庫本身一般還有問題,解決辦法是:利用數據庫的腳本創建一個新的數據庫,然后通過DTS將數據導進去就行了.SQL代碼use;master ;; go ;; sp_configure;'allow;updates',1;reconfigure;withoverride ;; go ;; updatesysdatabases;setstatus;=32768;wherename='置疑的數據庫名' go ;; sp_dboption;'置疑的數據庫名',;'single;user',;'true' go ;; dbcc;checkdb('置疑的數據庫名'); ;; go ;; updatesysdatabases;setstatus;=28;wherename='置疑的數據庫名' go ;; sp_configure;'allow;updates',;0;reconfigure;withoverride ;; go; ;; sp_dboption;'置疑的數據庫名',;'single;user',;'false' go;; 特別注意最后一步中的說明“這時,數據庫本身一般還有問題,解決辦法是:利用數據庫的腳本創建一個新的數據庫,然后通過DTS將數據導進去就行了”參考文章:Sql Server附加數據庫出現1813錯誤的解決方法