我正在使用 PHP 5.5 并连接到 MS SQL 数据库。连接按预期工作。我正在尝试进行大规模插入(大约 2000 行)。我没有使用 PHP 运行 2000 个 INSERT 语句,而是发送如下查询:
DECLARE @count INT
SET @count = 0
WHILE(@count < 2000)
BEGIN
INSERT INTO Table (Field1, Field2)
VALUES ('data1', 'data2')
SET @count = (@count + 1)
END
当我将此查询直接插入 SQL Server Mangement Studio 时,它会按预期插入 2000 行。当我像这样通过 PHP 运行查询时:
$connectInfo = array ("UID"=>'user',"PWD"=>'@pass',"Database"=>"database", "ReturnDatesAsStrings"=>true);
$link = sqlsrv_connect("dataserver",$connectInfo);
$query = "DECLARE @count INT
SET @count = 0
WHILE(@count < 2000)
BEGIN
INSERT INTO License (Field1, Field2)
VALUES('data1','data2')
SET @count = (@count + 1)
END";
if(!$foo = sqlsrv_query($link,$query)) {
die(print_r(sqlsrv_errors(), true));
}else{
die("hooray beer time!");
}
这只会在表中插入 524 行,而不是预期的 2000 行(有时它是 309 行,X 行,它不稳定)。它没有出错,我得到“万岁啤酒时间!” 每次脚本运行后。默认情况下, sqlsrv_query() 函数没有时间限制,我想。有没有人遇到过这样的事情?这让我很困惑。