淺談在SQL Server2005中進(jìn)行錯(cuò)誤捕捉_Mssql數(shù)據(jù)庫教程
推薦:解析SQL Server 2000 SP4與數(shù)據(jù)鏈接池問題今天遠(yuǎn)程連接一臺(tái)xp sp2上的SQL,報(bào)錯(cuò)信息如下: 以下為引用的內(nèi)容: Timeout expired. The timeout period elapsed prior to obtaining
任何程序都可能出現(xiàn)錯(cuò)誤,在SQL Server中執(zhí)行Transact-SQL也不例外。如果在Transact-SQL中發(fā)生了錯(cuò)誤,一般有兩種捕捉錯(cuò)誤的方法,一種是在客戶端代碼(如C#、Delphi等)中使用類似try...catch的語句進(jìn)行捕捉;另外一種就是在Transact-SQL中利用Transact-SQL本身提供的錯(cuò)誤捕捉機(jī)制進(jìn)行捕捉。如果是因?yàn)門ransact-SQL語句的執(zhí)行而產(chǎn)生的錯(cuò)誤,如鍵值沖突,使用第一種和第二種方法都可以捕捉,但是如果是邏輯錯(cuò)誤,使用客戶端代碼進(jìn)行捕捉就不太方便。因此,本文就如何使用Transact-SQL進(jìn)行錯(cuò)誤捕捉進(jìn)行了討論。
一、非致命錯(cuò)誤(non-fatal error)的捕捉
通過執(zhí)行Transact-SQL而產(chǎn)生的錯(cuò)誤可分為兩種:致命錯(cuò)誤(fatal error)和非致命錯(cuò)誤(non-fatal error)。在Transact-SQL中只可以捕捉非致命錯(cuò)誤(如鍵值沖突),而無法捕捉致命錯(cuò)誤(如語法錯(cuò)誤)。在Transact-SQL中可以通過系統(tǒng)變量@@ERROR判斷最近執(zhí)行的一條語句是否成功執(zhí)行。如果發(fā)生了錯(cuò)誤,@@Error的值大于0,否則值為0。下面舉一個(gè)例子說明@@ERROR的使用。
假設(shè)有一個(gè)表table1,在這個(gè)表中有兩個(gè)字段f1,f2。其中f1是主鍵。
| 以下為引用的內(nèi)容:
insert INTO table1 VALUES(1, ’aa’) insert INTO table1 VALUES(1, ’bb’) --這條語句將產(chǎn)生一個(gè)錯(cuò)誤 IF @@ERROR > 0 |
PRINT ’鍵值沖突’
當(dāng)執(zhí)行第二條語句時(shí)發(fā)生鍵值沖突錯(cuò)誤,@@ERROR被賦為錯(cuò)誤號(hào)2627,因此輸出結(jié)果顯示’鍵值沖突’。使用@@ERROR系統(tǒng)變量時(shí)需要注意,@@ERROR只記錄最近一次執(zhí)行的Transact-SQL語句所發(fā)生的錯(cuò)誤,如果最近一次執(zhí)行的Transact-SQL沒有發(fā)生錯(cuò)誤,@@ERROR的值為0。因此,只能在被捕捉的那條Transact-SQL語句后使用@@ERROR。
分享:解析SQL Server 2008對(duì)T-SQL語言的增強(qiáng)Microsoft SQL Server 2008 對(duì) T-SQL 語言進(jìn)行了進(jìn)一步增強(qiáng)。為了讓開發(fā)人員盡快了解這些變化,我們針對(duì) 2007 年 6 月 CTP 版本的 SQL Server 2008 中的 T-SQL 語言的新增功能進(jìn)行
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
猜你也喜歡看這些
- java連接mysql數(shù)據(jù)庫亂碼怎么辦
- MySQL數(shù)據(jù)庫INSERT、UPDATE、DELETE以及REPLACE語句的用法詳解
- SQL分組排序去重復(fù)的小實(shí)例
- 基于mysql全文索引的深入理解
- 解決bash: mysql: command not found 的方法
- MySQL無法啟動(dòng)1067錯(cuò)誤的解決方法
- MySQL筆記之函數(shù)查詢的使用
- 網(wǎng)站模板:以數(shù)據(jù)庫字段分組顯示數(shù)據(jù)的sql語句
- Mysql的主從數(shù)據(jù)庫沒有同步的解決辦法
- 淺談SQLite時(shí)間函數(shù)的使用說明與總結(jié)分析
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-淺談在SQL Server2005中進(jìn)行錯(cuò)誤捕捉
。