Я прочитал несколько постов здесь, в отношении следующей ошибки:Выполнение SQL напрямую; нет курсора, переход от развития дожить
[Microsoft][SQL Server Native Client 11.0][SQL Server]Executing SQL directly; no cursor.
Однако я не могу показаться, чтобы выяснить, почему это работает на моем сервере развития но не на моем реальном сервере. Из того, что я могу сказать, пользователь имеет правильные разрешения в 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, если серверы идентично настроены? (Один - клон другого).
Является ли собственный клиент установлен на компьютере идентичным (то есть обе версии 11). Это может быть драйвер SQL, [Как определить версию и версию SQL Server и ее компонентов] (https://support.microsoft.com/en-us/kb/321185) – Liam
@Liam one - это клон прочее, обе есть версия 11 да. – Aravona
Выбранные опции ожидают возврата набора результатов. Таким образом, запрос или сохраненный proc возвращают набор результатов? – richardb