다음을 통해 공유


ISO 옵션의 효과

ODBC 표준은 ISO 표준과 거의 일치하며, ODBC 응용 프로그램은 ODBC 드라이버가 표준 동작을 수행할 것으로 예상합니다. SQL Server Native Client ODBC 드라이버는 이러한 동작이 ODBC 표준 정의를 더욱 완벽하게 준수할 수 있도록 언제나 연결하는 SQL Server 버전에서 사용할 수 있는 ISO 옵션을 사용합니다.

SQL Server Native Client ODBC 드라이버가 SQL Server 인스턴스에 연결하면 서버는 클라이언트가 SQL Server Native Client ODBC 드라이버를 사용하고 있음을 감지하고 몇 가지 옵션을 설정합니다.

드라이버는 이러한 문을 자체적으로 실행하며 ODBC 응용 프로그램에서 이를 요청하는 것은 아닙니다. 이러한 옵션을 설정하면 서버 동작이 ISO 표준과 일치하게 되므로 드라이버를 사용하는 ODBC 응용 프로그램의 이식성을 높일 수 있습니다.

DB-Library 기반 응용 프로그램은 일반적으로 이러한 옵션을 설정하지 않습니다. 사이트에서는 동일한 SQL 문을 실행할 때 ODBC 또는 DB-Library 클라이언트 간에 동작이 다르더라도 SQL Server Native Client ODBC 드라이버에 문제가 있다고 가정해서는 안 됩니다. 이러한 경우에는 먼저 SQL Server Native Client ODBC 드라이버에서 사용하는 옵션과 동일한 SET 옵션으로 DB-Library 환경에서 문을 다시 실행해야 합니다.

SET 옵션은 사용자와 응용 프로그램이 언제라도 설정하거나 해제할 수 있으므로 저장 프로시저 및 트리거 개발자는 위에 나열된 SET 옵션을 설정한 상태와 해제한 상태 모두에서 프로시저 및 트리거를 신중하게 테스트해야 합니다. 이렇게 하면 프로시저나 트리거가 호출될 때 특정 연결에서 설정하는 옵션에 관계없이 프로시저 및 트리거가 올바르게 작동합니다. 위의 옵션 중 하나에 대한 특정한 설정이 필요한 트리거 또는 저장 프로시저는 트리거 또는 저장 프로시저의 시작 부분에서 SET 문을 실행해야 합니다. 이 SET 문은 해당 트리거 또는 저장 프로시저가 실행되는 동안에만 적용됩니다. 프로시저 또는 트리거가 종료되면 원래 설정이 복원됩니다.

SQL Server 인스턴스에 연결하면 네 번째 SET 옵션인 CONCAT_NULL_YIELDS_NULL이 설정됩니다. 데이터 원본이나 SQLDriverConnect 또는 SQLBrowseConnect에 AnsiNPW=NO가 지정된 경우 SQL Server Native Client ODBC 드라이버는 이러한 옵션을 설정하지 않습니다.

앞서 언급한 ISO 옵션과 마찬가지로 SQL Server Native Client ODBC 드라이버는 데이터 원본이나 SQLDriverConnect 또는 SQLBrowseConnect에 QuotedID=NO가 지정된 경우 QUOTED_IDENTIFIER 옵션을 설정하지 않습니다.

드라이버가 SET 옵션의 현재 상태를 알 수 있도록 ODBC 응용 프로그램은 Transact-SQL SET 문을 사용하여 이러한 옵션을 설정해서는 안 되며 데이터 원본 또는 연결 옵션을 통해서만 이러한 옵션을 설정해야 합니다. 응용 프로그램이 SET 문을 실행하면 드라이버가 잘못된 SQL 문을 생성할 수 있습니다.