mssql數(shù)據(jù)庫系統(tǒng)崩潰后的一般處理步驟與方法
更新時間:2007年03月16日 00:00:00 作者:
mssql數(shù)據(jù)庫系統(tǒng)崩潰后的一般處理步驟
情況描述:
SQL Server 2000崩潰,重新安裝數(shù)據(jù)庫。
有以下準備:
1, 三個系統(tǒng)庫(master,msdb,model)的完全備份:
2 兩個用戶數(shù)據(jù)庫(user01,user02)的備份(周日的完全備份+除周日外每天的差異備份):
三個系統(tǒng)數(shù)據(jù)庫是早期備份的,之間沒有更新過帳號信息,沒有增減過作業(yè)等等。
兩個用戶數(shù)據(jù)庫在上周日晚做過完全備份(user01.bak和user02.bak)
準備重新安裝數(shù)據(jù)庫,希望能一次性恢復到用戶數(shù)據(jù)庫最后一個備份前的狀態(tài)。
常規(guī)恢復過程大致如下
1. 備份可用的數(shù)據(jù), 包含所有系統(tǒng)數(shù)據(jù)庫和用戶數(shù)據(jù)庫的數(shù)據(jù)文件和日志文件(*.mdf/ldf/ndf)
2. 卸載原來的安裝
3. 系統(tǒng)表查找和刪除所有的MSSQLServer項
4. 磁盤上刪除安裝SQL SErver產(chǎn)生的所有文件
5. 重新安裝SQL Server,所需安裝的補丁的版本要求保持與備份系統(tǒng)數(shù)據(jù)庫時安裝的補丁版本一致
6. 單用戶模式下恢復master數(shù)據(jù)庫
7. 恢復其他系統(tǒng)數(shù)據(jù)庫
8. 恢復用戶數(shù)據(jù)庫
可以做的嘗試
如果時間比較充分,而且想盡量恢復數(shù)據(jù)到最近的時間點, 可以在上述步驟中做下面的嘗試
1. 把6,7兩步改為:
a. 停止MSSQL服務
b. 用步驟1備份的系統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)文件和日志文件替換安裝后生成的系統(tǒng)數(shù)據(jù)庫的對應文件
c. 建立與SQL Server系統(tǒng)崩潰之前一樣的用戶數(shù)據(jù)庫的存放目錄, 并且把用戶數(shù)據(jù)庫文件按原來的位置存放
d. 啟動MSSQL服務
e. 如果MSSQL服務成功, 在企業(yè)管理看看用戶數(shù)據(jù)庫有沒有置疑, 如果沒有置疑, 則其他操作都不用做了, 數(shù)據(jù)已經(jīng)恢復
注意:
在做上面的步驟b之前, 先備份準備覆蓋的文件
2. 如果步驟1的嘗試不成功, 則再做下面的嘗試, 把步驟8修改為下面的:
a. 停止MSSQL服務
b. 用備份的文件還原被覆蓋的文件
c. 嘗試用附加的方式恢復用戶數(shù)據(jù)庫
d. 如果成功, 則修復各用戶數(shù)據(jù)庫中的孤立用戶
恢復過程會涉及到的一些具體處理
1. 恢復系統(tǒng)數(shù)據(jù)庫:
在SQL Server數(shù)據(jù)庫中,系統(tǒng)信息存儲在系統(tǒng)數(shù)據(jù)庫中,主要的系統(tǒng)數(shù)據(jù)庫包括:
master-從整體上控制用戶數(shù)據(jù)庫和SQL Server操作,在創(chuàng)建了任何用戶定義的對象后,都要備份它
model-為新數(shù)據(jù)庫提供模版和原型
msdb-包含了有關作業(yè)、報警及操作員等信息
如果包含系統(tǒng)數(shù)據(jù)庫的介質(zhì)變了,那么必須重建系統(tǒng)數(shù)據(jù)庫,如果你仍然可以啟動SQL Server服務,則可以通過RESTORE語句從系統(tǒng)數(shù)據(jù)庫的備份中恢復數(shù)據(jù)庫。
如果master壞了,不能啟動系統(tǒng),可以按照下面步驟進行恢復
1. 重建系統(tǒng)數(shù)據(jù)庫 運行c:\mssql7\binn\rebuildm.exe,按照提示進行即可,
過程中需要系統(tǒng)數(shù)據(jù)庫樣本的路徑,可在安裝光盤中找到;
2 重建系統(tǒng)數(shù)據(jù)庫后,啟動SQL Server服務,用系統(tǒng)數(shù)據(jù)庫的備份恢復數(shù)據(jù)庫
就行了通常恢復順序為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的啟動參數(shù)中輸入-c -f -m或者輸入-m,點擊開始
3. 進行master數(shù)據(jù)庫的恢復
a. 直接進入查詢分析器,有個提示不要理會它
輸入恢復語句進行數(shù)據(jù)庫恢復:
RESTORE DATABASE master from disk='c:\具體的備份文件名'
b. 或者用這個,在命令提示符下輸入,注意大小寫
使用"windows身份驗證"的,輸入:isql /E
使用"sql server和windows身份驗證"的,輸入:isql /U"用戶名" /P"密碼"
然后在出現(xiàn)的提示符下輸入(注意1>,2>是提示符):
1>RESTORE DATABASE master from disk='c:\具體的備份文件名'
2>GO
2. 還原數(shù)據(jù)庫的具體步驟:
1. 恢復最近一次的完整備份
企業(yè)管理器--右鍵"數(shù)據(jù)庫"--所有任務--還原數(shù)據(jù)庫
--"還原為數(shù)據(jù)庫庫"中輸入還原后的數(shù)據(jù)庫名,設為:test
--還原選擇"從設備"--選擇設備--添加--添加你的備份文件
--確定,回到數(shù)據(jù)庫還原的界面
--"還原備份集",選擇"數(shù)據(jù)庫--完全"
--選項--將"移至物理文件名"中的物理文件名修改為你的數(shù)據(jù)文件要存放的文件名
--如果要還原的數(shù)據(jù)庫已經(jīng)存在,選擇"在現(xiàn)有數(shù)據(jù)庫上強制還原"
--"恢復完成狀態(tài)",選擇"使數(shù)據(jù)庫不再運行,但能還原其它事務日志"
--確定
--或用SQL語句:
RESTORE DATABASE 數(shù)據(jù)庫名
FROM DISK = 'c:\你的完全備份文件名'
WITH NORECOVERY
2. 恢復完全備份后, 最近一次的差異備份(如果有的話)
企業(yè)管理器--右鍵"數(shù)據(jù)庫"--所有任務--還原數(shù)據(jù)庫
--"還原為數(shù)據(jù)庫庫"中選擇數(shù)據(jù)庫名:test
--還原選擇"從設備"--選擇設備--添加--添加你的備份文件
--確定,回到數(shù)據(jù)庫還原的界面
--"還原備份集",選擇"數(shù)據(jù)庫--差異"
--"恢復完成狀態(tài)",選擇"使數(shù)據(jù)庫不再運行,但能還原其它事務日志"
--確定
--或用SQL語句:
--或用SQL語句:
RESTORE DATABASE 數(shù)據(jù)庫名
FROM DISK = 'c:\你的差異備份文件名'
WITH NORECOVERY
3. 按時間先后, 恢復差異備份后(如果沒有差異備份,則是完全備份)的所有日志備份
企業(yè)管理器--右鍵"數(shù)據(jù)庫"--所有任務--還原數(shù)據(jù)庫
--"還原為數(shù)據(jù)庫庫"中選擇數(shù)據(jù)庫名:test
--還原選擇"從設備"--選擇設備--添加--添加你的備份文件
--確定,回到數(shù)據(jù)庫還原的界面
--"還原備份集",選擇"事務日志"
--"恢復完成狀態(tài)"
如果是恢復最后一個日志文件,選擇"使數(shù)據(jù)庫可以繼續(xù)運行,但無法還原其它事務日志"
否則選擇"使數(shù)據(jù)庫不再運行,但能還原其它事務日志"
--確定
--或用SQL語句:
RESTORE DATABASE 數(shù)據(jù)庫名
FROM DISK = 'c:\你的日志文件名'
WITH RECOVERY
3. 解決孤立用戶:
1. 查看某個數(shù)據(jù)庫的孤立用戶:
USE 庫名
EXEC sp_change_users_login 'Report'
2. 自動修復某個孤立用戶:
USE 庫名
EXEC sp_change_users_login 'Auto_Fix', '孤立用戶名', NULL, '密碼'
--密碼指用戶對應的登錄不存在時, 系統(tǒng)自動建立登錄, 為登錄分配的密碼
情況描述:
SQL Server 2000崩潰,重新安裝數(shù)據(jù)庫。
有以下準備:
1, 三個系統(tǒng)庫(master,msdb,model)的完全備份:
2 兩個用戶數(shù)據(jù)庫(user01,user02)的備份(周日的完全備份+除周日外每天的差異備份):
三個系統(tǒng)數(shù)據(jù)庫是早期備份的,之間沒有更新過帳號信息,沒有增減過作業(yè)等等。
兩個用戶數(shù)據(jù)庫在上周日晚做過完全備份(user01.bak和user02.bak)
準備重新安裝數(shù)據(jù)庫,希望能一次性恢復到用戶數(shù)據(jù)庫最后一個備份前的狀態(tài)。
常規(guī)恢復過程大致如下
1. 備份可用的數(shù)據(jù), 包含所有系統(tǒng)數(shù)據(jù)庫和用戶數(shù)據(jù)庫的數(shù)據(jù)文件和日志文件(*.mdf/ldf/ndf)
2. 卸載原來的安裝
3. 系統(tǒng)表查找和刪除所有的MSSQLServer項
4. 磁盤上刪除安裝SQL SErver產(chǎn)生的所有文件
5. 重新安裝SQL Server,所需安裝的補丁的版本要求保持與備份系統(tǒng)數(shù)據(jù)庫時安裝的補丁版本一致
6. 單用戶模式下恢復master數(shù)據(jù)庫
7. 恢復其他系統(tǒng)數(shù)據(jù)庫
8. 恢復用戶數(shù)據(jù)庫
可以做的嘗試
如果時間比較充分,而且想盡量恢復數(shù)據(jù)到最近的時間點, 可以在上述步驟中做下面的嘗試
1. 把6,7兩步改為:
a. 停止MSSQL服務
b. 用步驟1備份的系統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)文件和日志文件替換安裝后生成的系統(tǒng)數(shù)據(jù)庫的對應文件
c. 建立與SQL Server系統(tǒng)崩潰之前一樣的用戶數(shù)據(jù)庫的存放目錄, 并且把用戶數(shù)據(jù)庫文件按原來的位置存放
d. 啟動MSSQL服務
e. 如果MSSQL服務成功, 在企業(yè)管理看看用戶數(shù)據(jù)庫有沒有置疑, 如果沒有置疑, 則其他操作都不用做了, 數(shù)據(jù)已經(jīng)恢復
注意:
在做上面的步驟b之前, 先備份準備覆蓋的文件
2. 如果步驟1的嘗試不成功, 則再做下面的嘗試, 把步驟8修改為下面的:
a. 停止MSSQL服務
b. 用備份的文件還原被覆蓋的文件
c. 嘗試用附加的方式恢復用戶數(shù)據(jù)庫
d. 如果成功, 則修復各用戶數(shù)據(jù)庫中的孤立用戶
恢復過程會涉及到的一些具體處理
1. 恢復系統(tǒng)數(shù)據(jù)庫:
在SQL Server數(shù)據(jù)庫中,系統(tǒng)信息存儲在系統(tǒng)數(shù)據(jù)庫中,主要的系統(tǒng)數(shù)據(jù)庫包括:
master-從整體上控制用戶數(shù)據(jù)庫和SQL Server操作,在創(chuàng)建了任何用戶定義的對象后,都要備份它
model-為新數(shù)據(jù)庫提供模版和原型
msdb-包含了有關作業(yè)、報警及操作員等信息
如果包含系統(tǒng)數(shù)據(jù)庫的介質(zhì)變了,那么必須重建系統(tǒng)數(shù)據(jù)庫,如果你仍然可以啟動SQL Server服務,則可以通過RESTORE語句從系統(tǒng)數(shù)據(jù)庫的備份中恢復數(shù)據(jù)庫。
如果master壞了,不能啟動系統(tǒng),可以按照下面步驟進行恢復
1. 重建系統(tǒng)數(shù)據(jù)庫 運行c:\mssql7\binn\rebuildm.exe,按照提示進行即可,
過程中需要系統(tǒng)數(shù)據(jù)庫樣本的路徑,可在安裝光盤中找到;
2 重建系統(tǒng)數(shù)據(jù)庫后,啟動SQL Server服務,用系統(tǒng)數(shù)據(jù)庫的備份恢復數(shù)據(jù)庫
就行了通常恢復順序為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的啟動參數(shù)中輸入-c -f -m或者輸入-m,點擊開始
3. 進行master數(shù)據(jù)庫的恢復
a. 直接進入查詢分析器,有個提示不要理會它
輸入恢復語句進行數(shù)據(jù)庫恢復:
RESTORE DATABASE master from disk='c:\具體的備份文件名'
b. 或者用這個,在命令提示符下輸入,注意大小寫
使用"windows身份驗證"的,輸入:isql /E
使用"sql server和windows身份驗證"的,輸入:isql /U"用戶名" /P"密碼"
然后在出現(xiàn)的提示符下輸入(注意1>,2>是提示符):
1>RESTORE DATABASE master from disk='c:\具體的備份文件名'
2>GO
2. 還原數(shù)據(jù)庫的具體步驟:
1. 恢復最近一次的完整備份
企業(yè)管理器--右鍵"數(shù)據(jù)庫"--所有任務--還原數(shù)據(jù)庫
--"還原為數(shù)據(jù)庫庫"中輸入還原后的數(shù)據(jù)庫名,設為:test
--還原選擇"從設備"--選擇設備--添加--添加你的備份文件
--確定,回到數(shù)據(jù)庫還原的界面
--"還原備份集",選擇"數(shù)據(jù)庫--完全"
--選項--將"移至物理文件名"中的物理文件名修改為你的數(shù)據(jù)文件要存放的文件名
--如果要還原的數(shù)據(jù)庫已經(jīng)存在,選擇"在現(xiàn)有數(shù)據(jù)庫上強制還原"
--"恢復完成狀態(tài)",選擇"使數(shù)據(jù)庫不再運行,但能還原其它事務日志"
--確定
--或用SQL語句:
RESTORE DATABASE 數(shù)據(jù)庫名
FROM DISK = 'c:\你的完全備份文件名'
WITH NORECOVERY
2. 恢復完全備份后, 最近一次的差異備份(如果有的話)
企業(yè)管理器--右鍵"數(shù)據(jù)庫"--所有任務--還原數(shù)據(jù)庫
--"還原為數(shù)據(jù)庫庫"中選擇數(shù)據(jù)庫名:test
--還原選擇"從設備"--選擇設備--添加--添加你的備份文件
--確定,回到數(shù)據(jù)庫還原的界面
--"還原備份集",選擇"數(shù)據(jù)庫--差異"
--"恢復完成狀態(tài)",選擇"使數(shù)據(jù)庫不再運行,但能還原其它事務日志"
--確定
--或用SQL語句:
--或用SQL語句:
RESTORE DATABASE 數(shù)據(jù)庫名
FROM DISK = 'c:\你的差異備份文件名'
WITH NORECOVERY
3. 按時間先后, 恢復差異備份后(如果沒有差異備份,則是完全備份)的所有日志備份
企業(yè)管理器--右鍵"數(shù)據(jù)庫"--所有任務--還原數(shù)據(jù)庫
--"還原為數(shù)據(jù)庫庫"中選擇數(shù)據(jù)庫名:test
--還原選擇"從設備"--選擇設備--添加--添加你的備份文件
--確定,回到數(shù)據(jù)庫還原的界面
--"還原備份集",選擇"事務日志"
--"恢復完成狀態(tài)"
如果是恢復最后一個日志文件,選擇"使數(shù)據(jù)庫可以繼續(xù)運行,但無法還原其它事務日志"
否則選擇"使數(shù)據(jù)庫不再運行,但能還原其它事務日志"
--確定
--或用SQL語句:
RESTORE DATABASE 數(shù)據(jù)庫名
FROM DISK = 'c:\你的日志文件名'
WITH RECOVERY
3. 解決孤立用戶:
1. 查看某個數(shù)據(jù)庫的孤立用戶:
USE 庫名
EXEC sp_change_users_login 'Report'
2. 自動修復某個孤立用戶:
USE 庫名
EXEC sp_change_users_login 'Auto_Fix', '孤立用戶名', NULL, '密碼'
--密碼指用戶對應的登錄不存在時, 系統(tǒng)自動建立登錄, 為登錄分配的密碼
相關文章
SQL?Server2022安裝提示"安裝程序在運行作業(yè)UpdateResult時失敗"解決方法
平時大家在安裝數(shù)據(jù)庫的時候,我也相信大家會遇到過一些報錯導致安裝失敗,下面這篇文章主要給大家介紹了關于SQL?Server2022安裝提示"安裝程序在運行作業(yè)UpdateResult時失敗"的解決方法,需要的朋友可以參考下2023-05-05
如何在SQLSERVER中快速有條件刪除海量數(shù)據(jù)
如何在SQLSERVER中快速有條件刪除海量數(shù)據(jù)...2006-09-09
一步步教你建立SQL數(shù)據(jù)庫的表分區(qū)
分區(qū)存儲提高了數(shù)據(jù)庫的性能,被分區(qū)存儲的數(shù)據(jù)物理上是多個文件,但邏輯上任然是一個表,對表的任何操作都跟沒分區(qū)之前一樣。插入、刪除、查詢、更新等操作的時候,數(shù)據(jù)庫會自動為你找到對應的分區(qū),然后執(zhí)行操作。2015-09-09
VS2022與SQL?server數(shù)據(jù)庫連接與訪問方法操作
在學習過程中我們常常需要連接數(shù)據(jù)庫對大量的數(shù)據(jù)進行管理,下面這篇文章主要給大家介紹了關于VS2022與SQL?server數(shù)據(jù)庫連接與訪問的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2024-01-01
SQL SERVER使用REPLACE將某一列字段中的某個值替換為其他的值
本節(jié)主要介紹了SQL SERVER使用REPLACE將某一列字段中的某個值替換為其他的值,需要的朋友可以參考下2014-08-08
SQLSERVER Pager store procedure分頁存儲過程
SQL SERVER(2005)以上版本可用,相對應的頁面邏輯中寫的對應調(diào)用該存儲過程的方法2010-06-06
SQL order by ID desc/asc加一個排序的字段解決查詢慢問題
解決方法就是在order by ID desc再加一個排序的字段,這樣子可能會把速度提高很多,需要朋友可以試一下2012-12-12
動態(tài)給表添加刪除字段并同時修改它的插入更新存儲過程
有一個表,用戶需要在后臺操作它,希望能對它動態(tài)進行添加刪除字段2011-11-11

