Nazwy główne usługi (SPN) w połączeniach klienta (OLE DB)
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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ż