방법: SQLSRV 드라이버를 사용하여 오류 및 경고 처리 구성
이 항목에서는 오류 및 경고를 처리하도록 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(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);
?>