SQLSetConnectAttr 함수

규칙
도입된 버전: ODBC 3.0 표준 준수: ISO 92

요약
SQLSetConnectAttr는 연결의 측면을 제어하는 특성을 설정합니다.

참고 항목

ODBC 3*.x* 애플리케이션이 ODBC 2*.x* 드라이버로 작업할 때 드라이버 관리자가 이 함수를 매핑하는 내용에 대한 자세한 내용은 애플리케이션의 이전 버전과의 호환성을 위한 대체 함수 매핑을 참조 하세요.

구문

  
SQLRETURN SQLSetConnectAttr(  
     SQLHDBC       ConnectionHandle,  
     SQLINTEGER    Attribute,  
     SQLPOINTER    ValuePtr,  
     SQLINTEGER    StringLength);  

인수

ConnectionHandle
[Input] 연결 핸들입니다.

특성
[입력] "Comments"에 나열된 설정할 특성입니다.

ValuePtr
[입력] 특성연결할 값에 대한 포인터입니다. 특성에 따라 ValuePtr은 부호 없는 정수 값이 되거나 null로 끝나는 문자열을 가리킵니다. 특성 인수의 정수 형식은 고정 길이가 아닐 수 있습니다. 자세한 내용은 Comments 섹션을 참조하세요.

StringLength
[입력] 특성이 ODBC 정의 특성이고 ValuePtr가 문자열 또는 이진 버퍼를 가리키는 경우 이 인수는 *ValuePtr 길이여야 합니다. 문자열 데이터의 경우 이 인수는 문자열의 바이트 수를 포함해야 합니다.

특성이 ODBC 정의 특성이고 ValuePtr이 정수이면 StringLength가 무시됩니다.

특성이 드라이버 정의 특성인 경우 애플리케이션은 StringLength 인수를 설정하여 드라이버 관리자에 대한 특성의 특성을 나타냅니다. StringLength 는 다음 값을 가질 수 있습니다.

  • ValuePtr이 문자열에 대한 포인터인 경우 StringLength는 문자열 또는 SQL_NTS 길이입니다.

  • ValuePtr이 이진 버퍼에 대한 포인터인 경우 애플리케이션은 stringLength에 SQL_LEN_BINARY_ATTR(length) 매크로의 결과를 배치합니다. 그러면 StringLength에 음수 값이 배치됩니다.

  • ValuePtr이 문자열이나 이진 문자열이 아닌 값에 대한 포인터인 경우 StringLength에는 SQL_IS_POINTER 값이 있어야 합니다.

  • ValuePtr에 고정 길이 값이 포함된 경우 StringLength는 적절하게 SQL_IS_INTEGER 또는 SQL_IS_UINTEGER.

반품

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE 또는 SQL_STILL_EXECUTING.

진단

SQLSetConnectAttr가 SQL_ERROR 또는 SQL_SUCCESS_WITH_INFO 반환하는 경우 SQL_HANDLE_DBC HandleType ConnectionHandle 핸들을 사용하여 SQLGetDiagRec 를 호출하여 연결된 SQLSTATE 값을 가져올 수 있습니다. 다음 표에서는 SQLSetConnectAttr에서 일반적으로 반환되는 SQLSTATE 값을 나열하고 이 함수의 컨텍스트에서 각 값을 설명합니다. 표기법 "(DM)"은 드라이버 관리자가 반환한 SQLSTATE에 대한 설명 앞에 나와 있습니다. 달리 명시되지 않는 한 각 SQLSTATE 값과 연결된 반환 코드는 SQL_ERROR.

드라이버는 SQL_SUCCESS_WITH_INFO 반환하여 옵션 설정 결과에 대한 정보를 제공할 수 있습니다.

SQLSTATE Error 설명
01000 일반 경고 드라이버 관련 정보 메시지입니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다.
01S02 옵션 값이 변경됨 드라이버는 ValuePtr지정된 값을 지원하지 않으며 비슷한 값을 대체했습니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다.
08002 사용 중인 연결 이름 Attribute 인수가 SQL_ATTR_ODBC_CURSORS 드라이버가 이미 데이터 원본에 연결되었습니다.
08003 연결이 열리지 않음 (DM) 열린 연결이 필요하지만 ConnectionHandle이 연결된 상태가 아닌 특성 값이 지정되었습니다.
08S01 통신 링크 실패 드라이버와 드라이버가 연결된 데이터 원본 간의 통신 링크는 함수가 처리를 완료하기 전에 실패했습니다.
24000 커서 상태가 잘못되었습니다. Attribute 인수가 SQL_ATTR_CURRENT_CATALOG 결과 집합이 보류 중입니다.
25000 로컬 트랜잭션에 있는 동안 잘못된 작업 연결 특성 SQL_ATTR_ENLIST_IN_DTC 설정하여 DTC(분산 트랜잭션 연결)에 참여하려고 시도하는 동안 연결이 로컬 트랜잭션에 있었습니다.

연결이 DTC에 이미 등록되어 있습니다.

