| 導購 | 订阅 | 在线投稿
分享
 
 
 

SQL Server 2000數據庫崩潰後的補救措施

來源:互聯網  2008-06-01 03:13:58  評論

SQL Server 2000數據庫崩潰後的補救措施:

案例描述:

SQL Server 2000數據庫崩潰後,重裝數據庫前的准備:

1.三個系統庫(master,msdb,model)的完全備份:

2.兩個用戶數據庫(user01,user02)的備份(周日的完全備份+除周日外每天的差異備份):

三個系統數據庫是早期備份的,之間沒有更新過帳號信息,沒有增減過饕檔鵲取?

兩個用戶數據庫在上周日晚做過完全備份(user01.bak和user02.bak)

需求:一次性恢複到用戶數據庫最後一個備份前的狀態。

下文中,我們將介紹一下常規的恢複過程:

1. 備份可用的數據, 包含所有系統數據庫和用戶數據庫的數據文件和日志文件(*.mdf/ldf/ndf)

2. 卸載原來的安裝

3. 系統表查找和刪除所有的MSSQLServer項

4. 磁盤上刪除安裝SQL SErver産生的所有文件

5. 重新安裝SQL Server,所需安裝的補丁的版本要求保持與備份系統數據庫時安裝的補丁版本一致

6. 單用戶模式下恢複master數據庫

7. 恢複其他系統數據庫

8. 恢複用戶數據庫

此外,我們還可以嘗試用下面的方法:

假如你的時間比較充裕,而且想盡量恢複數據到最近的時間點, 可以在上述步驟中做以下的嘗試:

1. 首先,將第6,7兩個步驟改爲:

a. 停止MSSQL服務

b. 用步驟1備份的系統數據庫的數據文件和日志文件替換安裝後生成的系統數據庫的對應文件

c. 建立與SQL Server系統崩潰之前一樣的用戶數據庫的存放目錄, 並且把用戶數據庫文件按原來的位置存放

d. 啓動MSSQL服務

e. 如果MSSQL服務成功, 在企業管理看看用戶數據庫有沒有置疑, 如果沒有置疑, 則其他操作都不用做了, 數據已經恢複

注意事項:

在具體操作以上的步驟b之前, 先備份准備覆蓋的文件。

2. 如果步驟1的嘗試不成功, 則再做下面的嘗試, 把步驟8修改爲下面的:

a. 停止MSSQL服務

b. 用備份的文件還原被覆蓋的文件

c. 嘗試用附加的方式恢複用戶數據庫

d. 如果成功, 則修複各用戶數據庫中的孤立用戶

恢複過程會涉及到的一些具體處理

1. 恢複系統數據庫:

在SQL Server數據庫中,系統信息存儲在系統數據庫中,主要的系統數據庫包括:

master-從整體上控制用戶數據庫和SQL Server操作,在創建了任何用戶定義的對象後,都要備份它

model-爲新數據庫提供模版和原型

msdb-包含了有關作業、報警及操作員等信息

假如包含系統數據庫的介質已經改變,則必須重建系統數據庫,如果你目前仍然可以啓動SQL Server服務,則可以通過RESTORE語句從系統數據庫的備份中恢複數據庫。

如果master壞了,不能啓動系統,可以按照下面步驟進行恢複

(1)重建系統數據庫 運行c:\mssql7\binn\rebuildm.exe,按照提示進行即可,

過程中需要系統數據庫樣本的路徑,可在安裝光盤中找到;

(2)重建系統數據庫後,啓動SQL Server服務,用系統數據庫的備份恢複數據庫

就行了通常恢複順序爲master->msdb->model

在恢複master的備份時要注意:必須在單用戶(single user)模式下進行

進入單用戶模式的方法:

a. 在命令行模式下輸入:sqlservr -c -f -m或者輸入sqlservr -m

其中:-c 可以縮短啓動時間,SQL Server 不作爲Windows NT的服務啓動

-f 用最小配置啓動SQL Server

-m 單用戶模式啓動SQL Server

b. 可以在控制面板-服務-MSSQLServer的啓動參數中輸入-c -f -m或者輸入-m,點擊開始

(3)進行master數據庫的恢複

a. 直接進入查詢分析器,有個提示不要理會它

輸入恢複語句進行數據庫恢複:

RESTORE DATABASE master from disk='c:\具體的備份文件名'

b. 或者用這個,在命令提示符下輸入,注意大小寫

使用"windows身份驗證"的,輸入:isql /E

使用"sql server和windows身份驗證"的,輸入:isql /U"用戶名" /P"密碼"

然後在出現的提示符下輸入(注意1>,2>是提示符):

1>RESTORE DATABASE master from disk='c:\具體的備份文件名'

2>GO

2. 還原數據庫的具體步驟:

(1) 恢複最近一次的完整備份

企業管理器--右鍵"數據庫"--所有任務--還原數據庫

