當前位置:首頁 » 編程語言 » sqlserver異常處理

sqlserver異常處理

發布時間: 2024-12-18 01:12:17

1. sqlserver 附加資料庫 錯誤823 如何解決

sqlserver附加資料庫錯誤823的解決方案
一、SQL-Server附加資料庫時失敗。
1、異常情況:伺服器在正常運行的情況下突然斷電,導致資料庫文件損壞,具體表現是:資料庫名後面有「(置疑)」字樣。
2、異常分析:關於823錯誤的 SQL-SERVER 中的幫助:
================================

錯誤 823
嚴重級別 24
消息正文
在文件 "%4!" 的偏移量 %3! 處的 %2! 過程中,檢測到 I/O 錯誤 %1!。

解釋
Microsoft SQL Server 在對某設備進行讀或寫請求時遇到 I/O 錯誤。該錯誤通常表明磁碟問題。但是,錯誤日誌中在錯誤 823 之前記錄的其它核心消息應指出涉及了哪個設備。
3、解決辦法:
在SQL-Server企業管理器中,新建同名資料庫(這里假設為Test)後,停止資料庫,把損壞的資料庫文件Data.mdf和Test_log.LDF覆蓋剛才新建資料庫目錄下的Data.mdf和Test_log.LDF,同時刪除Test_log.LDF文件;啟動資料庫服務,發現資料庫名Test後面有「置疑」字樣。不要緊,打開SQL自帶查詢分析器,分別執行如下SQL語句:
第一、
exec sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE /* 打開修改系統表的開關 */
第二、
update sysdatabases set status=32768 where name='資料庫名' /* 設置資料庫狀態 */
第三、
DBCC REBUILD_LOG ('資料庫名','D:\database\Test_Log.LDF') /* 重建LDF文件 */
第四、
update sysdatabases set status=0 where name='資料庫名' /* 重置資料庫狀態 */
第五、
restore database 資料庫名 WITH RECOVERY /* 恢復資料庫 */
第六、
exec sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE /* 關閉打開修改系統表的開關 */
按照此方法操作,應該能修復資料庫正常訪問了。如果問題依然存在,最笨的一個方法就是新建另一個資料庫,把原資料庫(Test)各個表的數據導出到新建資料庫表中。
============================================================
補充說明:用上面的六步把資料庫置疑的問題解決了,但是資料庫表裡還有損壞的表(inf_gdscode),把壞表導出的時候也不成功。最後在查詢分析器里運行:

USE nmgbt_hcxuexipos (資料庫名)
GO
DBCC CHECKTABLE ('inf_gdscode',REPAIR_ALLOW_DATA_LOSS)
GO

2. sqlserver外部組件發生異常怎麼解決

異常在SQL Server的PL/SQL程序中是常見問題,通常表示在程序執行過程中出現錯誤。處理異常,確保程序的穩定性和錯誤的可控性,是開發者需要掌握的關鍵技能。

異常處理的流程通常包括異常的捕獲和處理。捕獲異常時,程序會識別出錯誤,並跳轉到預設的異常處理程序,如果處理成功,異常不會被傳播,程序繼續執行。反之,如果異常未被成功處理,程序將失敗,異常被傳播給上層程序或調用環境。

捕獲異常的語法通常包括特定的異常類型,例如:`DECLARE HANDLE EXCEPTION WHEN OTHERS THEN`。使用`BEGIN`和`END`語句塊執行程序,並在`BEGIN`塊中放置可能拋出異常的代碼。

捕獲異常的兩個關鍵函數是`RAISE_APPLICATION_ERROR`和`EXCEPTION`。`RAISE_APPLICATION_ERROR`允許創建自定義異常,用於返回非標准錯誤代碼和信息。`EXCEPTION`則是用於定義和處理特定異常類型。

在程序中使用`RAISE_APPLICATION_ERROR`函數時,應遵循特定的語法格式,以一種與預定義異常相同的格式返回錯誤代碼和信息。

在處理異常時,通常在`BEGIN`塊中放置可能拋出異常的代碼,在`EXCEPTION`塊中定義異常處理邏輯。如果異常被捕獲並成功處理,程序將繼續執行。如果未捕獲或未成功處理異常,異常將被傳播給上層程序或調用環境。

通過合理使用異常處理機制,開發者可以確保程序在遇到問題時不會崩潰,而是能夠優雅地處理錯誤並繼續運行。正確的異常處理不僅能提高程序的穩定性和可靠性,也是實現健壯軟體開發的重要組成部分。

3. 執行 Transact-SQL 語句或批處理時發生了異常。 (Microsoft.SqlServer.ConnectionInfo)

估計是異常關閉了,建議恢復一下
恢復步驟:
1 停止sqlserver服務,備份msdb資料庫

2 將資料庫設置為單用戶模式
啟動sqlserver服務,將資料庫設置為單用戶模式
ALTER DATABASE ErrorDB SET SINGLE_USER

3 從其他機器拷貝msdb資料庫過來,直接替換msdb資料庫文件和日誌文件

4 對資料庫進行檢查修復
dbcc checkdb(EIMSDb,REPAIR_ALLOW_DATA_LOSS
dbcc checkdb(EIMSDb,REPAIR_REBUILD)

5 取消單用戶模式
exec sp_dboption EIMSDb, N'single', N'false'

熱點內容
安卓手機everything怎麼樣 發布:2024-12-18 06:37:04 瀏覽:513
安卓關閉程序為什麼關不了QQ 發布:2024-12-18 06:35:26 瀏覽:603
如何編譯中間代碼 發布:2024-12-18 06:33:26 瀏覽:934
免費試用的雲伺服器申請注冊 發布:2024-12-18 06:32:46 瀏覽:814
安卓換什麼品牌好 發布:2024-12-18 06:23:58 瀏覽:288
keil編譯報錯找不到o文件 發布:2024-12-18 06:22:36 瀏覽:270
android開發介面 發布:2024-12-18 06:10:11 瀏覽:713
java或和與 發布:2024-12-18 06:10:11 瀏覽:864
我的世界戴夫的伺服器 發布:2024-12-18 06:06:33 瀏覽:931
編程報價 發布:2024-12-18 06:05:36 瀏覽:605