분산 트랜잭션 연결에 연결이 등록되었으며 SQL_ATTR_AUTOCOMMIT SQL_AUTOCOMMIT_OFF 설정하여 로컬 트랜잭션이 시작되었습니다.
3D000 카탈로그 이름이 잘못되었습니다. Attribute 인수가 SQL_CURRENT_CATALOG 지정한 카탈로그 이름이 잘못되었습니다.
HY000 일반 오류 특정 SQLSTATE가 없고 구현별 SQLSTATE가 정의되지 않은 오류가 발생했습니다. *MessageText 버퍼의 SQLGetDiagRec에서 반환된 오류 메시지는 오류와 그 원인을 설명합니다.
HY001 메모리 할당 오류 드라이버가 함수 실행 또는 완료를 지원하는 데 필요한 메모리를 할당할 수 없습니다.
HY008 작업이 취소됨 ConnectionHandle에 대해 비동기 처리를 사용하도록 설정했습니다. SQLSetConnectAttr 함수가 호출되었고 실행이 완료되기 전에 ConnectionHandle에서 SQLCancelHandle 함수가 호출된 다음 ConnectionHandle에서 SQLSetConnectAttr 함수가 다시 호출되었습니다.

또는 SQLSetConnectAttr 함수가 호출되었고 실행을 완료하기 전에 다중 스레드 애플리케이션의 다른 스레드에서 ConnectionHandle에서 SQLCancelHandle이 호출되었습니다.
HY009 null 포인터를 잘못 사용했습니다. Attribute 인수는 문자열 값이 필요한 연결 특성을 식별했으며 ValuePtr 인수는 null 포인터였습니다.
HY010 함수 시퀀스 오류 (DM) ConnectionHandle과 연결된 StatementHandle에 대해 비동기 실행 함수가 호출되었으며 SQLSetConnectAttr가 호출될 때 계속 실행 중입니다.

(DM) ConnectionHandle에 대해 비동기 실행 함수(이 함수가 아님)가 호출되었고 이 함수가 호출되었을 때 계속 실행되고 있었습니다.

(DM) SQLExecute, SQLExecDirect 또는 SQLMoreResults는 ConnectionHandle연결된 문 핸들 중 하나에 대해 호출되고 SQL_PARAM_DATA_AVAILABLE 반환되었습니다. 이 함수는 모든 스트리밍된 매개 변수에 대해 데이터를 검색하기 전에 호출되었습니다.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations 또는 SQLSetPos는 ConnectionHandle과 연결된 StatementHandle에 대해 호출되고 SQL_NEED_DATA 반환되었습니다. 이 함수는 모든 실행 시 데이터 매개 변수 또는 열에 대한 데이터를 보내기 전에 호출되었습니다.

(DM) CONNECTIONHandle에 대해 SQLBrowseConnect가 호출되고 SQL_NEED_DATA 반환되었습니다. 이 함수는 SQLBrowseConnect가 SQL_SUCCESS_WITH_INFO 또는 SQL_SUCCESS 반환하기 전에 호출되었습니다.
HY011 지금은 특성을 설정할 수 없습니다. Attribute 인수가 SQL_ATTR_TXN_ISOLATION 트랜잭션이 열려 있습니다.
HY013 메모리 관리 오류 메모리 조건이 낮기 때문에 기본 메모리 개체에 액세스할 수 없기 때문에 함수 호출을 처리할 수 없습니다.
HY024 잘못된 특성 값 지정된 특성 값이 지정된 경우 ValuePtr잘못된 값이 지정되었습니다. 드라이버 관리자는 SQL_ATTR_ACCESS_MODE 또는 SQL_ATTR_ASYNC_ENABLE 같은 불연속 값 집합을 허용하는 연결 및 문 특성에 대해서만 이 SQLSTATE를 반환합니다. 다른 모든 연결 및 문 특성의 경우 드라이버는 ValuePtr지정된 값을 확인해야 합니다.)

Attribute 인수가 SQL_ATTR_TRACEFILE 또는 SQL_ATTR_TRANSLATE_LIB ValuePtr 이 빈 문자열이었습니다.
HY090 잘못된 문자열 또는 버퍼 길이 (DM) *ValuePtr 은 문자열이고 StringLength 인수는 0보다 작지만 SQL_NTS 않았습니다.
HY092 잘못된 특성/옵션 식별자 (DM) 인수 특성 에 지정된 값이 드라이버에서 지원하는 ODBC 버전에 대해 유효하지 않습니다.

