blah blah blah
views: 8776 times
在SQL Server中, 若要處理大量資料時, 使用者都會需要看到一些資訊以確認是否發生錯誤或是觀察執行進度
一般都會用 print 'Message' 來作
但由於某種輸出buffer的限制, 它並不能即時反應執行進度
搜尋了一下發現RAISERROR常被拿來應用在這個地方, 語法如下:
RAISERROR ( { msg_id | msg_str | @local_variable }
    { ,severity ,state }
    [ ,argument [ ,...n ] ] )
    [ WITH option [ ,...n ] ]

  • severity(嚴重性) - 任何使用者皆可指定從 0 到 18 的嚴重性層級。從 19 到 25 的嚴重性層級只能由系統管理員 (sysadmin) 固定伺服器角色成員或具有 ALTER TRACE 權限的使用者指定。因為從 19 到 25 的嚴重性層級需要 WITH LOG 選項
  • state - 這是介於 0 到 255 之間的整數, 是使用者為了辨別錯誤發生位置而自訂的編號
  • WITH - 在這裡必需設定為NOWAIT, 也就是立即傳送訊息給用戶端
範例:
RAISERROR('test',10,1) WITH NOWAIT;

SQL Server 將在執行到這一行時, 立即顯示test字樣(若前面有print指令也會一併顯示出來)

RAISERROR詳細說明: RAISERROR (Transact-SQL)
參考資料: Report progress from SQL Server