直接执行SQL;没有光标,从开发变为现实

时间:2015-03-18 10:33:40

标签: php sql-server

我已经在这里阅读了几篇关于以下错误的帖子:

  

[Microsoft] [SQL Server Native Client 11.0] [SQL Server]执行SQL   直;没有光标。

但是,我似乎无法找出它在我的开发服务器上运行的原因,而不是在我的实时服务器上运行。据我所知,用户在SSMS中拥有正确的权限,并且PHP ini文件是相同的。

我如何调用我的存储过程(在开发中工作):

$tsql = 'EXEC '.SITE_DATABASE.'.'.$db_procedure.' '.$params_new.'';

$result = $this->db->single($tsql);

单个函数将SQL传递给以下代码,但抛出异常:

$params = array();
$options = array('Scrollable' => SQLSRV_CURSOR_KEYSET);

$stmt = sqlsrv_query($this->handle, $sql, $params, $options) or $this->setError('Unable to query database:', sqlsrv_errors(), $sql);
if ($stmt === false) {
      throw new Exception("Query failed:\n" . var_export(sqlsrv_errors(), true));
}

return $stmt;

SQL Server Management Studio的用户已在两台服务器上被授予执行权,正如我所说,PHP ini文件是相同的。是否有任何权限可能是为什么它不能在实时服务器上工作,我错过了?如果没有,为什么:

$options = array('Scrollable' => SQLSRV_CURSOR_KEYSET);

在服务器设置相同时,Live但不是Dev的问题? (一个是另一个的克隆)。

1 个答案:

答案 0 :(得分:0)

我的案例中的问题只是一个被忽略的调试选择语句,该语句没有被注释掉。 (是的,我觉得现在很傻!)

注释掉这个问题解决了这个问题,它在Live上运行。