MS SQL Server問題與其正確解答方案
以下的文章主要向大家講述的是MS SQL Server問題與其正確解答方案,MS SQL Server在實際操作中我們經(jīng)常會遇到一些問題,你是否對其頭疼至極,以下的文章主要是對這些問題的實際解答。
MS SQL Server問題一、數(shù)據(jù)庫恢復時出現(xiàn)諸如“設備激活錯誤,請使用with move選項來標志該文件的有效位置”報錯的解決方法
MS SQL Server問題一、數(shù)據(jù)庫恢復時出現(xiàn)諸如“設備激活錯誤,請使用with move選項來標志該文件的有效位置”報錯的解決方法
別人將一個數(shù)據(jù)庫備份發(fā)給了我,我為了看里面的表,所以我就在我機器里裝一個MSSQL數(shù)據(jù)庫?,F(xiàn)在我想把保存的這個備份數(shù)據(jù)庫 caiwu.db 導入到我的 MS SQL數(shù)據(jù)庫中,發(fā)現(xiàn)在企業(yè)管理器中,操作:所有任務——>還原數(shù)據(jù)庫——>選擇“從設備”還原,在硬盤里找到了那個備份數(shù)據(jù)庫文件caiwu.db,導入。報錯:設備激活錯誤,請使用with move選項來標志該文件的有效位置。
解決方法:右鍵點“數(shù)據(jù)庫”(注意不是某個特定的數(shù)據(jù)庫)--》所有任務--》還原數(shù)據(jù)庫--》選擇“從設備”還原,選擇要還原成的數(shù)據(jù)庫名,然后在選項卡中,選擇最現(xiàn)有數(shù)據(jù)庫上強制還原數(shù)據(jù)庫,然后在下面修改數(shù)據(jù)庫還原后的物理路徑,這個路徑要是存在的一個路徑,否則就會出現(xiàn)上面的錯誤,邏輯文件名可以不用改。
MS SQL Server問題三、怎么樣把sql server 2000的用戶表的所有者,改成dbo,而不是用戶名。
(附修改存儲過程的方法,在查詢器中執(zhí)行:
EXEC sp_changeobjectowner 'usera.hishop_creatorder', 'dbo'),就把 usera的存儲過程改為dbo所有了。
答:方法一:右鍵點擊該表-》設計表,在上面的一排小圖標中,點最后一個“條件約束”,點“表”頁,在里面更改所有者。(若沒有條件約束的小圖標,可以點右鍵,能看到一個“check約束”的選項)
方法二:利用腳本直接執(zhí)行,用系統(tǒng)帳號或者超戶登陸到該數(shù)據(jù)庫,然后執(zhí)行下面語句:
- sp_configure 'allow updates','1'
- go
- reconfigure with override
- go
- update sysobjects set uid=1 where uid<>1
- go
- sp_configure 'allow updates','0'
- go
- reconfigure with override
第二種方法只能使用一次,第二次使用會出錯。
三、只有mdf和ldf文件,甚至只有mdf文件,如何恢復數(shù)據(jù)庫
1. 首先確認已經(jīng)備份了.mdf和.ldf文件。
2. 在SQL Server中新建一個同名的數(shù)據(jù)庫,然后停止SQL Server服務。
3. 用原有的.mdf和.ldf文件覆蓋新建數(shù)據(jù)庫對應的.mdf和.ldf文件。
4. 重新啟動SQL Server服務,這是應該會看到這個數(shù)據(jù)庫處于置疑(Suspect)狀態(tài)。(人品好的話,這個時候數(shù)據(jù)庫就已經(jīng)恢復正常了,上次xrf的數(shù)據(jù)庫就是這樣被我恢復的。人品不好的話,下面的步驟也不行,我有一次就是找了一個北京做數(shù)據(jù)恢復的公司才恢復完畢。)
5. 在SQL查詢分析器中執(zhí)行以下命令,以允許更新系統(tǒng)表:
- use master
- go
- sp_configure ‘allow updates’,1
- reconfigure with override
- go
6. 將這個數(shù)據(jù)庫置為緊急模式:
- update sysdatabases set status = 32768 where name = 'db_name'
- go
7. 使用DBCC CHECKDB命令檢查數(shù)據(jù)庫中的錯誤:
- DBCC CHECKDB(‘db_name’)
- GO
8. 如果DBCC CHECKDB命令失敗,請轉(zhuǎn)至第10步,否則先將數(shù)據(jù)庫置為單用戶模式,再嘗試對其進行修復:
- sp_dboption 'db_name',’single user’,’true’
- DBCC CHECKDB(‘db_name’, REPAIR_ALLOW_DATA_LOSS)
- GO
如果在執(zhí)行DBCC CHECKDB(‘db_name’, REPAIR_ALLOW_DATA_LOSS)命令時提示說數(shù)據(jù)庫未處于單用戶模式狀態(tài)的話,則重新啟動SQL Server服務,然后繼續(xù)嘗試。
9. 如果DBCC CHECKDB(‘db_name’, REPAIR_ALLOW_DATA_LOSS)命令失敗,請轉(zhuǎn)至第10步,否則若成功修復了數(shù)據(jù)庫中的錯誤:
重新執(zhí)行DBCC CHECKDB(‘db_name’)命令,確認數(shù)據(jù)庫中已沒有錯誤存在。
清除數(shù)據(jù)庫的置疑狀態(tài):sp_resetstatus 'db_name'
清除數(shù)據(jù)庫的單用戶模式狀態(tài):sp_dboption 'db_name',’single user’,’false’
重新啟動SQL Server服務,如果一切正常的話,則數(shù)據(jù)庫已經(jīng)成功恢復。
10. 如果以上步驟都不能解決問題的話,請參考附件中的文檔嘗試通過重建事務日志來恢復數(shù)據(jù)庫中的數(shù)據(jù)。
如果您只有MDF文件,問題就更加復雜一些,我們需要直接重建事務日志了:
1. 在SQL Server中新建一個同名的數(shù)據(jù)庫,然后停止SQL Server服務。
2. 用原有的ldf文件覆蓋新建數(shù)據(jù)庫對應的.mdf文件,將其日志文件(.ldf)刪除。
3. 啟動SQL Server服務,并將數(shù)據(jù)庫置為緊急模式(同上: 步驟5和步驟6)。
4. 停止并重新啟動SQL Server服務。
5. 執(zhí)行以下命令重建數(shù)據(jù)庫日志文件:(下面是個示例,您要用您實際的數(shù)據(jù)庫名)
- DBCC REBUILD_LOG(’cas_db’, 'D:\cas_db\cas_db_Log.LDF')
6. 重新將該數(shù)據(jù)庫置為單用戶模式。(http://support.microsoft.com/?id=264154)
7. 再次嘗試使用DBCC CHECKTABLE或DBCC CHECKDB命令檢查并修復數(shù)據(jù)庫中的錯誤
本篇文章來源于:開發(fā)學院 http://edu.codepub.com 原文鏈接:http://edu.codepub.com/2009/0714/9655.php