sql server 2008中,如何才能查到哪一条sql语句有问题而无法执行或者执行错误?
如果用sql server profile来跟踪的话,需要从海量信息中查找sql语句,并且要一条一条逐个执行,根本查不完.有没有什么方法可以找到那条sql语句有问题呢?

解决方案 »

  1.   


    这样做也能接受,慢就慢了,但首先要把sql语句一条一条都找出来,十分的困难,用sql server profile跟踪sql语句的话会出现很多的内容,要从中过滤出来sql语句,十分的耗时,一整天都做不完,如果能把sql语句都找出来,并且放到一个文件中,点击 查看--错误列表, 系统会自动把每条sql语句的语法错误都显示出来,不用取一条一条F10 Debug的. 不知道还有没有办法在提高一下工作效率?
      

  2.   

    设置条件筛选可以自动选出。
    参考http://technet.microsoft.com/zh-cn/library/ms188017(v=sql.100).aspx
      

  3.   


    我设置过.还是很多不需要的内容出来,而且设置过程中容易导致部分sql语句不出来了,一直没搞懂究竟要怎样设置才能得到干净程度较高的sql语句
      

  4.   

    profiler中查询错误号不为空也不为0的语句,或者是查询error为1的
    Exception这个事件可以标注出异常,但是不能标注具体语句,还是要查询error
      

  5.   

    sqlserver查询的内部机制,sql查询语句执行前先由命令解析器进行语法检查,如果语法检查未通过,会扔出错误信息(通常这里的提示是精确的),这时比较容易找到语法错误在什么地方。 
    而楼主所需要找的应该是下面的:
    当语法检查通过,则将其编译为可执行的内部格式(查询树),
    而非语法错误时,因为是执行时报错,执行期间是内部格式代码,只能扔出个大致错误信息, 所以对应不到源SQL语句的位置。当语法检查出错时同一个语句批(以GO伪命令划分)任何一条语句也不能执行
    当运行时出错时, 实际上是按顺序执行, 执行到出错的地方,中断(或抛出异常继续执行下面的, 是中断还是抛出异常后继续,由错误的严重级别及环境等确定,比如XACT_ABORT设置).功力不够的情况下, 可以试着在一个批中, 不同的地方打入print. 或者select, 能执行出来的就是没有问题的(业务逻辑问题除外).
      

  6.   


    得看lz 筛选容易导致问题的sql条件是什么了? 如果条件不在这个范围或者条件本身存在冲突,那也是不容易筛选出的。
      

  7.   


    你说的很详细啊,谢谢. 我要查找的错误除了语法错误之外也有运行错误的不会导致中断的,如果能监控语法错误的也有帮助啊,这样的话在profile中应该怎样设置过滤条件能准确获得语法错误的error呢?   另外,有没有办法在profile中把所有的sql语句都过滤出来呢? 如果能做到,我自己拿去一条一条执行也很快的.现在就是profile出来的信息太多,从中挑出sql语句太困难