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;
}