콘텐츠로 이동

SQLSetConnectAttr

SQLSetConnectAttr#

특정 연결에 대한 연결 속성값을 설정한다.

Unicode SQLSetConnectAttrW() 동작은 SQLSetConnectAttr()와 동일하다.

구 문#

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

인 자#

자료유형 인자 사용 설명
SQLHDBC dbc 입력 연결 핸들
SQLINTEGER Attribute 입력 설정할 속성
SQLPOINTER ValuePtr 입력 속성에 해당하는 값의 포인터.
Attribute 값에 따라, ValuePtr은 32-bit unsigned integer 값이거나, null-terminated character string을 가리키는 포인터.
- SQL_ATTR_AUTOCOMMIT
- SQL_ATTR_CONNECTION_TIMEOUT
- SQL_ATTR_PORT
- SQL_ATTR_TXN_ISOLATION
- ALTIBASE_APP_INFO
- ALTIBASE_DATE_FORMAT
- ALTIBASE_CONN_ATTR_IPC_FILEPATH
SQLINTEGER StringLength 입력 ValuePtr이 character string 일 때 StringLength는 문자열의 바이트 길이 또는 SQL_NTS.
32-bit Integer 일 때는 무시한다.

결괏값#

SQL_SUCCESS
SQL_SUCCESS_WITH_INFO
SQL_INVALID_HANDLE
SQL_ERROR

설 명#

애플리케이션은 연결이 할당되거나 해제되는 어느 시점에서나 SQLSetConnectAttr()을 호출할 수 있다. 애플리케이션에서 성공적으로 설정된 모든 연결과 명령문 속성들은 현재 연결에서 SQLFreeHandle()이 호출될 때까지 보존된다.

속성 내용
SQL_ATTR_AUTOCOMMIT 연결에 대한 반영 작동을 설정하는 32비트 값.
- SQL_AUTOCOMMIT_ON: 각각의 SQL문은 실행 시 자동으로 반영.
- SQL_AUTOCOMMIT_OFF: 각 SQL문을 실행 시 자동으로 반영하지 않는다.
SQL_ATTR_CONNECTION_TIMEOUT 네트워크 불안정 시 select() 또는 poll() 에서 발생할 수 있는 blocking을 방지하기 위한 timeout 값 설정
SQL_ATTR_PORT Server port 설정 (32-bit Integer)
SQL_ATTR_TXN_ISOLATION dbc에 의해 참조되는 현재 연결에 대한 트랜잭션 분리 레벨을 설정하는 32 비트값.
SQL_ATTR_ENLIST_IN_DTC DTC(Distributed Transaction Coordinator)로 초기화된 분산 트랜잭션에 참여시킨다. 분산 트랜잭션을 참여하기 위해 속성 값으로 분산 트랜잭션의 객체(ITransaction *)를 설정하거나 SQL_DTC_DONE을 설정한다.
- SQL_DTC_DONE : 값을 설정하면 분산 트랜잭션에 참여 완료 후 로컬 트랜잭션으로 수행된다.
ALTIBASE_APP_INFO Altibase CLI 애플리케이션이 가질수 있는 임의의 식별자를 지정하여, 사용자 임의의 세션에 대한 보다 정확한 정보를 알 수 있다.
ALTIBASE_DATE_FORMAT 날짜 형식 설정.
기본값으로 YYYY/MM/DD HH:MI:SS을 지원한다.
ALTIBASE_CONN_ATTR_IPC_FILEPATH 유닉스 환경에서 서버와 클라이언트가 IPC로 접속할 때 ALTIBASE_HOME이 서로 다른 경우, 유닉스 도메인의 소켓 경로가 일치하지 않아 접속할 수 없다. 이 때 ALTIBASE_HOME/trc/cm-ipc 파일을 이용하면, 유닉스 도메인 통신이 가능해져 공유 메모리의 정보를 가져올 수 있다.
ALTIBASE_SOCK_RCVBUF_BLOCK_RATIO 소켓 수신 버퍼의 크기를 32K 단위로 설정한다. 만약 이 속성의 값이 2로 설정되었다면 소켓 수신 버퍼의 크기는 64K가 된다.
기본값은 0이다.
TCP kernel parameter 중 최대 소켓 수신 버퍼 크기가 이 속성값에 의해 설정된 소켓 수신 버퍼 크기 미만으로 설정되어 있을 경우, 이 속성 은 OS에 따라 무시되거나 에러를 발생시킬 수 있다. (Linux OS 인 경우, 'net.core.rmem_max' TCP kernel parameter에 해당된다)
ALTIBASE_MESSAGE_CALLBACK 서버로부터 전달되는 메시지를 수신하기 위해 콜백 함수를 등록한다. 사용자는 수신된 메시지를 콜백 함수로 핸들할 수 있으며, 자세한 사용법은 아래 샘플을 참고한다.<$ALTIBASE_HOME/sample/SQLCLI/demo_message.cpp>

진 단#

SQLSTATE 설명 부연설명
08S01 통신 회선 장애 (데이터 송수신 실패) Altibase CLI 드라이버와 DB간에 함수 처리가 완료되기 전에 통신 회선 실패
25000 로컬 트랜잭션 수행중이므로 연산 불가 NON-AUTOCOMMIT 모드에서 SQL_ATTR_ENLIST_IN_DTC 속성으로 분산 트랜잭션에 참여 시도시 실패
HY000 일반 오류

Attribute가 명령문 속성일 때, SQLSetConnectAttr()은 SQLSetStmtAttr()에 의해 반환된 어떠한 SQLSTATE도 반환할 수 있다.

관련 함수#

SQLAllocHandle

예 제#

< $ALTIBASE_HOME/sample/SQLCLI/demo_tran1.cpp 참고 >

if (SQLSetConnectAttr(dbc, SQL_ATTR_AUTOCOMMIT,
                    (void*)SQL_AUTOCOMMIT_OFF, 0) != SQL_SUCCESS)
{              
    execute_err(dbc, SQL_NULL_HSTMT, "Autocommit OFF");
    return SQL_ERROR;
}