方法:SQLSRV ドライバーを使用してエラーおよび警告処理を構成する

PHP ドライバーのダウンロード

このトピックでは、エラーと警告を処理するために SQLSRV ドライバーを構成する方法について説明します。

既定で、SQLSRV ドライバーは警告をエラーとして扱います。エラーまたは警告を生成する sqlsrv 関数の呼び出しは falseを返します。 この動作を無効にするには、sqlsrv_configure 関数を使用します。 スクリプトの先頭に次のコード行を含めると、警告のみを生成する (エラーは生成しない) sqlsrv 関数は false を返しません。

sqlsrv_configure("WarningsReturnAsErrors", 0);

次のコード行は既定の動作 (警告はエラーとして扱われる) をリセットします。

sqlsrv_configure("WarningsReturnAsErrors", 1);

注意

SQLSTATE 値 01000、01001、01003、および 01S02 に対応する警告はエラーとして扱われません。 構成に関係なく、これらのいずれかの状態に対応する警告のみを生成する sqlsrv 関数は falseを返しません。

WarningsReturnAsErrors の値は php.ini ファイル内にも設定できます。 たとえば、php.ini ファイルの [sqlsrv] セクション内のこのエントリは、既定の動作をオフにします。

sqlsrv.WarningsReturnAsErrors = 0

エラーおよび警告情報の取得については、 sqlsrv_errors と「 方法: エラーと警告の処理」を参照してください。

次のコード例は、既定のエラー処理動作を無効にする方法を示しています。 例では、Transact-SQL PRINT コマンドを使用して、警告を生成しています。 PRINT コマンドの詳細については、「PRINT (Transact-SQL)」を参照してください。

例では、まず警告を生成するクエリを実行して、既定のエラー処理動作を説明しています。 この警告はエラーとして扱われます。 エラー処理の設定を変更した後に、同じクエリが実行されます。 警告はエラーとして扱われません。

この例では、SQL Server がローカル コンピューターにインストールされていることを前提にしています。 コマンド ラインからこの例を実行すると、すべての出力はコンソールに書き込まれます。

<?php  
/* Connect to the local server using Windows Authentication. */  
$serverName = "(local)";  
$conn = sqlsrv_connect( $serverName );  
if( $conn === false )  
{  
     echo "Could not connect.\n";  
     die( print_r( sqlsrv_errors(), true));  
}  
  
/* The Transact-SQL PRINT statement can be used to return   
informational or warning messages*/  
$tsql = "PRINT 'The PRINT statement can be used ";  
$tsql .= "to return user-defined warnings.'";  
  
/* Execute the query and print any errors. */  
$stmt1 = sqlsrv_query( $conn, $tsql);  
if($stmt1 === false)  
{  
     echo "By default, warnings are treated as errors:\n";  
     /* Dump errors in the error collection. */  
     print_r(sqlsrv_errors(SQLSRV_ERR_ERRORS));  
}  
  
/* Disable warnings as errors behavior. */  
sqlsrv_configure("WarningsReturnAsErrors", 0);  
  
/* Execute the same query and print any errors. */  
$stmt2 = sqlsrv_query( $conn, $tsql);  
if($stmt2 === false)  
{  
     /* Dump errors in the error collection. */  
     /* Since the warning generated by the query is be treated as   
        an error, this block of code will not be executed. */  
     print_r(sqlsrv_errors(SQLSRV_ERR_ERRORS));  
}  
else  
{  
     echo "After calling ";  
     echo "sqlsrv_configure('WarningsReturnAsErrors', 0), ";  
     echo "warnings are not treated as errors.";  
}  
  
/*Close the connection. */  
sqlsrv_close($conn);  
?>  

参照

アクティビティのログ記録

SQL Server 用 Microsoft Drivers for PHP のためのプログラミング ガイド

SQLSRV ドライバー API リファレンス