Я потратил часы, пытаясь разобраться в этом, и это заставляет меня ла-ла-ла.SQL Server Сохраненная процедура прерывания при вызове с php
У меня есть простая хранимая процедура, которая вводит только 10 000 строк в таблицу. Это делается потому, что требуется достаточно времени, чтобы доказать смысл (около 12 секунд).
create table lala (id int not null identity(1,1), txt varchar(100))
go
CREATE PROCEDURE lalatest
AS
BEGIN
DECLARE @x int;
SET @x = 10000;
WHILE @x > 0
BEGIN
INSERT INTO lala (txt) VALUES ('blah ' + CAST(@x AS varchar(10)));
SET @x = @x - 1;
END;
END;
При выполнении хранимой процедуры из SQL Server Management Studio в таблицу вставлено 10 000 строк.
Когда я запустить его из PHP он просто прерывает после того, как около 150 строк (количество строк меняется, что указывает на проблему тайм-аута) без каких-либо сообщений об ошибках или каких-либо указаний, что он закончил рано
Установка remote query timeout
устанавливается по умолчанию 600 секунд, так что это не так.
РНР:
$sql = "exec lalatest";
sqlsrv_query($cn, $sql);
Я попытался указать значение тайм-аута (которое должно быть неопределенным по умолчанию в любом случае) на sqlsrv_query линии, и это не имеет никакого значения.
Я использую PHP 5.6.7
и Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64) 20 октября 2015 15:36:27 Standard Edition (64-разрядная) на Windows NT 6.1 (сборка 7601: Service Pack 1) (гипервизор)
Я все ошибки и предупреждения включен
Любой есть какие-либо идеи относительно того, что мне нужно сделать, чтобы сделать эту работу?