TSQL在这里。特别是Server 2008(字面意思只是升级)
关于存储过程:Try / Catch
我试图在Select语句抛出异常时列出一些案例。我能想到的是语法相关(包括空变量)并除以零。我只是猜测Insert/Alter
和Create/Truncate
只有一大堆载荷。
如果你碰巧知道一个好的源链接,那就太好了。
当我阅读关于SQL服务器的错误处理的详尽博客文章时,出现了这个问题。它的标题是SQL Server 2000,但我认为其中大部分仍然适用。
修改
对不起,我打算早点链接。 。
http://msdn.microsoft.com/en-us/library/aa175920(v=sql.80).aspx
答案 0 :(得分:1)
外部编译(“没有'运行”)错误,你至少这些运行时错误
算术错误
这些变化基于各种SET语句
示例:get sql server to warn about truncation / rounding
溢出错误
示例:其中一行在某些计算中溢出smallint
CAST错误
例如,您在WHERE或CASE中尝试ISNUMERIC并尝试将'bob ^'或1.23转换为int
请参阅Why use Select Top 100 Percent?
但是,你总是想使用TRY / CATCH,当然......?
答案 1 :(得分:1)
添加到gbn的帖子,您还可以获得锁定等待超时和死锁等锁定错误。
如果您正在引用#Temp表,则可能会出现“无效对象名'#Temp'”错误,因为这些错误在语句执行之前是未绑定的。
如果你处于READ UNCOMMITTED或WITH(NOLOCK),你可能会收到错误:601 - “由于数据移动,无法继续使用NOLOCK扫描。”
如果您的代码运行.NET代码,您可能会从那里获得异常。
如果您的代码从远程服务器中选择,则可能会出现一组完全不同的连接错误。