【发布时间】:2016-02-16 11:13:32
【问题描述】:
我花了好几个小时试图弄清这件事的真相,这让我很兴奋。
我有一个简单的存储过程,只需将 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 秒,所以不是这样。
php:
$sql = "exec lalatest";
sqlsrv_query($cn, $sql);
我尝试在 sqlsrv_query 行上指定一个超时值(默认情况下应该是无限的),但没有任何区别。
我使用的是 php 5.6.7
和 Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64) 2015 年 10 月 20 日 15:36:27 Windows NT 6.1(内部版本 7601:Service Pack 1)(管理程序)上的标准版(64 位)
我打开了所有错误和警告
有人知道我需要做什么才能完成这项工作吗?
【问题讨论】:
标签: php sql-server stored-procedures