(DM) 인수 특성 에 지정된 값이 읽기 전용 특성이었습니다.
HY114 드라이버는 연결 수준 비동기 함수 실행을 지원하지 않습니다. (DM) 애플리케이션이 비동기 연결 작업을 지원하지 않는 드라이버에 대해 SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE 사용하여 비동기 함수 실행을 사용하도록 설정하려고 했습니다.
HY117 알 수 없는 트랜잭션 상태로 인해 연결이 일시 중단됩니다. 연결 끊기 및 읽기 전용 함수만 허용됩니다. (DM) 일시 중단 상태에 대한 자세한 내용은 SQLEndTran 함수를 참조 하세요.
HY121 커서 라이브러리 및 드라이버 인식 풀링을 동시에 사용할 수 없습니다. 자세한 내용은 드라이버 인식 연결 풀링을 참조 하세요.
HYC00 선택적 기능이 구현되지 않음 인수 특성 에 지정된 값은 드라이버에서 지원하는 ODBC 버전의 유효한 ODBC 연결 또는 문 특성이었지만 드라이버에서 지원되지 않았습니다.
HYT01 연결 제한 시간이 만료됨 데이터 원본이 요청에 응답하기 전에 연결 제한 시간이 만료되었습니다. 연결 제한 시간은 SQL_ATTR_CONNECTION_TIMEOUT SQLSetConnectAttr를 통해 설정됩니다.
IM001 드라이버는 이 함수를 지원하지 않습니다. (DM) ConnectionHandle연결된 드라이버는 함수를 지원하지 않습니다.
IM009 번역 DLL을 로드할 수 없음 드라이버가 연결에 대해 지정된 변환 DLL을 로드할 수 없습니다. 이 오류는 특성이 SQL_ATTR_TRANSLATE_LIB 경우에만 반환할 수 있습니다.
IM017 비동기 알림 모드에서 폴링을 사용할 수 없습니다. 알림 모델을 사용할 때마다 폴링이 비활성화됩니다.
IM018 이 핸들에서 이전 비동기 작업을 완료하기 위해 SQLCompleteAsync 가 호출되지 않았습니다. 핸들의 이전 함수 호출이 SQL_STILL_EXECUTING 반환하고 알림 모드가 활성화된 경우 사후 처리를 수행하고 작업을 완료하려면 핸들에서 SQLCompleteAsync 를 호출해야 합니다.
S1118 드라이버는 비동기 알림을 지원하지 않습니다. SQL_ATTR_ASYNC_DBC_EVENT 설정되었지만(연결 후) 드라이버에서 비동기 알림이 지원되지 않습니다.

특성이 문 특성인 경우 SQLSetConnectAttr는 SQLSetStmtAttr에서 반환된 모든 SQLSTATE를 반환할 수 있습니다.

주석

연결 특성에 대한 일반적인 내용은 연결 특성을 참조 하세요.

현재 정의된 특성 및 특성이 도입된 ODBC 버전은 이 섹션의 뒷부분에 나와 있습니다. 다른 데이터 원본을 활용하기 위해 더 많은 특성이 정의될 것으로 예상됩니다. 특성 범위는 ODBC에서 예약합니다. 드라이버 개발자는 Open Group에서 드라이버 관련 용도로 값을 예약해야 합니다.

참고 항목

SQLSetConnectAttr를 호출하여 연결 수준에서 문 특성을 설정하는 기능은 ODBC 3*.x*에서 더 이상 사용되지 않습니다. ODBC 3*.x* 애플리케이션은 연결 수준에서 문 특성을 설정해서는 안 됩니다. 연결 특성 및 문 특성인 SQL_ATTR_METADATA_ID 및 SQL_ATTR_ASYNC_ENABLE 특성을 제외하고 연결 수준에서 ODBC 3*.x* 문 특성을 설정할 수 없으며 연결 수준 또는 문 수준에서 설정할 수 있습니다.

ODBC 3*.x* 드라이버는 연결 수준에서 ODBC 2*.x* 문 옵션을 설정하는 ODBC 2*.x* 애플리케이션에서 작동해야 하는 경우에만 이 기능을 지원해야 합니다. 자세한 내용은 부록 G: 이전 버전과의 호환성을 위한 드라이버 지침의 SQLSetConnectOption 매핑 을 참조하세요.

애플리케이션은 연결이 할당되고 해제된 시간 사이에 언제든지 SQLSetConnectAttr를 호출할 수 있습니다. 연결에 대해 애플리케이션에서 설정한 모든 연결 및 문 특성은 연결에서 SQLFreeHandle이 호출될 때까지 유지됩니다. 예를 들어 애플리케이션이 데이터 원본에 연결하기 전에 SQLSetConnectAttr를 호출하는 경우 애플리케이션이 데이터 원본에 연결할 때 드라이버에서 SQLSetConnectAttr가 실패하더라도 특성이 유지됩니다. 애플리케이션이 드라이버별 특성을 설정하면 애플리케이션이 연결 시 다른 드라이버에 연결되더라도 특성이 유지됩니다.

일부 연결 특성은 연결이 이루어지기 전에만 설정할 수 있습니다. 다른 항목은 연결이 만들어진 후에만 설정할 수 있습니다. 다음 표에서는 연결이 이루어지기 전이나 후에 설정해야 하는 연결 특성을 나타냅니다. 연결 전후에 특성을 설정할 수 있음을 나타냅니다.

