是什么导致SQL Server返回消息'语句已被终止'?

Wal*_*ess 7 php sql sql-server-2000

我有一个非常简单的INSERT语句,是从Linux Apache Web服务器上运行的PHP脚本执行的.我可以在SQL Management Studio中运行查询,它通常也可以从PHP运行.但是,每隔一段时间我就会从PHP脚本中收到一条错误消息,指出查询失败并且mssql_get_last_message()函数返回'语句已被终止'.

哪些源可以导致从SQL Server返回此消息?

Phi*_*ley 13

您已经找到了SQL Server中最烦人的部分之一.在某些情况下可能会引发错误,并且SQL会生成两条错误消息:第一个用于解释错误是什么,第二个用于说出有用的内容,例如"语句已被终止"(从技术上讲,这是错误编号) 3621).问题是SQL,以及触及它的大多数其他东西 - 例如PHP - 只能看到/拾取/处理/或以其他方式利用最后的unlcear错误消息.那个实际有用的东西会丢失.

找出正在发生的事情的快速方法是运行导致SSMS错误的命令序列.显然,这对你不起作用.

一个比较简单的方法是启动SQL事件探查器以跟踪异常事件,然后运行您的进程.这应该显示发生的所有错误.抛弃相关的其他事件(SP:Starting,SP:StmtStarting,SQL:BatchStarting,适用于您提交给数据库的代码)将显示哪个命令引发错误.