연결 URL 작성

JDBC 드라이버 다운로드

연결 URL의 일반적인 형식은 다음과 같습니다.

jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]

각 항목이 나타내는 의미는 다음과 같습니다.

  • jdbc:sqlserver:// (필수)는 하위 프로토콜이라고 하며 일정한 형태를 나타냅니다.

  • serverName(옵션)은 연결할 서버의 주소입니다. 이 주소는 DNS나 IP 주소일 수도 있고 로컬 컴퓨터인 경우 localhost나 127.0.0.1일 수도 있습니다. 연결 URL에 지정하지 않은 경우 속성 컬렉션에 서버 이름을 지정해야 합니다.

  • instanceName(옵션)은 serverName에서 연결할 인스턴스입니다. instanceName을 지정하지 않으면 기본 인스턴스에 연결됩니다.

  • portNumber(옵션)는 serverName에서 연결할 포트이며 기본값은 1433입니다. 기본값을 사용하는 경우 URL에 포트나 앞에 붙는 ':'을 지정할 필요가 없습니다.

    참고

    연결 성능을 최적화하려면 명명된 인스턴스에 연결할 때 portNumber를 설정해야 합니다. 그러면 포트 번호를 확인하기 위해 서버까지 왕복 이동할 필요가 없습니다. portNumber 및 instanceName을 모두 사용하는 경우 portNumber가 우선 순위를 갖고 instanceName은 무시됩니다.

  • property(옵션)는 하나 이상의 옵션 연결 속성입니다. 자세한 내용은 연결 속성 설정을 참조하세요. 목록에 있는 속성은 모두 지정할 수 있습니다. 속성은 세미콜론(';')으로만 구분할 수 있고 중복될 수 없습니다.

주의

보안을 위해 사용자 입력을 토대로 연결 URL을 작성하지 않는 것이 좋습니다. URL에는 서버 이름과 드라이버만 지정해야 합니다. 사용자 이름 및 암호 값에는 연결 속성 컬렉션을 사용합니다. JDBC 애플리케이션의 보안에 대한 자세한 정보는 JDBC 드라이버 애플리케이션 보안을 참조하세요.

연결 속성

연결 문자열에서 설정할 수 있는 자세한 속성 목록은 연결 속성 설정을 참조하세요.

연결 예

사용자 이름 및 암호를 사용하여 로컬 컴퓨터에서 기본 데이터베이스에 연결합니다.

jdbc:sqlserver://localhost;encrypt=true;user=MyUserName;password=*****;

참고

이전 예제에서는 연결 문자열에 사용자 이름과 암호를 사용했지만 보다 안전한 통합 보안을 사용해야 합니다. 자세한 내용은 이 항목 후반에 있는 통합 인증으로 연결 섹션을 참조하십시오.

다음 연결 문자열에서는 SQL Server용 Microsoft JDBC Driver에서 지원되는 운영 체제에서 실행 중인 애플리케이션에서 통합 인증 및 Kerberos를 사용하는 SQL Server 데이터베이스에 연결하는 방법의 예를 보여 줍니다.

jdbc:sqlserver://;servername=server_name;encrypt=true;integratedSecurity=true;authenticationScheme=JavaKerberos

통합 인증을 사용하여 로컬 컴퓨터의 기본 데이터베이스에 연결하는 경우:

jdbc:sqlserver://localhost;encrypt=true;integratedSecurity=true;

원격 서버의 명명된 데이터베이스에 연결하는 경우:

jdbc:sqlserver://localhost;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;

기본 포트에서 원격 서버에 연결하는 경우:

jdbc:sqlserver://localhost:1433;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;

사용자 지정 애플리케이션 이름을 지정하여 연결하는 경우:

jdbc:sqlserver://localhost;encrypt=true;databaseName=AdventureWorks;integratedSecurity=true;applicationName=MyApp;

명명된 다중 SQL Server 인스턴스

SQL Server에서는 서버당 여러 개의 데이터베이스 인스턴스를 설치할 수 있습니다. 각 인스턴스는 특정 이름으로 식별합니다. SQL Server의 명명된 인스턴스에 연결하려면 명명된 인스턴스의 포트 번호를 지정하거나(기본 설정) 인스턴스 이름을 JDBC URL 속성 또는 datasource 속성으로 지정합니다. 인스턴스 이름이나 포트 번호 속성을 지정하지 않으면 기본 인스턴스에 대한 연결이 설정됩니다. 다음 예제를 참조하세요.

포트 번호를 지정하려면 다음 형식을 사용합니다.

jdbc:sqlserver://localhost:1433;encrypt=true;integratedSecurity=true;<more properties as required>;