특성 연결 전후에 설정하시겠습니까?
SQL_ATTR_ACCESS_MODE 둘 중 하나[1]
SQL_ATTR_ASYNC_DBC_EVENT 여기서는
SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE 둘 중 하나[4]
SQL_ATTR_ASYNC_DBC_PCALLBACK 여기서는
SQL_ATTR_ASYNC_DBC_PCONTEXT 여기서는
SQL_ATTR_ASYNC_ENABLE 둘 중 하나[2]
SQL_ATTR_AUTO_IPD 여기서는
SQL_ATTR_AUTOCOMMIT 둘 중 하나[5]
SQL_ATTR_CONNECTION_DEAD 이후
SQL_ATTR_CONNECTION_TIMEOUT 여기서는
SQL_ATTR_CURRENT_CATALOG 둘 중 하나[1]
SQL_ATTR_DBC_INFO_TOKEN 이후
SQL_ATTR_ENLIST_IN_DTC 이후
SQL_ATTR_LOGIN_TIMEOUT 이전
SQL_ATTR_METADATA_ID 여기서는
SQL_ATTR_ODBC_CURSORS 이전
SQL_ATTR_PACKET_SIZE 이전
SQL_ATTR_QUIET_MODE 여기서는
SQL_ATTR_TRACE 여기서는
SQL_ATTR_TRACEFILE 여기서는
SQL_ATTR_TRANSLATE_LIB 이후
SQL_ATTR_TRANSLATE_OPTION 이후
SQL_ATTR_TXN_ISOLATION 둘 중 하나[3]

[1] 드라이버에 따라 연결 전이나 후에 SQL_ATTR_ACCESS_MODE 및 SQL_ATTR_CURRENT_CATALOG 설정할 수 있습니다. 그러나 상호 운용 가능한 애플리케이션은 연결 후 일부 드라이버가 이러한 변경 내용을 지원하지 않기 때문에 연결하기 전에 설정합니다.

[2] 활성 문이 있기 전에 SQL_ATTR_ASYNC_ENABLE 설정해야 합니다.

[3] 연결에 열려 있는 트랜잭션이 없는 경우에만 SQL_ATTR_TXN_ISOLATION 설정할 수 있습니다. 데이터 원본이 *ValuePtr에 지정된 값을 지원하지 않는 경우 일부 연결 특성은 유사한 값의 대체를 지원합니다. 이러한 경우 드라이버는 SQL_SUCCESS_WITH_INFO 및 SQLSTATE 01S02(옵션 값이 변경됨)를 반환합니다. 예를 들어 특성이 SQL_ATTR_PACKET_SIZE *ValuePtr이 최대 패킷 크기를 초과하는 경우 드라이버는 최대 크기를 대체합니다. 대체 값을 확인하기 위해 애플리케이션은 SQLGetConnectAttr를 호출합니다.

[4] 연결이 열리기 전에 SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE 설정된 경우 드라이버 관리자는 SQLBrowseConnect, SQLConnect 또는 SQLDriverConnect를 호출하는 동안 드라이버가 로드될 때 드라이버 특성을 설정합니다. SQLBrowseConnect, SQLConnect 또는 SQLDriverConnect를 호출하기 전에 드라이버 관리자는 연결할 드라이버를 알지 못하며 드라이버가 비동기 연결 작업을 지원하는지 여부를 알지 못합니다. 따라서 드라이버 관리자는 항상 SQL_SUCCESS 반환합니다. 그러나 드라이버가 비동기 연결 작업을 지원하지 않는 경우 SQLBrowseConnect, SQLConnect 또는 SQLDriverConnect에 대한 호출이 실패합니다.

[5] SQL_ATTR_AUTOCOMMIT FALSE로 설정되면 트랜잭션 일관성을 보장하기 위해 API가 SQL_ERROR 반환하는 경우 애플리케이션에서 SQLEndTran(SQL_ROLLBACK)을 호출해야 합니다.

*ValuePtr 버퍼에 설정된 정보 형식은 지정된 특성에 따라 달라집니다. SQLSetConnectAttr 는 null로 끝나는 문자열 또는 정수 값의 두 가지 형식 중 하나로 특성 정보를 허용합니다. 각 형식은 특성의 설명에 나와 있습니다. SQLSetConnectAttrValuePtr 인수로 가리키는 문자열의 길이는 StringLength 바이트입니다.

ODBC 2*.x* 또는 이전 버전에서 도입된 모든 특성의 경우와 마찬가지로 길이가 특성에 의해 정의된 경우 StringLength 인수는 무시됩니다.

특성 ValuePtr 콘텐츠
SQL_ATTR_ACCESS_MODE(ODBC 1.0) SQLUINTEGER 값입니다. SQL_MODE_READ_ONLY 드라이버 또는 데이터 원본에서 업데이트가 발생하는 SQL 문을 지원하기 위해 연결이 필요하지 않다는 지표로 사용됩니다. 이 모드는 드라이버 또는 데이터 원본에 적합한 잠금 전략, 트랜잭션 관리 또는 기타 영역을 최적화하는 데 사용할 수 있습니다. 이러한 문이 데이터 원본에 제출되는 것을 방지하기 위해 드라이버가 필요하지 않습니다. 읽기 전용 연결 중에 읽기 전용이 아닌 SQL 문을 처리하라는 메시지가 표시되면 드라이버 및 데이터 원본의 동작은 구현에서 정의됩니다. SQL_MODE_READ_WRITE 기본값입니다.
SQL_ATTR_ASYNC_DBC_EVENT(ODBC 3.8) 이벤트 핸들인 SQLPOINTER 값입니다.

