Udostępnij za pośrednictwem


Nazwy główne usługi (SPN) w połączeniach klienta (OLE DB)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Ważny

sql Server Native Client (często skrócony SNAC) został usunięty z programu SQL Server 2022 (16.x) i PROGRAMU SQL Server Management Studio 19 (SSMS). Zarówno dostawca OLE DB klienta natywnego programu SQL Server (SQLNCLI lub SQLNCLI11), jak i starszy dostawca MICROSOFT OLE DB dla programu SQL Server (SQLOLEDB) nie są zalecane w przypadku nowego programowania. Przejdź do nowego sterownika MICROSOFT OLE DB (MSOLEDBSQL) dla programu SQL Server w przyszłości.

W tym temacie opisano właściwości i funkcje składowe OLE DB, które obsługują główne nazwy usług (SPN) w aplikacjach klienckich. Aby uzyskać więcej informacji na temat nazw SPN w aplikacjach klienckich, zobacz obsługa głównej nazwy usługi (SPN) w temacie Połączenia klienckie. Aby zapoznać się z przykładem, zobacz Integrated Kerberos Authentication (OLE DB).

Słowa kluczowe ciągu inicjowania dostawcy

Następujące słowa kluczowe ciągu inicjowania dostawcy obsługują nazwy SPN w aplikacjach OLE DB. W poniższej tabeli wartości w kolumnie słowa kluczowego są używane dla ciągu dostawcy IDBInitialize::Initialize. Wartości w kolumnie opisu są używane w ciągach inicjowania podczas nawiązywania połączenia przy użyciu ADO lub IDataInitialize::GetDataSource.

Słowo kluczowe Opis Wartość
SerwerSPN Nazwa SPN serwera Nazwa SPN serwera. Wartość domyślna to pusty ciąg, co powoduje, że klient natywny programu SQL Server używa domyślnej, wygenerowanej przez dostawcę nazwy SPN.
Tryb failoverPartnerSPN Nazwa SPN partnera trybu failover Nazwa SPN partnera trybu failover. Wartość domyślna to pusty ciąg, co powoduje, że klient natywny programu SQL Server używa domyślnej, wygenerowanej przez dostawcę nazwy SPN.

Właściwości inicjowania źródła danych

Następujące właściwości w zestawie właściwości DBPROPSET_SQLSERVERDBINIT umożliwiają aplikacjom określanie nazw SPN.

Nazwa Typ Zwyczaj
SSPROP_INIT_SERVERSPN VT_BSTR, odczyt/zapis Określa nazwę SPN serwera. Wartość domyślna to pusty ciąg, co powoduje, że klient natywny programu SQL Server używa domyślnej, wygenerowanej przez dostawcę nazwy SPN.
SSPROP_INIT_FAILOVERPARTNERSPN VT_BSTR, odczyt/zapis Określa nazwę SPN partnera trybu failover. Wartość domyślna to pusty ciąg, co powoduje, że klient natywny programu SQL Server używa domyślnej, wygenerowanej przez dostawcę nazwy SPN.

Właściwości źródła danych

Następujące właściwości w zestawie właściwości DBPROPSET_SQLSERVERDATASOURCEINFO umożliwiają aplikacjom odnajdywanie metody uwierzytelniania.

Nazwa Typ Zwyczaj
SSPROP_INTEGRATEDAUTHENTICATIONMETHOD VT_BSTR, tylko do odczytu Zwraca metodę uwierzytelniania używaną dla połączenia. Wartość zwrócona do aplikacji to wartość zwracana przez system Windows do klienta natywnego programu SQL Server. Poniżej przedstawiono możliwe wartości:
"NTLM", który jest zwracany po otwarciu połączenia przy użyciu uwierzytelniania NTLM.
"Kerberos", który jest zwracany po otwarciu połączenia przy użyciu uwierzytelniania Kerberos.

Jeśli połączenie zostało otwarte i nie można określić metody uwierzytelniania, zostanie zwrócona VT_EMPTY.

Tę właściwość można odczytać tylko wtedy, gdy źródło danych zostało zainicjowane. Jeśli spróbujesz odczytać właściwość przed zainicjowaniem źródła danych, właściwość IDBProperties::GetProperties zwróci DB_S_ERRORSOCCURRED lub DB_E_ERRORSOCCURRED, zgodnie z potrzebami, a DBPROPSTATUS_NOTSUPPORTED zostanie ustawiona w DBPROPSET_PROPERTIESINERROR dla tej właściwości. To zachowanie jest zgodne ze specyfikacją rdzenia OLE DB.
SSPROP_MUTUALLYAUTHENTICATED VT_BOOL, tylko do odczytu Zwraca VARIANT_TRUE, jeśli serwery w połączeniu zostały wzajemnie uwierzytelnione; w przeciwnym razie zwraca VARIANT_FALSE.

