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!");
}
これは、予想される2000行ではなく、524行のみをテーブルに挿入します(309行、X行、不安定な場合もあります)。エラーにはなりません。スクリプトを実行するたびに。デフォルトでは、sqlsrv_query() 関数には時間制限がありません。誰かが前にこのようなことに遭遇したことがありますか? それは私を当惑させました。