SQL_ATTR_ASYNC_STMT_EVENT 특성을 사용하여 SQLSetConnectAttr를 호출하고 이벤트 핸들을 지정하여 비동기 함수 완료에 대한 알림을 사용할 수 있습니다. 참고: 알림 메서드는 커서 라이브러리에서 지원되지 않습니다. 애플리케이션은 알림 방법을 사용할 때 SQLSetConnectAttr를 통해 커서 라이브러리를 사용하도록 설정하려고 하면 오류 메시지를 받게 됩니다.
SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE(ODBC 3.8) 연결 핸들에서 선택한 함수의 비동기 실행을 사용하거나 사용하지 않도록 설정하는 SQLUINTEGER 값입니다. 자세한 내용은 비동기 실행(폴링 방법)을 참조하세요.

SQL_ASYNC_DBC_ENABLE_ON = 지정된 연결 관련 함수에 대해 비동기 작업을 사용하도록 설정합니다.

SQL_ASYNC_DBC_ENABLE_OFF = (기본값) 지정된 연결 관련 함수에 대해 비동기 작업을 사용하지 않도록 설정합니다.

SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE 설정은 항상 동기적입니다(즉, SQL_STILL_EXECUTING 반환하지 않습니다).

문 작업의 비동기 실행은 SQL_ATTR_ASYNC_ENABLE 사용하도록 설정됩니다.
SQL_ATTR_ASYNC_DBC_PCALLBACK(ODBC 3.8) 컨텍스트 구조를 가리키는 SQLPOINTER 값입니다.

드라이버 관리자만 이 특성을 사용하여 드라이버의 SQLSetStmtAttr 함수를 호출할 수 있습니다.
SQL_ATTR_ASYNC_DBC_PCONTEXT(ODBC 3.8) 컨텍스트 구조를 가리키는 SQLPOINTER 값입니다.

드라이버 관리자만 이 특성을 사용하여 드라이버의 SQLSetStmtAttr 함수를 호출할 수 있습니다.
SQL_ATTR_ASYNC_ENABLE(ODBC 3.0) 지정된 연결에서 문으로 호출된 함수가 비동기적으로 실행되는지 여부를 지정하는 SQLULEN 값입니다.

SQL_ASYNC_ENABLE_OFF = 문 작업에 대한 연결 수준 비동기 실행 지원을 사용하지 않도록 설정합니다(기본값).

SQL_ASYNC_ENABLE_ON = 문 작업에 대한 연결 수준 비동기 실행 지원을 사용하도록 설정합니다.

이 특성은 SQL_ASYNC_MODE 정보 유형이 있는 SQLGetInfo가 SQL_AM_CONNECTION 반환하는지 또는 SQL_AM_STATEMENT 반환하는지 여부를 설정할 수 있습니다.
SQL_ATTR_AUTO_IPD(ODBC 3.0) SQLPrepare 호출 후 IPD의 자동 채우기가 지원되는지 여부를 지정하는 읽기 전용 SQLUINTEGER 값입니다.

SQL_TRUE = 드라이버에서 SQLPrepare 호출 후 IPD의 자동 채우기를 지원합니다.

SQL_FALSE = SQLPrepare 호출 후 IPD의 자동 채우기는 드라이버에서 지원되지 않습니다. 준비된 문을 지원하지 않는 서버는 IPD를 자동으로 채울 수 없습니다.

SQL_ATTR_AUTO_IPD 연결 특성에 대해 SQL_TRUE 반환되는 경우 문 특성 SQL_ATTR_ENABLE_AUTO_IPD IPD의 자동 채우기를 설정하거나 해제하도록 설정할 수 있습니다. SQL_ATTR_AUTO_IPD SQL_FALSE 경우 SQL_ATTR_ENABLE_AUTO_IPD SQL_TRUE 설정할 수 없습니다. SQL_ATTR_ENABLE_AUTO_IPD 기본값은 SQL_ATTR_AUTO_IPD 값과 같습니다.

이 연결 특성은 SQLGetConnectAttr에서 반환할 수 있지만 SQLSetConnectAttr에서 설정할 수는 없습니다.
SQL_ATTR_AUTOCOMMIT(ODBC 1.0) 자동 커밋 모드 또는 수동 커밋 모드를 사용할지 여부를 지정하는 SQLUINTEGER 값입니다.

SQL_AUTOCOMMIT_OFF = 드라이버는 수동 커밋 모드를 사용하며 애플리케이션은 SQLEndTran사용하여 트랜잭션을 명시적으로 커밋하거나 롤백해야 합니다.