Tę właściwość można odczytać tylko wtedy, gdy źródło danych zostało zainicjowane. Jeśli istnieje próba odczytania właściwości przed zainicjowaniem źródła danych, właściwość IDBProperties::GetProperties zwróci DB_S_ERRORSOCCURRED lub DB_E_ERRORSOCCURRED, zgodnie z potrzebami, a DBPROPSTATUS_NOTSUPPORTED zostanie ustawiona w DBPROPSET_PROPERTIESINERROR dla tej właściwości. To zachowanie jest zgodne ze specyfikacją rdzenia OLE DB

Jeśli ten atrybut zostanie zapytany o połączenie, które nie używało uwierzytelniania systemu Windows, zostanie zwrócony VARIANT_FALSE.

Obsługa interfejsu API OLE DB dla nazw SPN

W poniższej tabeli opisano funkcje składowe OLE DB, które obsługują nazwy SPN w połączeniach klientów:

Funkcja składowa Opis
IDataInitialize::GetDataSource pwszInitializationString może zawierać nowe słowa kluczowe ServerSPN i failoverPartnerSPN.
IDataInitialize::GetInitializationString Jeśli SSPROP_INIT_SERVERSPN i SSPROP_INIT_FAILOVERPARTNERSPN mają wartości inne niż domyślne, zostaną one uwzględnione w ciągu inicjowania za pośrednictwem ppwszInitString jako wartości słów kluczowych dla ServerSPN i FailoverPartnerSPN. W przeciwnym razie te słowa kluczowe nie zostaną uwzględnione w ciągu inicjowania.
IDBInitialize::Initialize Jeśli monit jest włączony przez ustawienie DBPROP_INIT_PROMPT we właściwościach inicjowania źródła danych, zostanie wyświetlone okno dialogowe Logowanie ole DB. Dzięki temu nazwy SPN mogą być wprowadzane zarówno dla serwera głównego, jak i jego partnera trybu failover.

Ciąg dostawcy w DBPROP_INIT_PROVIDERSTRING, jeśli ustawiono, rozpozna nowe słowa kluczowe ServerSPN i FailoverPartnerSPN i użyje ich wartości, jeśli istnieją, do zainicjowania SSPROP_INIT_SERVER_SPN i SSPROP_INIT_FAILOVER_PARTNER_SPN.

Właściwości IDBProperties::SetProperties można wywołać, aby ustawić właściwości SSPROP_INIT_SERVER_SPN i SSPROP_INIT_FAILOVER_PARTNER_SPN przed wywołaniem funkcji IDBInitialize::Initialize. Jest to alternatywa dla używania ciągu dostawcy.

Jeśli właściwość jest ustawiona w więcej niż jednym miejscu, zestaw wartości programowo ma pierwszeństwo przed wartością ustawioną w ciągu dostawcy. Wartość ustawiona w ciągu inicjowania ma pierwszeństwo przed wartością ustawioną w oknie dialogowym logowania.

Jeśli to samo słowo kluczowe pojawia się więcej niż raz w ciągu dostawcy, wartość z pierwszego wystąpienia ma pierwszeństwo.
IDBProperties::GetProperties Właściwości IDBProperties::GetProperties można wywołać, aby uzyskać wartości nowych właściwości inicjowania źródła danych SSPROP_INIT_SERVERSPN i SSPROP_INIT_FAILOVERPARTNERSPN oraz nowych właściwości źródła danych SSPROP_AUTHENTICATIONMETHOD i SSPROP_MUTUALLYAUTHENTICATED.
IDBProperties::GetPropertyInfo IdbProperties::GetPropertyInfo będzie zawierać nowe właściwości inicjowania źródła danych SSPROP_INIT_SERVERSPN i SSPROP_INIT_FAILOVERPARTNERSPN lub nowe właściwości źródła danych SSPROP_AUTHENTICATION_METHOD i SSPROP_MUTUALLYAUTHENTICATED.
IDBProperties::SetProperties Właściwości IDBProperties::SetProperties można wywołać, aby ustawić wartości właściwości inicjowania nowego źródła danych SSPROP_INITSERVERSPN i SSPROP_INIT_FAILOVERPARTNERSPN.

Te właściwości można ustawić w dowolnym momencie, ale jeśli źródło danych jest już otwarte, zostanie zwrócony następujący błąd: DB_E_ERRORSOCCURRED "Wiele kroków operacja OLE DB wygenerowała błędy. Sprawdź każdą wartość stanu OLE DB, jeśli jest dostępna. Nie wykonano żadnej pracy".

Zobacz też

SQL Server Native Client (OLE DB)