Compartir vía


Procedimientos: Configuración del control de errores y advertencias con el controlador SQLSRV

Descargar controlador PHP

En este tema se describe cómo configurar el controlador SQLSRV para controlar errores y advertencias.

De forma predeterminada, el controlador SQLSRV trata las advertencias como errores; una llamada a una función de sqlsrv que genera un error o una advertencia devuelve el valor False. Para deshabilitar este comportamiento, utilice la función sqlsrv_configure. Cuando la siguiente línea de código se incluye al principio de un script, una función de sqlsrv que únicamente genera advertencias (no errores) no devolverá el valor False:

sqlsrv_configure("WarningsReturnAsErrors", 0);

La siguiente línea de código restablece el comportamiento predeterminado (las advertencias se tratan como errores):

sqlsrv_configure("WarningsReturnAsErrors", 1);

Nota:

Sin embargo, las advertencias que corresponden a los valores 01000, 01001, 01003 y 01S02 de SQLSTATE nunca se tratan como errores. Con independencia de la configuración, una función de sqlsrv que únicamente genera advertencias que corresponden a uno de estos estados no devolverá el valor False.

El valor de WarningsReturnAsErrors también puede establecerse en el archivo php.ini. Por ejemplo, esta entrada de la sección de [sqlsrv] del archivo php.ini desactiva el comportamiento predeterminado.

sqlsrv.WarningsReturnAsErrors = 0

Para obtener información sobre cómo recuperar información de advertencias y errores, consulte sqlsrv_errors y Cómo controlar errores y advertencias.

Ejemplo

En el siguiente ejemplo de código se muestra cómo deshabilitar el comportamiento de control de errores predeterminado. En el ejemplo se utiliza el comando PRINT de Transact-SQL para generar una advertencia. Para obtener más información sobre el comando PRINT, vea PRINT (Transact-SQL).

En primer lugar, el ejemplo ilustra el comportamiento de control de errores predeterminado mediante la ejecución de una consulta que genera una advertencia. Esta advertencia se trata como un error. Después de cambiar la configuración de control de errores, se ejecuta la misma consulta. La advertencia no se trata como un error.

En el ejemplo se da por hecho que SQL Server está instalado en el equipo local. Los resultados se agregan a la consola cuando se ejecuta el ejemplo en la línea de comandos.

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

Consulte también

Actividad de registro

Guía de programación para los controladores de Microsoft para PHP para SQL Server

Referencia de API del controlador SQLSRV