SQL_AUTOCOMMIT_ON = 드라이버가 자동 커밋 모드를 사용합니다. 각 문은 실행 직후에 커밋됩니다. 기본값입니다. SQL_ATTR_AUTOCOMMIT 수동 커밋 모드에서 자동 커밋 모드로 변경하도록 SQL_AUTOCOMMIT_ON 설정되면 연결의 열려 있는 트랜잭션이 커밋됩니다.

자세한 내용은 커밋 모드를 참조 하세요. 중요: 일부 데이터 원본은 액세스 계획을 삭제하고 문이 커밋될 때마다 연결의 모든 문에 대한 커서를 닫습니다. 자동 커밋 모드에서는 쿼리가 아닌 각 문이 실행되거나 쿼리에 대해 커서가 닫힌 후에 이 작업이 발생할 수 있습니다. 자세한 내용은 SQLGetInfo의 SQL_CURSOR_COMMIT_BEHAVIOR 및 SQL_CURSOR_ROLLBACK_BEHAVIOR 정보 유형과 커서 및 준비된 문에 대한 트랜잭션의 영향을 참조하세요.

자동 커밋 모드에서 일괄 처리를 실행하는 경우 두 가지가 가능합니다. 전체 일괄 처리는 자동 커밋 가능한 단위로 처리되거나 일괄 처리의 각 문은 자동 커밋 가능한 단위로 처리됩니다. 특정 데이터 원본은 이러한 동작을 모두 지원할 수 있으며 하나 또는 다른 동작을 선택하는 방법을 제공할 수 있습니다. 일괄 처리가 자동 커밋 가능한 단위로 처리되는지 또는 일괄 처리 내의 각 개별 문이 자동 커밋 가능한지 여부에 대한 드라이버 정의입니다.
SQL_ATTR_CONNECTION_DEAD

(ODBC 3.5)
연결 상태를 나타내는 읽기 전용 SQLUINTEGER 값입니다. SQL_CD_TRUE 경우 연결이 끊어졌습니다. SQL_CD_FALSE 경우 연결은 여전히 활성 상태입니다.
SQL_ATTR_CONNECTION_TIMEOUT(ODBC 3.0) 애플리케이션으로 돌아가기 전에 연결에 대한 모든 요청이 완료되기를 기다리는 시간(초)에 해당하는 SQLUINTEGER 값입니다. 드라이버는 쿼리 실행 또는 로그인과 연결되지 않은 상황에서 제한 시간을 초과할 수 있는 경우 언제든지 SQLSTATE HYT00(제한 시간 만료)을 반환해야 합니다.