--"還原爲數據庫庫"中輸入還原後的數據庫名,設爲:test

--還原選擇"從設備"--選擇設備--添加--添加你的備份文件

--確定,回到數據庫還原的界面

--"還原備份集",選擇"數據庫--完全"

--選項--將"移至物理文件名"中的物理文件名修改爲你的數據文件要存放的文件名

--如果要還原的數據庫已經存在,選擇"在現有數據庫上強制還原"

--"恢複完成狀態",選擇"使數據庫不再運行,但能還原其它事務日志"

--確定

--或用SQL語句:

RESTORE DATABASE 數據庫名

FROM DISK = 'c:\你的完全備份文件名'

WITH NORECOVERY

(2)恢複完全備份後, 最近一次的差異備份(如果有的話)

企業管理器--右鍵"數據庫"--所有任務--還原數據庫

--"還原爲數據庫庫"中選擇數據庫名:test

--還原選擇"從設備"--選擇設備--添加--添加你的備份文件

--確定,回到數據庫還原的界面

--"還原備份集",選擇"數據庫--差異"

--"恢複完成狀態",選擇"使數據庫不再運行,但能還原其它事務日志"

--確定

--或用SQL語句:

--或用SQL語句:

RESTORE DATABASE 數據庫名

FROM DISK = 'c:\你的差異備份文件名'

WITH NORECOVERY

(3)按時間先後, 恢複差異備份後(如果沒有差異備份,則是完全備份)的所有日志備份

企業管理器--右鍵"數據庫"--所有任務--還原數據庫

--"還原爲數據庫庫"中選擇數據庫名:test

--還原選擇"從設備"--選擇設備--添加--添加你的備份文件

--確定,回到數據庫還原的界面

--"還原備份集",選擇"事務日志"

--"恢複完成狀態"

如果是恢複最後一個日志文件,選擇"使數據庫可以繼續運行,但無法還原其它事務日志"

否則選擇"使數據庫不再運行,但能還原其它事務日志"

--確定

--或者使用SQL語句:

RESTORE DATABASE 數據庫名

FROM DISK = 'c:\你的日志文件名'

WITH RECOVERY

3. 解決孤立用戶:

(1) 查看某個數據庫的孤立用戶:

USE 庫名

EXEC sp_change_users_login 'Report'

(2)自動修複某個孤立的用戶:

USE 庫名

EXEC sp_change_users_login 'Auto_Fix', '孤立用戶名', NULL, '密碼'

--假如密碼指示用戶對應的登錄不存在時, 系統自動建立登錄, 爲登錄分配密碼。

