연결 속성 설정
연결 문자열 속성을 지정하는 방식에는 여러 가지가 있습니다.
DriverManager 클래스를 사용하여 연결할 때 연결 URL에 이름=값 속성으로 지정
DriverManager 클래스에 있는 Connect 메서드의 Properties 매개 변수에 이름=값 속성으로 지정
드라이버 데이터 원본의 해당 setter 메서드에 값으로 지정 예를 들면 다음과 같습니다.
datasource.setServerName(value) datasource.setDatabaseName(value)
속성 이름은 대/소문자를 구분하지 않으며 중복된 속성 이름을 다음 순서로 확인합니다.
API 인수(예: 사용자 및 암호)
속성 컬렉션
연결 문자열의 마지막 인스턴스
또한 속성 이름에 알 수 없는 값이 허용될 뿐 아니라 JDBC 드라이버에서는 이 값의 대/소문자에 대한 유효성을 검사하지 않습니다.
동의어를 허용하고 중복 속성 이름처럼 순서대로 확인합니다.
다음 표에서는 JDBC 드라이버에 현재 사용할 수 있는 모든 연결 문자열 속성을 나열합니다.
속성 | 유형 | 기본값 | 설명 |
---|---|---|---|
applicationName |
String [<=128자] |
null |
응용 프로그램 이름 또는 이름을 지정하지 않은 경우 "Microsoft SQL Server JDBC 드라이버"가 됩니다. 다양한 SQL Server 프로파일링 및 로깅 도구에서 특정 응용 프로그램을 식별하는 데 사용합니다. |
databaseName, database |
String [<=128자] |
null |
연결할 데이터베이스 이름입니다. 지정하지 않으면 기본 데이터베이스에 연결합니다. |
disableStatementPooling |
boolean ["true"|"false"] |
true |
현재는 "true" 값만 지원하며 "false"로 설정할 경우 예외가 발생합니다. |
encrypt |
boolean ["true"|"false"] |
false |
"true"로 설정하면 SQL Server에 인증서가 설치되어 있는 경우 이 서버에서 클라이언트와 서버 간에 전송되는 모든 데이터에 대해 SSL(Secure Sockets Layer) 암호화를 사용하도록 지정됩니다. 기본값은 false입니다. |
failoverPartner |
String |
null |
데이터베이스 미러링 구성에서 사용되는 장애 조치 서버의 이름입니다. 이 속성은 주 서버에 대한 초기 연결 실패 시 사용되며 초기 연결이 이루어진 후에는 무시됩니다. databaseName 속성과 함께 사용해야 합니다.
참고:
연결 문자열에서 failoverPartner 속성의 일부로 장애 조치(Failover) 파트너 인스턴스의 서버 인스턴스 포트 번호를 지정하는 작업은 드라이버에서 지원되지 않습니다. 하지만 주 서버 인스턴스의 serverName, instanceName 및 portNumber 속성과 장애 조치(Failover) 파트너 인스턴스의 failoverPartner 속성을 동일한 연결 문자열에 지정할 수는 있습니다.
|
hostNameInCertificate |
String |
null |
SQL Server SSL 인증서의 유효성을 검사할 때 사용할 호스트 이름입니다. hostNameInCertificate 속성이 지정되지 않았거나 null로 설정된 경우 Microsoft SQL Server JDBC 드라이버에서는 연결 URL의 serverName 속성 값을 SQL Server SSL 인증서의 유효성을 검사할 호스트 이름으로 사용합니다.
참고:
이 속성은 encrypt 속성 및 trustServerCertificate 속성과 함께 사용되며, encrypt 속성이 "true"로 설정되어 있고 trustServerCertificate 속성이 "false"로 설정되어 있는 경우에만 인증서 유효성 검사에 영향을 줍니다.
|
instanceName |
String [<=128자] |
null |
연결할 SQL Server 인스턴스 이름입니다. 지정하지 않으면 기본 인스턴스에 연결합니다. instanceName 및 포트를 모두 지정하는 경우에 대해서는 포트 관련 설명을 참조하십시오. |
integratedSecurity |
boolean ["true"|"false"] |
false |
SQL Server에서 Windows 자격 증명을 사용하여 응용 프로그램 사용자를 인증하도록 하려면 "true"로 설정합니다. "true"로 설정하는 경우 JDBC 드라이버는 컴퓨터 또는 네트워크 로그온 시 이미 제공된 자격 증명에 대해 로컬 컴퓨터 자격 증명 캐시를 검색합니다. "false"로 설정하는 경우 사용자 이름과 암호를 입력해야 합니다.
참고:
이 연결 속성은 Microsoft Windows 운영 체제에서만 지원됩니다.
|
lastUpdateCount |
boolean ["true"|"false"] |
true |
"true" 값을 설정할 경우 서버에 전달된 SQL 문에서 마지막 업데이트 횟수만 반환되며, 이 값을 단일 SELECT, INSERT 또는 DELETE 문에서 사용하면 서버 트리거로 인한 추가 업데이트 횟수를 무시할 수 있습니다. 이 속성을 "false"로 설정하면 서버 트리거로 인해 반환된 업데이트 횟수를 포함하여 모든 업데이트 횟수가 반환됩니다.
참고:
이 속성은 executeUpdate 메서드와 함께 사용될 경우에만 적용됩니다. 다른 모든 execute 메서드는 모든 결과 및 업데이트 횟수를 반환합니다. 이 속성은 서버 트리거에서 반환하는 업데이트 횟수에만 영향을 미치고 트리거 실행 중 발생하는 오류 또는 결과 집합에는 영향을 미치지 않습니다.
|
lockTimeout |
int |
-1 |
데이터베이스에서 잠금 제한 시간을 보고할 때까지의 대기 시간(밀리초)입니다. 기본 동작은 무한정 대기하는 것입니다. 이 값을 지정하면 연결의 모든 문에 대해 기본값으로 사용됩니다. |
loginTimeout |
int [0..65535] |
15 |
드라이버가 연결 실패 제한 시간까지 대기해야 하는 시간(초)입니다. 0 값을 지정하면 기본적으로 15초로 지정되는 시스템 제한 시간이 사용됩니다. 0이 아닌 값은 드라이버가 연결 실패 제한 시간까지 대기해야 하는 시간(초)입니다. |
packetSize |
int [-1| 0 | 512..32767] |
8000 |
SQL Server와의 통신에 사용되는 네트워크 패킷 크기로서 바이트 단위로 지정합니다. 값 -1은 서버의 기본 패킷 크기가 사용됨을 나타내고 값 0은 최대값인 32767이 사용됨을 나타냅니다. 이 속성을 허용 범위 이외의 값으로 설정하면 예외가 발생합니다.
중요:
암호화가 설정된 경우(encrypt=true)에는 packetSize 속성을 사용하지 않는 것이 좋습니다. 그렇지 않으면 드라이버에서 연결 오류가 발생할 수 있습니다. 자세한 내용은 SQLServerDataSource 클래스의 setPacketSize 메서드를 참조하십시오.
|
암호 |
String [<=128자] |
null |
데이터베이스 암호입니다. |
portNumber, port |
int [0..65535] |
1433 |
SQL Server에서 수신 중인 포트입니다. 연결 문자열에 포트 번호가 지정되어 있으면 sqlbrowser에 요청을 보내지 않습니다. 포트와 instanceName을 모두 지정한 경우 지정된 포트로 연결합니다. 하지만 instanceName의 유효성을 검사하여 포트와 일치하지 않는 경우 오류가 발생합니다.
중요:
sqlbrowser를 사용하는 것보다 더 안전하므로 항상 포트 번호를 지정하는 것이 좋습니다.
|
responseBuffering |
String ["full"|"adaptive"] |
adaptive |
이 속성이 "adaptive"로 설정되어 있으면 필요할 때 최소한의 데이터가 버퍼링됩니다. Microsoft SQL Server JDBC 드라이버 버전 2.0 이상의 기본 모드는 "adaptive"입니다. 이 속성이 "full"로 설정되어 있으면 문이 실행될 때 전체 결과 집합을 서버에서 읽습니다. Microsoft SQL Server 2005 JDBC 드라이버 버전 1.2의 기본 모드는 "full"이며 Microsoft SQL Server 2005 JDBC 드라이버 버전 1.0, 1.1 및 1.2와의 호환성을 제공합니다.
참고:
JDBC 드라이버를 버전 1.2에서 2.0으로 업그레이드하면 기본 버퍼링 모드가 "adaptive"가 됩니다. 응용 프로그램에서 "responseBuffering" 속성을 설정하지 않은 경우 버전 1.2 기본 동작을 유지하고 싶으면 연결 속성을 사용하거나 SQLServerStatement 개체의 setResponseBuffering 메서드를 사용하여 responseBufferring 속성을 "full"로 설정해야 합니다.
|
selectMethod |
String ["direct"|"cursor"] |
direct |
이 속성을 "cursor"로 설정하면 TYPE_FORWARD_ONLY 및 CONCUR_READ_ONLY 커서에 대한 연결에서 생성된 각 쿼리에 대해 데이터베이스 커서가 만들어집니다. 이 속성은 대개 응용 프로그램에서 클라이언트 메모리에 완전히 집어넣을 수 없는 매우 큰 결과 집합을 생성하는 경우에만 필요합니다. 이 속성을 "cursor"로 설정하면 클라이언트 메모리에 제한된 수의 결과 집합 행만 유지됩니다. 기본 동작은 클라이언트 메모리에 모든 결과 집합 행이 유지되는 것입니다. 이 동작은 응용 프로그램에서 모든 행을 처리하는 경우에 성능 면에서 가장 효과적입니다. |
sendStringParametersAsUnicode |
boolean ["true"|"false"] |
true |
sendStringParametersAsUnicode 속성을 "true"로 설정하면 문자열 매개 변수가 유니코드 형식으로 서버에 전송됩니다. sendStringParametersAsUnicode 속성을 "false"로 설정하면 문자열 매개 변수가 유니코드가 아닌 ASCII/MBCS 등의 형식으로 서버에 전송됩니다. sendStringParametersAsUnicode 속성의 기본값은 "true"입니다.
참고:
JDBC 드라이버 버전 2.0에서 sendStringParametersAsUnicode 속성은 매개 변수 값을 CHAR, VARCHAR 또는 LONGVARCHAR JDBC 형식으로 보낼 때만 확인됩니다. SQLServerPreparedStatement 및 SQLServerCallableStatement 클래스의 setNString, setNCharacterStream 및 setNClob 메서드와 같은 새 JDBC 4.0 국가별 문자 메서드는 이 속성의 설정에 관계없이 항상 유니코드를 사용하여 매개 변수 값을 서버에 보냅니다. CHAR, VARCHAR 및 LONGVARCHAR JDBC 데이터 형식을 사용할 때 성능을 최적화하려면 JDBC 드라이버 버전 2.0을 사용하는 응용 프로그램은 sendStringParametersAsUnicode 속성을 "false"로 설정하고 SQLServerPreparedStatement 및 SQLServerCallableStatement 클래스의 국가별 문자 메서드가 아닌 메서드 setString, setCharacterStream 및 setClob을 사용해야 합니다. 응용 프로그램에서 sendStringParametersAsUnicode 속성을 "false"로 설정하고 국가별 문자 메서드가 아닌 메서드를 사용하여 서버측 유니코드 데이터 형식(nchar, nvarchar 및 ntext)에 액세스하는 경우 데이터베이스 데이터 정렬에서 국가별 문자 메서드가 아닌 메서드가 전달하는 문자열 매개 변수의 문자를 지원하지 않으면 일부 데이터가 손실될 수 있습니다. 응용 프로그램에서는 NCHAR, NVARCHAR 및 LONGNVARCHAR JDBC 데이터 형식에 대해 SQLServerPreparedStatement 및 SQLServerCallableStatement 클래스의 국가별 문자 메서드인 setNString, setNCharacterStream 및 setNClob을 사용해야 합니다.
|
serverName, server |
String |
null |
SQL Server를 실행하는 컴퓨터입니다. |
userName, user |
String [<=128자] |
null |
데이터베이스 사용자입니다. |
trustServerCertificate |
boolean ["true"|"false"] |
false |
Microsoft SQL Server JDBC 드라이버가 SQL Server SSL 인증서의 유효성을 검사하지 않도록 지정하려면 "true"를 설정합니다. "true"일 경우 통신 계층이 SSL을 사용하여 암호화되면 SQL Server SSL 인증서가 자동으로 트러스트됩니다. "false"일 경우 Microsoft SQL Server JDBC 드라이버에서 서버 SSL 인증서의 유효성을 검사합니다. 서버 인증서의 유효성 검사를 실패할 경우 드라이버에서 오류가 발생하고 연결이 종료됩니다. 기본값은 "false"입니다.
참고:
이 속성은 encrypt 속성과 함께 사용되며 encrypt 속성이 "true"로 설정되어 있는 경우에만 서버 SSL 인증서의 유효성 검사에 영향을 줍니다.
|
trustStore |
String |
null |
인증서 trustStore 파일에 대한 경로(파일 이름 포함)입니다. trustStore 파일에는 클라이언트에서 신뢰하는 인증서 목록이 포함되어 있습니다. 이 속성이 지정되지 않았거나 null로 설정된 경우 드라이버에서는 트러스트 관리자 팩토리의 조회 규칙에 따라 사용할 인증서 저장소를 결정합니다. 기본 SunX509 TrustManagerFactory는 다음 검색 순서에 따라 기본 트러스트 자료를 찾으려고 합니다.
자세한 내용은 Sun Microsystems 웹 사이트에서 SUNX509 TrustManager 인터페이스 설명서를 참조하십시오.
참고:
이 속성은 encrypt 속성이 "true"로 설정되어 있고 trustServerCertificate 속성이 "false"로 설정되어 있는 경우에만 인증서 trustStore 조회에 영향을 줍니다.
|
trustStorePassword |
String |
null |
trustStore 데이터의 무결성을 검사하는 데 사용되는 암호입니다. trustStore 속성은 설정되어 있지만 trustStorePassword 속성이 설정되어 있지 않는 경우 trustStore의 무결성을 검사하지 않습니다. trustStore 속성과 trustStorePassword 속성이 모두 지정되어 있지 않는 경우 드라이버에서 JVM 시스템 속성 "javax.net.ssl.trustStore" 및 "javax.net.ssl.trustStorePassword"를 사용합니다. "javax.net.ssl.trustStorePassword" 시스템 속성이 지정되어 있지 않는 경우 trustStore의 무결성을 검사하지 않습니다. trustStore 속성은 설정되어 있지 않지만 trustStorePassword 속성이 설정되어 있는 경우 JDBC 드라이버에서는 "javax.net.ssl.trustStore"에 지정된 파일을 트러스트 저장소로 사용하여 지정된 trustStorePassword로 트러스트 저장소의 무결성을 검사합니다. 클라이언트 응용 프로그램이 JVM 시스템 속성에 암호를 저장하지 않는 경우 이 방법이 필요할 수 있습니다.
참고:
trustStorePassword 속성은 encrypt 속성이 "true"로 설정되어 있고 trustServerCertificate 속성이 "false"로 설정되어 있는 경우에만 인증서 trustStore 조회에 영향을 줍니다.
|
workstationID |
String [<=128자] |
<빈 문자열> |
워크스테이션 ID로, 다양한 SQL Server 프로파일링 및 로깅 도구에서 특정 워크스테이션을 식별하는 데 사용됩니다. 지정되지 않은 경우 <빈 문자열>이 사용됩니다. |
xopenStates |
boolean ["true"|"false"] |
false |
"true"로 설정하면 드라이버에서 예외 발생 시 XOPEN 규격 상태 코드를 반환합니다. 기본값은 SQL 99 상태 코드를 반환하는 것입니다. |