ValuePtr이 0(기본값)이면 시간 제한이 없습니다.
SQL_ATTR_CURRENT_CATALOG(ODBC 2.0) 데이터 원본에서 사용할 카탈로그의 이름을 포함하는 문자열입니다. 예를 들어 SQL Server에서 카탈로그는 데이터베이스이므로 드라이버는 USE데이터베이스 문을 데이터 원본으로 보냅니다. 여기서 데이터베이스는 *ValuePtr에 지정된 데이터베이스입니다. 단일 계층 드라이버의 경우 카탈로그는 디렉터리일 수 있으므로 드라이버는 현재 디렉터리를 *ValuePtr에 지정된 디렉터리로 변경합니다.
SQL_ATTR_DBC_INFO_TOKEN(ODBC 3.8 SQLRateConnection의 (*pRating) 매개 변수가 100이 아닌 경우 연결 정보 토큰을 DBC 핸들로 다시 설정하는 데 사용되는 SQLPOINTER 값입니다.

SQL_ATTR_DBC_INFO_TOKEN 설정 전용입니다. SQLGetConnectAttr 또는 SQLGetConnectOption을 사용하여 이 값을 검색할 수 없습니다. 애플리케이션이 이 특성을 설정하면 안 되므로 드라이버 관리자의 SQLSetConnectAttr 는 SQL_ATTR_DBC_INFO_TOKEN 허용하지 않습니다.

드라이버가 SQL_ATTR_DBC_INFO_TOKEN 설정한 후 SQL_ERROR 반환하면 풀에서 방금 가져온 연결이 해제됩니다. 그러면 드라이버 관리자가 풀에서 다른 연결을 가져오려고 합니다. 자세한 내용은 ODBC 드라이버에서 연결 풀 인식 개발을 참조하세요.
SQL_ATTR_ENLIST_IN_DTC(ODBC 3.0) Microsoft Component Services에서 조정한 분산 트랜잭션에서 ODBC 드라이버를 사용할지 여부를 지정하는 SQLPOINTER 값입니다.

SQL Server로 내보낼 트랜잭션을 지정하는 DTC OLE 트랜잭션 개체를 전달하거나 연결의 DTC 연결을 종료할 SQL_DTC_DONE.

클라이언트는 MS DTC(Microsoft Distributed Transaction Coordinator) OLE ITransactionDispenser::BeginTransaction 메서드를 호출하여 MS DTC 트랜잭션을 시작하고 트랜잭션을 나타내는 MS DTC 트랜잭션 개체를 만듭니다. 그런 다음 애플리케이션은 SQL_ATTR_ENLIST_IN_DTC 옵션으로 SQLSetConnectAttr를 호출하여 트랜잭션 개체를 ODBC 연결과 연결합니다. 관련된 모든 데이터베이스 작업은 MS DTC 트랜잭션의 보호 아래 수행됩니다. 애플리케이션은 SQL_DTC_DONE 사용하여 SQLSetConnectAttr를 호출하여 연결의 DTC 연결을 종료합니다. 자세한 내용은 MS DTC 설명서를 참조하세요.
SQL_ATTR_LOGIN_TIMEOUT(ODBC 1.0) 애플리케이션으로 돌아가기 전에 로그인 요청이 완료되기를 기다리는 시간(초)에 해당하는 SQLUINTEGER 값입니다. 기본값은 드라이버 종속입니다. ValuePtr이 0이면 시간 제한이 비활성화되고 연결 시도가 무기한 대기합니다.

지정된 시간 제한이 데이터 원본의 최대 로그인 시간 제한을 초과하면 드라이버는 해당 값을 대체하고 SQLSTATE 01S02(옵션 값이 변경됨)를 반환합니다.
SQL_ATTR_METADATA_ID(ODBC 3.0) 카탈로그 함수의 문자열 인수를 처리하는 방법을 결정하는 SQLUINTEGER 값입니다.

SQL_TRUE 경우 카탈로그 함수의 문자열 인수는 식별자로 처리됩니다. 이 경우는 중요하지 않습니다. 지정되지 않은 문자열의 경우 드라이버는 후행 공백을 제거하고 문자열은 대문자로 접습니다. 구분된 문자열의 경우 드라이버는 선행 또는 후행 공백을 제거하고 구분 기호 사이에 있는 모든 것을 문자 그대로 사용합니다. 이러한 인수 중 하나가 null 포인터로 설정된 경우 함수는 SQL_ERROR 및 SQLSTATE HY009(null 포인터의 잘못된 사용)를 반환합니다.

SQL_FALSE 경우 카탈로그 함수의 문자열 인수는 식별자로 처리되지 않습니다. 이 경우는 중요합니다. 인수에 따라 문자열 검색 패턴을 포함하거나 포함하지 않을 수 있습니다.

기본값은 SQL_FALSE.

값 목록을 사용하는 SQLTablesTableType 인수는 이 특성의 영향을 받지 않습니다.

SQL_ATTR_METADATA_ID 문 수준에서 설정할 수도 있습니다. (문 특성이기도 한 유일한 연결 특성입니다.)

자세한 내용은 카탈로그 함수의 인수를 참조 하세요.
SQL_ATTR_ODBC_CURSORS(ODBC 2.0) 드라이버 관리자가 ODBC 커서 라이브러리를 사용하는 방법을 지정하는 SQLULEN 값입니다.

SQL_CUR_USE_IF_NEEDED = 드라이버 관리자는 필요한 경우에만 ODBC 커서 라이브러리를 사용합니다. 드라이버가 SQLFetchScroll에서 SQL_FETCH_PRIOR 옵션을 지원하는 경우 드라이버 관리자는 드라이버의 스크롤 기능을 사용합니다. 그렇지 않으면 ODBC 커서 라이브러리를 사용합니다.

SQL_CUR_USE_ODBC = 드라이버 관리자는 ODBC 커서 라이브러리를 사용합니다.

SQL_CUR_USE_DRIVER = 드라이버 관리자는 드라이버의 스크롤 기능을 사용합니다. 이것이 기본 설정입니다.

ODBC 커서 라이브러리에 대한 자세한 내용은 부록 F: ODBC 커서 라이브러리를 참조 하세요. 경고: 커서 라이브러리는 이후 버전의 Windows에서 제거됩니다. 새 개발 작업에서 이 기능을 사용하지 말고 현재 이 기능을 사용하는 애플리케이션을 수정할 계획입니다. 드라이버의 커서 기능을 사용하는 것이 좋습니다.
SQL_ATTR_PACKET_SIZE(ODBC 2.0) 네트워크 패킷 크기를 바이트 단위로 지정하는 SQLUINTEGER 값입니다. 참고: 많은 데이터 원본은 이 옵션을 지원하지 않거나 네트워크 패킷 크기를 반환할 수 있지만 설정할 수는 없습니다.

지정된 크기가 최대 패킷 크기를 초과하거나 최소 패킷 크기보다 작은 경우 드라이버는 해당 값을 대체하고 SQLSTATE 01S02(옵션 값이 변경됨)를 반환합니다.

연결이 이미 설정된 후 애플리케이션이 패킷 크기를 설정하는 경우 드라이버는 SQLSTATE HY011을 반환합니다(특성은 지금 설정할 수 없음).
SQL_ATTR_QUIET_MODE(ODBC 2.0) 창 핸들(HWND)입니다.

창 핸들이 null 포인터인 경우 드라이버는 대화 상자를 표시하지 않습니다.

창 핸들이 null 포인터가 아닌 경우 애플리케이션의 부모 창 핸들이어야 합니다. 기본값입니다. 드라이버는 이 핸들을 사용하여 대화 상자를 표시합니다. 참고: SQL_ATTR_QUIET_MODE 연결 특성은 SQLDriverConnect에서 표시하는 대화 상자에 적용되지 않습니다.
SQL_ATTR_TRACE(ODBC 1.0) 드라이버 관리자에게 추적을 수행할지 여부를 알려주는 SQLUINTEGER 값입니다.

SQL_OPT_TRACE_OFF = 추적 해제(기본값)

SQL_OPT_TRACE_ON = 추적

추적이 켜지면 드라이버 관리자는 추적 파일에 각 ODBC 함수 호출을 씁니다. 참고: 추적이 켜지면 드라이버 관리자는 모든 함수에서 SQLSTATE IM013(추적 파일 오류)을 반환할 수 있습니다.

애플리케이션은 SQL_ATTR_TRACEFILE 옵션을 사용하여 추적 파일을 지정합니다. 파일이 이미 있는 경우 드라이버 관리자가 파일에 추가합니다. 그렇지 않으면 파일을 만듭니다. 추적이 켜지고 추적 파일이 지정되지 않은 경우 드라이버 관리자는 SQL 파일에 씁니다. 루트 디렉터리에 로그인합니다.

애플리케이션은 동적으로 추적을 사용하도록 ODBCSharedTraceFlag 변수를 설정할 수 있습니다. 추적은 현재 실행 중인 모든 ODBC 애플리케이션에 대해 사용하도록 설정됩니다. 애플리케이션이 추적을 해제하면 해당 애플리케이션에 대해서만 꺼집니다.

애플리케이션이 SQL_HANDLE_ENV HandleType을 사용하여 SQLAllocHandle을 호출할 때 시스템 정보의 추적 키워드가 1로 설정되면 모든 핸들에 대해 추적이 활성화됩니다. SQLAllocHandle을 호출한 애플리케이션에 대해서만 사용하도록 설정됩니다.

특성이 SQL_ATTR_TRACE SQLSetConnectAttr 를 호출해도 ConnectionHandle 인수가 유효하지 않아도 되며 ConnectionHandle이 NULL인 경우 SQL_ERROR 반환하지 않습니다. 이 특성은 모든 연결에 적용됩니다.
SQL_ATTR_TRACEFILE(ODBC 1.0) 추적 파일의 이름을 포함하는 null로 끝나는 문자열입니다.

SQL_ATTR_TRACEFILE 특성의 기본값은 시스템 정보의 TraceFile 키워드로 지정됩니다. 자세한 내용은 ODBC 하위 키를 참조 하세요.

특성이 SQL_ATTR_TRACEFILE SQLSetConnectAttr 를 호출할 때는 ConnectionHandle 인수가 유효하지 않아도 되며 ConnectionHandle이 잘못된 경우 SQL_ERROR 반환하지 않습니다. 이 특성은 모든 연결에 적용됩니다.
SQL_ATTR_TRANSLATE_LIB(ODBC 1.0) 드라이버가 문자 집합 변환과 같은 작업을 수행하기 위해 액세스하는 SQLDriverToDataSource 및 SQLDataSourceToDriver 함수를 포함하는 라이브러리의 이름을 포함하는 null로 끝나는 문자열입니다. 이 옵션은 드라이버가 데이터 원본에 연결된 경우에만 지정할 수 있습니다. 이 특성의 설정은 연결 간에 유지됩니다. 데이터 번역에 대한 자세한 내용은 번역 DLL번역 DLL 함수 참조를 참조하세요.
SQL_ATTR_TRANSLATE_OPTION(ODBC 1.0) 변환 DLL에 전달되는 32비트 플래그 값입니다. 이 특성은 드라이버가 데이터 원본에 연결된 경우에만 지정할 수 있습니다. 데이터 번역에 대한 자세한 내용은 번역 DLL을 참조 하세요.
SQL_ATTR_TXN_ISOLATION(ODBC 1.0) 현재 연결에 대한 트랜잭션 격리 수준을 설정하는 32비트 비트 마스크입니다. 애플리케이션은 이 옵션을 사용하여 SQLSetConnectAttr를 호출하기 전에 SQLEndTran을 호출하여 연결에서 열려 있는 모든 트랜잭션을 커밋하거나 롤백해야 합니다.

InfoType이 SQL_TXN_ISOLATION_OPTIONS 동일한 SQLGetInfo를 호출하여 ValuePtr에 대한 유효한 값을 확인할 수 있습니다.

트랜잭션 격리 수준에 대한 설명은 SQLGetInfo 및 트랜잭션 격리 수준의 SQL_DEFAULT_TXN_ISOLATION 정보 유형에 대한 설명을 참조하세요.

[1] 설명자가 애플리케이션 설명자가 아닌 구현 설명자인 경우에만 이러한 함수를 비동기적으로 호출할 수 있습니다.

코드 예

SQLConnect를 참조하세요.

추가 정보 참조
핸들 할당 SQLAllocHandle 함수
연결 특성 설정 반환 SQLGetConnectAttr 함수

참고 항목

ODBC API 참조
ODBC 헤더 파일