방법: 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(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);  
?>  

참고 항목

작업 로깅

Microsoft Drivers for PHP for SQL Server 프로그래밍 가이드

SQLSRV 드라이버 API 참조