다음을 통해 공유


SQL Server Native Client의 OLE DB(클라이언트 연결)의 SPN(서비스 사용자 이름)

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

OLE DB 드라이버 다운로드

이 문서에서는 클라이언트 애플리케이션의 SPN(서비스 사용자 이름)을 지원하는 OLE DB 속성과 멤버 함수에 대해 설명합니다. 클라이언트 애플리케이션에서 SPN에 대한 자세한 내용은 클라이언트 연결에서 SPN(서비스 사용자 이름) 지원을 참조하세요. 샘플은 통합 Kerberos 인증(OLE DB)을 참조하세요.

공급자 초기화 문자열 키워드

다음 공급자 초기화 문자열 키워드는 OLE DB 애플리케이션에서 SPN을 지원합니다. 다음 표에서 키워드 열의 값은 IDBInitialize::Initialize의 공급자 문자열에 사용됩니다. 설명 열의 값은 ADO 또는 IDataInitialize::GetDataSource를 사용하여 연결할 때 초기화 문자열에 사용됩니다.

키워드 설명
ServerSPN 서버 SPN 서버의 SPN입니다. 기본값인 빈 문자열을 지정하면 OLE DB Driver for SQL Server는 공급자가 생성한 기본 SPN을 사용합니다.
FailoverPartnerSPN Failover Partner SPN 장애 조치(failover) 파트너의 SPN입니다. 기본값인 빈 문자열을 지정하면 OLE DB Driver for SQL Server는 공급자가 생성한 기본 SPN을 사용합니다.

데이터 원본 초기화 속성

DBPROPSET_SQLSERVERDBINIT 속성 집합의 다음 속성을 사용하면 애플리케이션에서 SPN을 지정하거나 읽을 수 있습니다.

속성 Type 사용
SSPROP_INIT_SERVERSPN VT_BSTR, 읽기/쓰기 서버의 SPN을 지정합니다. 기본값인 빈 문자열을 지정하면 OLE DB Driver for SQL Server는 공급자가 생성한 기본 SPN을 사용합니다.
SSPROP_INIT_FAILOVERPARTNERSPN VT_BSTR, 읽기/쓰기 장애 조치(Failover) 파트너의 SPN을 지정합니다. 기본값인 빈 문자열을 지정하면 OLE DB Driver for SQL Server는 공급자가 생성한 기본 SPN을 사용합니다.
SSPROP_INIT_DISCOVEREDSERVERSPN VT_BSTR, 읽기 전용 연결에 대해 서버 SPN을 쿼리하는 데 사용됩니다. (버전 18.6.3 이상)

데이터 원본 속성

DBPROPSET_SQLSERVERDATASOURCEINFO 속성 집합의 다음 속성을 사용하면 애플리케이션에서 인증 방법을 검색할 수 있습니다.

속성 Type 사용
SSPROP_INTEGRATEDAUTHENTICATIONMETHOD VT_BSTR, 읽기 전용 연결에 사용되는 인증 방법을 반환합니다. 애플리케이션에 반환되는 값은 Windows가 SQL Server용 OLE DB 드라이버로 반환하는 값입니다. 가능한 값은 다음과 같습니다.
NTLM 인증을 사용하여 연결을 열 때 반환되는 "NTLM"
Kerberos 인증을 사용하여 연결을 열 때 반환되는 "Kerberos"입니다.

연결이 열려 있고 인증 방법을 확인할 수 없는 경우 VT_EMPTY 반환됩니다.

이 속성은 데이터 원본이 초기화된 경우에만 읽을 수 있습니다. 데이터 원본이 초기화되기 전에 속성을 읽으려고 하면 IDBProperties::GetProperies가 DB_S_ERRORSOCCURRED 또는 DB_E_ERRORSOCCURRED 적절하게 반환하고 이 속성에 대한 DBPROPSTATUS_NOTSUPPORTED DBPROPSET_PROPERTIESINERROR 설정됩니다. 이 동작은 OLE DB 코어 사양에 따라 다릅니다.
SSPROP_MUTUALLYAUTHENTICATED VT_BOOL, 읽기 전용 연결의 서버가 상호 인증된 경우 VARIANT_TRUE 반환합니다. 그렇지 않으면 VARIANT_FALSE 반환합니다.

