SQL Server錯誤處理

2021-09-25 16:26:03 字數 2151 閱讀 7075

目錄

二、用try...catch發現錯誤

三、捕獲錯誤的系統函式

四、用@@error捕獲上一條語句的錯誤

五、用raiserror反饋錯誤

回到頂部

sqlserver在每個資料庫的系統檢視sys.messages中儲存系統自定義(message_id <= 50000)和使用者自定義(message_id>50000)錯誤訊息。

得到的系統錯誤訊息分為不同程度的嚴重性級別。嚴重性級別是通過數字來表示的,數字越小表示嚴重級別越低。反之則嚴重性越高。嚴重性較高的錯誤指示需要盡快解決問題。

回到頂部

try...catch結構       

begin try

要執行的t-sql**,一旦錯誤將傳遞給catch塊進行處理

end try

begin catch

檢索和處理錯誤資訊的**

end catch

正常執行的t-sql語句

回到頂部

error_number()

返回錯誤的id號,對應sys.messages系統檢視中的message_id欄位。

error_line()

返回t-sql**中錯誤出現的語句行數。

error_message()

返回將返回給應用程式的訊息文字。該文字包括為所有可替換引數提供的值,如長度、物件名或時間。對應sys.messages系統檢視中的text欄位。

error_procedure()

返回出現錯誤的儲存過程或觸發器名稱。如果在儲存過程或觸發器中未出現錯誤,該函式返回null。

error_severity()

返回錯誤的嚴重性級別。對應sys.messages系統檢視中的severity欄位。

error_state()

返回狀態

示例:

begin try

select 1/0

end try

begin catch

select

error_number() as 'number',

error_line() as 'line',

error_message() as 'message',

error_severity() as 'severity',

error_state() as 'state'

end catch

輸出結果如圖所示:

回到頂部

t-sql還提供了乙個簡單的系統函式@@error來捕獲上一條語句的錯誤。如果上一條語句執行成功。@@error系統函式將返回0;如果上一條語句生成錯誤,      @@error將返回錯誤號。

每條語句完成時@@error都會更改。

例如:

select 1/0

select * from sys.messages where message_id = @@error and language_id = 2052

結果如圖:

回到頂部

將生成的sqlserver引擎錯誤或警告資訊(從sys.messages系統檢視獲得)反饋到應用程式中。sys.messages系統檢視中由sqlserver自身定義的資訊,其        message_id列的值小於等於5000。

返回使用者使用儲存過程sp_addmessage建立的自定義訊息(儲存在系統檢視sys.messages中,其message_id大於50000)。

print語句是t-sql提供的用於反饋資訊的語句,print語句只能反饋字串或字串表示式的值。

raiserror語句除了print語句的功能外,還支援類似c語言仲printf函式的字串替換功能。這樣可以先在字串中定義要替換的資料的型別和位置,在輸出時自動      將字串內容進行替換。

語法: 

raiserror()

[ ,argument [ ,...n ] ] )

[ with option [,...n] ]

SQL Server複製中錯誤處理

在sql server的複製中出現在錯誤 應用複製的命令時在訂閱伺服器上找不到該行 換上以前的做法就是刪除掉這個複製,然後再新建乙個複製,但是這次,我突然想baidu一下,看看別人是怎麼處理這個問題的,然後發現找到的文章都是從msdn上抄下來的,因此我決定把我的做法寫下來。首先查msdn,確定這個錯...

MySql錯誤處理 錯誤處理的例子

有幾種錯誤處理的宣告形式 如果任何錯誤 不是 not found 設定 l error 為 1 後繼續執行 declare continue handler for sqlexception set l error 1 如果發生任何錯誤 不是 not found 執行 rollback和產生一條錯誤...

sql server 2000掛起錯誤處理整理

新裝或者以前裝過sql server,後來刪掉。現在重灌,會出現 以前的某個程式安裝已在安裝計算機上建立掛起的檔案操作,執行安裝程式之前必須重新啟動計算機 錯誤。無法進行下去。以下為解決步驟 1 新增 刪除程式中徹底刪除sql server。2 將沒有刪除的sql server目錄也刪除掉。3 開啟...