sqlsrv_query 不会 return 错误的 T-SQL 查询

sqlsrv_query doesn't return false on faulty T-SQL query

我正在使用 sqlsrv 连接到 MSSQL 数据库。安全(且仅供少数人使用)Intranet 应用程序中的一项功能提供了一个框来编写 T-SQL 代码并将它们执行到数据库。目前我正在开发一项功能来测试给定的查询。

首先验证查询的意图是否正确(例如,如果发现 INSERT 、 UPDATE 、 DELETE 、 SHOW 、 CREATE 等,查询将不会执行)。如果成功,我将尝试测试查询。当我提供错误的 SQL 查询时,我仍然从 sqlsrv_query 而不是 false 获得资源(如此处的预期行为所述:http://php.net/manual/en/function.sqlsrv-query.php)。注意:查询确实是错误的(有趣的句子..),在 SQL Server Management Studio 中,查询按预期失败。

下面我的函数testQuery(string $query):

public static function testQuery($query) {
    sqlsrv_configure('WarningsReturnAsErrors', 1);
    $statement = sqlsrv_query(self::$instance, $query);

    if($statement === false) {
        $errors = sqlsrv_errors(SQLSRV_ERR_ALL);

        if(!is_null($errors)) {
            return $errors;
        }

        return false;
    }

    return true;
}

使用或放弃 sqlsrv_configure() 没有任何区别。我要查询的数据库是 MSSQL 2005 数据库。

建议?

我不确定是什么原因,可能是连接延迟了。我没有更改任何内容,但它现在可以正常工作了。