JDBC URL 속성을 사용하려면 다음 형식을 사용합니다.

jdbc:sqlserver://localhost;encrypt=true;instanceName=instance1;integratedSecurity=true;<more properties as required>;

연결 URL에서 값 이스케이프 처리

공백, 세미콜론, 인용 부호와 같은 특수 문자가 값에 포함된 경우 연결 URL 값의 일부를 이스케이프 처리해야 하는 경우가 있을 수 있습니다. JDBC 드라이버는 이런 문자를 중괄호로 묶어 이스케이프 처리를 지원합니다. 예를 들어 {;}는 세미콜론을 이스케이프 처리합니다.

버전 8.4 이전에는 이스케이프 처리되는 값에 특수 문자(특히 ‘=’, ‘;’, ‘[]’ 및 공백)는 포함될 수 있지만 중괄호는 포함될 수 없습니다. 이스케이프 처리해야 하는 값에 중괄호가 포함된 경우 해당 값을 속성 컬렉션에 추가해야 합니다.

버전 8.4 이상에서 이스케이프된 값은 중괄호를 비롯한 특수 문자를 포함할 수 있습니다. 그러나 닫는 중괄호는 이스케이프해야 합니다. 예를 들어 pass";{}word의 암호를 사용할 경우 연결 문자열은 다음과 같이 암호를 이스케이프해야 합니다.

jdbc:sqlserver://localhost;encrypt=true;username=MyUsername;password={pass";{}}word};

참고

중괄호 안의 공백은 리터럴이며 잘리지 않습니다.

Windows에서 통합 인증으로 연결

JDBC 드라이버는 integratedSecurity 연결 문자열 속성을 사용하여 Windows 운영 체제에서 형식 2 통합 인증을 지원합니다. 통합 인증을 사용하려면 mssql-jdbc_auth-<version>-<arch>.dll 파일을 JDBC 드라이버가 설치된 컴퓨터의 Windows 시스템 경로에 있는 디렉터리에 복사합니다.

mssql-jdbc_auth-<version>-<arch>.dll 파일은 다음 위치에 설치됩니다.

<설치 디렉터리>\sqljdbc_<version>\<language>\auth\

SQL Server용 Microsoft JDBC Driver에서 지원되는 운영 체제의 경우 Kerberos 통합 인증을 사용하여 SQL Server에 연결에서 애플리케이션이 유형 4 Kerberos 통합 인증을 사용하는 데이터베이스에 연결할 수 있도록 SQL Server용 Microsoft JDBC Driver 4.0에 추가된 기능에 대한 설명을 참조하세요.

참고

32비트 JVM(Java Virtual Machine)을 실행할 경우 운영 체제가 x64 버전이라도 x86 폴더에 있는 mssql-jdbc_auth-<version>-<arch>.dll 파일을 사용하세요. x64 프로세서에서 64비트 JVM을 실행할 경우 x64 폴더의 mssql-jdbc_auth-<vesrion>-<arch>.dll 파일을 사용하세요.

또는 java.library.path 시스템 속성을 설정하여 mssql-jdbc_auth-<version>-<arch>.dll의 디렉터리를 지정할 수도 있습니다. 예를 들어 JDBC 드라이버가 기본 디렉터리에 설치된 경우 Java 애플리케이션이 시작될 때 다음과 같은 가상 컴퓨터(VM) 인수를 사용하여 DLL의 위치를 지정할 수 있습니다.

-Djava.library.path=C:\Microsoft JDBC Driver 6.4 for SQL Server\sqljdbc_<version>\enu\auth\x86

IPv6 주소로 연결

JDBC 드라이버는 연결 속성 컬렉션 및 serverName 연결 문자열 속성에 IPv6 주소를 사용하도록 지원합니다. jdbc:sqlserver://serverName과 같은 serverName 초기값은 연결 문자열의 IPv6 주소에는 지원되지 않습니다. 원시 IPv6 주소 대신 serverName의 이름을 사용하면 모든 경우의 연결에 원활하게 작동합니다. 자세한 내용은 다음 예를 참조하십시오.

serverName 속성을 사용하려면

jdbc:sqlserver://;serverName=3ffe:8311:eeee:f70f:0:5eae:10.203.31.9\\instance1;encrypt=true;integratedSecurity=true;

속성 컬렉션을 사용하려면

Properties pro = new Properties();

pro.setProperty("serverName", "serverName=3ffe:8311:eeee:f70f:0:5eae:10.203.31.9\\instance1");

Connection con = DriverManager.getConnection("jdbc:sqlserver://;encrypt=true;integratedSecurity=true;", pro);

참고 항목

JDBC 드라이버로 SQL Server에 연결