SQL Server 2000數據庫崩潰後的補救措施: 案例描述: SQL Server 2000數據庫崩潰後,重裝數據庫前的准備: 1.三個系統庫(master,msdb,model)的完全備份: 2.兩個用戶數據庫(user01,user02)的備份(周日的完全備份+除周日外每天的差異備份): 三個系統數據庫是早期備份的,之間沒有更新過帳號信息,沒有增減過饕檔鵲取? 兩個用戶數據庫在上周日晚做過完全備份(user01.bak和user02.bak) 需求:一次性恢複到用戶數據庫最後一個備份前的狀態。 下文中,我們將介紹一下常規的恢複過程: 1. 備份可用的數據, 包含所有系統數據庫和用戶數據庫的數據文件和日志文件(*.mdf/ldf/ndf) 2. 卸載原來的安裝 3. 系統表查找和刪除所有的MSSQLServer項 4. 磁盤上刪除安裝SQL SErver産生的所有文件 5. 重新安裝SQL Server,所需安裝的補丁的版本要求保持與備份系統數據庫時安裝的補丁版本一致 6. 單用戶模式下恢複master數據庫 7. 恢複其他系統數據庫 8. 恢複用戶數據庫 此外,我們還可以嘗試用下面的方法: 假如你的時間比較充裕,而且想盡量恢複數據到最近的時間點, 可以在上述步驟中做以下的嘗試: 1. 首先,將第6,7兩個步驟改爲: a. 停止MSSQL服務 b. 用步驟1備份的系統數據庫的數據文件和日志文件替換安裝後生成的系統數據庫的對應文件 c. 建立與SQL Server系統崩潰之前一樣的用戶數據庫的存放目錄, 並且把用戶數據庫文件按原來的位置存放 d. 啓動MSSQL服務 e. 如果MSSQL服務成功, 在企業管理看看用戶數據庫有沒有置疑, 如果沒有置疑, 則其他操作都不用做了, 數據已經恢複 注意事項: 在具體操作以上的步驟b之前, 先備份准備覆蓋的文件。 2. 如果步驟1的嘗試不成功, 則再做下面的嘗試, 把步驟8修改爲下面的: a. 停止MSSQL服務 b. 用備份的文件還原被覆蓋的文件 c. 嘗試用附加的方式恢複用戶數據庫 d. 如果成功, 則修複各用戶數據庫中的孤立用戶 恢複過程會涉及到的一些具體處理 1. 恢複系統數據庫: 在SQL Server數據庫中,系統信息存儲在系統數據庫中,主要的系統數據庫包括: master-從整體上控制用戶數據庫和SQL Server操作,在創建了任何用戶定義的對象後,都要備份它 model-爲新數據庫提供模版和原型 msdb-包含了有關作業、報警及操作員等信息 假如包含系統數據庫的介質已經改變,則必須重建系統數據庫,如果你目前仍然可以啓動SQL Server服務,則可以通過RESTORE語句從系統數據庫的備份中恢複數據庫。 如果master壞了,不能啓動系統,可以按照下面步驟進行恢複 (1)重建系統數據庫 運行c:\mssql7\binn\rebuildm.exe,按照提示進行即可, 過程中需要系統數據庫樣本的路徑,可在安裝光盤中找到; (2)重建系統數據庫後,啓動SQL Server服務,用系統數據庫的備份恢複數據庫 就行了通常恢複順序爲master->msdb->model 在恢複master的備份時要注意:必須在單用戶(single user)模式下進行 進入單用戶模式的方法: a. 在命令行模式下輸入:sqlservr -c -f -m或者輸入sqlservr -m 其中:-c 可以縮短啓動時間,SQL Server 不作爲Windows NT的服務啓動 -f 用最小配置啓動SQL Server -m 單用戶模式啓動SQL Server b. 可以在控制面板-服務-MSSQLServer的啓動參數中輸入-c -f -m或者輸入-m,點擊開始 (3)進行master數據庫的恢複 a. 直接進入查詢分析器,有個提示不要理會它 輸入恢複語句進行數據庫恢複: RESTORE DATABASE master from disk='c:\具體的備份文件名' b. 或者用這個,在命令提示符下輸入,注意大小寫 使用"windows身份驗證"的,輸入:isql /E 使用"sql server和windows身份驗證"的,輸入:isql /U"用戶名" /P"密碼" 然後在出現的提示符下輸入(注意1>,2>是提示符): 1>RESTORE DATABASE master from disk='c:\具體的備份文件名' 2>GO 2. 還原數據庫的具體步驟: (1) 恢複最近一次的完整備份 企業管理器--右鍵"數據庫"--所有任務--還原數據庫 --"還原爲數據庫庫"中輸入還原後的數據庫名,設爲:test --還原選擇"從設備"--選擇設備--添加--添加你的備份文件 --確定,回到數據庫還原的界面 --"還原備份集",選擇"數據庫--完全" --選項--將"移至物理文件名"中的物理文件名修改爲你的數據文件要存放的文件名 --如果要還原的數據庫已經存在,選擇"在現有數據庫上強制還原" --"恢複完成狀態",選擇"使數據庫不再運行,但能還原其它事務日志" --確定 --或用SQL語句: RESTORE DATABASE 數據庫名 FROM DISK = 'c:\你的完全備份文件名' WITH NORECOVERY (2)恢複完全備份後, 最近一次的差異備份(如果有的話) 企業管理器--右鍵"數據庫"--所有任務--還原數據庫 --"還原爲數據庫庫"中選擇數據庫名:test --還原選擇"從設備"--選擇設備--添加--添加你的備份文件 --確定,回到數據庫還原的界面 --"還原備份集",選擇"數據庫--差異" --"恢複完成狀態",選擇"使數據庫不再運行,但能還原其它事務日志" --確定 --或用SQL語句: --或用SQL語句: RESTORE DATABASE 數據庫名 FROM DISK = 'c:\你的差異備份文件名' WITH NORECOVERY (3)按時間先後, 恢複差異備份後(如果沒有差異備份,則是完全備份)的所有日志備份 企業管理器--右鍵"數據庫"--所有任務--還原數據庫 --"還原爲數據庫庫"中選擇數據庫名:test --還原選擇"從設備"--選擇設備--添加--添加你的備份文件 --確定,回到數據庫還原的界面 --"還原備份集",選擇"事務日志" --"恢複完成狀態" 如果是恢複最後一個日志文件,選擇"使數據庫可以繼續運行,但無法還原其它事務日志" 否則選擇"使數據庫不再運行,但能還原其它事務日志" --確定 --或者使用SQL語句: RESTORE DATABASE 數據庫名 FROM DISK = 'c:\你的日志文件名' WITH RECOVERY 3. 解決孤立用戶: (1) 查看某個數據庫的孤立用戶: USE 庫名 EXEC sp_change_users_login 'Report' (2)自動修複某個孤立的用戶: USE 庫名 EXEC sp_change_users_login 'Auto_Fix', '孤立用戶名', NULL, '密碼' --假如密碼指示用戶對應的登錄不存在時, 系統自動建立登錄, 爲登錄分配密碼。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有