【问题标题】:How to determine a TSQL error is a runtime error or parse error?如何判断一个 TSQL 错误是运行时错误还是解析错误?
【发布时间】:2011-03-15 07:55:07
【问题描述】:

如何判断一个TSQL错误是运行时错误还是解析错误?例如,当我执行时

asdf

我会得到

消息 2812,级别 16,状态 62,第 1 行找不到存储过程 'asdf'。

当我执行时

asdf sdf asdf

我会得到

消息 102,级别 15,状态 1,第 1 行 'asdf' 附近的语法不正确。

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:

    带有解析错误和绑定错误的批次不会生成执行计划。具有运行时错误的批次将。不确定是否有任何其他方式可以告诉错误的来源。

    /*Parse Error*/
    SELEC * FROM master..spt_values
    
    GO
    
    /*Bind Error*/
    SELECT * FROM master..spt_values_
    
    GO
    
    /*Runtime Error*/
    SELECT 1/high FROM master..spt_values
    

    【讨论】:

      【解决方案2】:

      您可以使用级别来区分不同类型的错误。有关错误级别的说明,请参阅此:Database Engine Error Severities

      如果需要,您还可以使用sys.messages 中列出的错误消息,但请记住,可能有大约 9000 条不同的消息。

      【讨论】:

      • 为什么会被接受?它没有回答“如何确定 TSQL 错误是运行时错误还是解析错误?”的问题。一点也不。级别只是错误严重性。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-17
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 2012-10-14
      • 1970-01-01
      • 2019-11-18
      相关资源
      最近更新 更多