이 속성은 데이터 원본이 초기화된 경우에만 읽을 수 있습니다. 데이터 원본이 초기화되기 전에 이 속성을 읽으려고 하면 IDBProperties::GetProperies에서 DB_S_ERRORSOCCURRED 또는 DB_E_ERRORSOCCURRED가 반환되고 이 속성의 DBPROPSET_PROPERTIESINERROR에 DBPROPSTATUS_NOTSUPPORTED가 설정됩니다. 이 동작은 OLE DB 코어 사양에 따라 수행됩니다.

Windows 인증을 사용하지 않은 연결에 대해 이 특성을 쿼리하면 VARIANT_FALSE 반환됩니다.

SPN에 대한 OLE DB API 지원

다음 표에서는 클라이언트 연결에서 SPN을 지원하는 OLE DB 멤버 함수에 대해 설명합니다.

멤버 함수 설명
IDataInitialize::GetDataSource pwszInitializationString 에는 새 키워드 ServerSPNFailoverPartnerSPN이 포함될 수 있습니다.
IDataInitialize::GetInitializationString SSPROP_INIT_SERVERSPN 및 SSPROP_INIT_FAILOVERPARTNERSPN 기본값이 아닌 값이 있는 경우 ppwszInitString을 통해 초기화 문자열에 ServerSPN 및 FailoverPartnerSPN에 대한 키워드 값으로 포함됩니다. 그렇지 않으면 이러한 키워드는 초기화 문자열에 포함되지 않습니다.
IDBInitialize::Initialize 데이터 원본 초기화 속성에서 DBPROP_INIT_PROMPT 설정하여 프롬프트를 사용하도록 설정하면 OLE DB 로그인 대화 상자가 표시됩니다. 이렇게 하면 주 서버와 해당 장애 조치(failover) 파트너 모두에 대해 SPN을 입력할 수 있습니다.

DPPROP_INIT_PROVIDERSTRING 공급자 문자열이 설정되면 새 키워드 ServerSPNFailoverPartnerSPN 을 인식하고 해당 값(있는 경우)을 사용하여 SSPROP_INIT_SERVER_SPN 초기화하고 SSPROP_INIT_FAILOVER_PARTNER_SPN.

IDBProperties::SetProperties를 호출하여 IDBInitialize::Initialize가 호출되기 전에 속성을 SSPROP_INIT_SERVER_SPN SSPROP_INIT_FAILOVER_PARTNER_SPN 설정할 수 있습니다. 공급자 문자열을 사용하는 대신 사용할 수 있습니다.

두 곳 이상에서 속성이 설정된 경우 프로그래밍 방식으로 설정된 값이 공급자 문자열에 설정된 값보다 우선적으로 적용됩니다. 초기화 문자열에 설정된 값이 로그인 대화 상자에서 설정된 값보다 우선합니다.

공급자 문자열에 동일한 키워드가 두 번 이상 나타나면 첫 번째 항목의 값이 우선적으로 적용됩니다.
IDBProperties::GetProperties IDBProperties::GetProperties를 호출하여 SSPROP_INIT_SERVERSPN 및 SSPROP_INIT_FAILOVERPARTNERSPN 새 데이터 원본 초기화 속성과 SSPROP_AUTHENTICATIONMETHOD 및 SSPROP_MUTUALLYAUTHENTICATED 새 데이터 원본 속성의 값을 가져올 수 있습니다.
IDBProperties::GetPropertyInfo IdbProperties::GetPropertyInfo에는 SSPROP_INIT_SERVERSPN 및 SSPROP_INIT_FAILOVERPARTNERSPN 새 데이터 원본 초기화 속성 또는 SSPROP_AUTHENTICATION_METHOD 및 SSPROP_MUTUALLYAUTHENTICATED 새 데이터 원본 속성이 포함됩니다.
IDBProperties::SetProperties IDBProperties::SetProperties를 호출하여 새 데이터 원본 초기화 속성의 값을 SSPROP_INITSERVERSPN SSPROP_INIT_FAILOVERPARTNERSPN 설정할 수 있습니다.

이러한 속성은 언제든지 설정할 수 있지만 데이터 원본이 이미 열려 있는 경우 다음 오류가 반환됩니다. DB_E_ERRORSOCCURRED "다단계 OLE DB 작업에서 오류가 발생했습니다. 사용 가능한 경우 각 OLE DB 상태 값을 확인합니다. 아무 작업도 수행되지 않았습니다."

참고 항목

SQL Server 프로그래밍용 OLE DB 드라이버