Vorgehensweise: Konfigurieren der Behandlung von Fehlern und Warnungen unter Verwendung des SQLSRV-Treibers

PHP-Treiber herunterladen

Dieses Thema beschreibt, wie der SQLSRV-Treiber zur Behandlung von Fehlern und Warnungen konfiguriert wird.

Standardmäßig werden im SQLSRV-Treiber Warnungen als Fehler behandelt. Ein Aufruf einer sqlsrv-Funktion, die einen Fehler oder eine Warnung generiert, gibt FALSE zurück. Verwenden Sie die Funktion sqlsrv_configure, um dieses Verhalten zu deaktivieren. Wenn die folgende Codezeile am Anfang eines Skripts enthalten ist, gibt eine sqlsrv-Funktion, die nur Warnungen (keine Fehler) generiert, nicht FALSE zurück:

sqlsrv_configure("WarningsReturnAsErrors", 0);

Die folgende Codezeile setzt das Standardverhalten zurück (Warnungen werden als Fehler behandelt):

sqlsrv_configure("WarningsReturnAsErrors", 1);

Hinweis

Warnungen, die den SQLSTATE-Werten 01000, 01001, 01003 und 01S02 entsprechen, werden nie als Fehler behandelt. Eine sqlsrv -Funktion, die nur Warnungen generiert, die einem dieser Zustände entsprechen, gibt unabhängig von der Konfiguration nicht falsezurück.

Der Wert für WarningsReturnAsErrors kann auch in der Datei php.ini festgelegt werden. Zum Beispiel deaktiviert dieser Eintrag im Abschnitt [sqlsrv] der Datei „php.ini“ das Standardverhalten.

sqlsrv.WarningsReturnAsErrors = 0

Informationen zum Abrufen von Fehler- und Warnungsinformationen finden Sie unter sqlsrv_errors und unter Vorgehensweise: Behandeln von Fehlern und Warnungen.

Beispiel

Das folgende Codebeispiel veranschaulicht, wie das Standardverhalten der Fehlerbehandlung deaktiviert wird. Das Beispiel verwendet den Befehl PRINT von Transact-SQL, um eine Warnung zu generieren. Weitere Informationen zum Befehl PRINT finden Sie unter PRINT (Transact-SQL).

Das Beispiel veranschaulicht durch das Ausführen einer Abfrage, die eine Warnung generiert, zunächst das Standardverhalten der Fehlerbehandlung. Diese Warnung wird als Fehler behandelt. Nach Ändern der Konfiguration für die Fehlerbehandlung wird die gleiche Abfrage ausgeführt. Die Warnung wird nicht als Fehler behandelt.

Das Beispiel setzt voraus, dass SQL Server auf dem lokalen Computer installiert ist. Wenn das Beispiel über die Befehlszeile ausgeführt wird, werden alle Ausgaben in die Konsole geschrieben.

<?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);  
?>  

Weitere Informationen

Protokollieren von Aktivitäten

Programmierhandbuch für die Microsoft-Treiber für PHP für SQL Server

API-Referenz für den SQLSRV-Treiber