Поделиться через


Имена субъекта-службы в клиентских соединениях (OLE DB)

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

Внимание

Собственный клиент SQL Server (часто сокращенный SNAC) был удален из SQL Server 2022 (16.x) и SQL Server Management Studio 19 (SSMS). Поставщик OLE DB собственного клиента SQL Server (SQLNCLI или SQLNCLI11) и устаревший поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) не рекомендуется для новой разработки. Перейдите на новый драйвер Microsoft OLE DB (MSOLEDBSQL) для SQL Server .

В этом разделе описываются свойства OLE DB и функции элементов, поддерживающие имена участника-службы (SPN) в клиентских приложениях. Дополнительные сведения об именах субъектов-служб в клиентских приложениях см. в статье Поддержка имени участника-службы в клиентских соединениях. Пример можно найти в статье Интеграция проверки подлинности Kerberos (OLE DB).

Ключевые слова строки инициализации поставщика

Следующие ключевые слова строки инициализации поставщика поддерживают имена участников-служб в приложениях OLE DB. В следующей таблице значения в столбце ключевых слов используются строкой поставщика в методе IDBInitialize::Initialize. Значения в столбце описания используются в строках инициализации при соединении с помощью объектов данных ActiveX или метода IDataInitialize::GetDataSource.

Ключевое слово Description Значение
ServerSPN Server SPN Имя участника-службы для сервера. Значение по умолчанию — пустая строка, которая приводит к использованию собственного клиента SQL Server по умолчанию, созданного поставщиком имени субъекта-службы.
FailoverPartnerSPN Failover Partner SPN Имя участника-службы для партнера по обеспечению отработки отказа. Значение по умолчанию — пустая строка, которая приводит к использованию собственного клиента SQL Server по умолчанию, созданного поставщиком имени субъекта-службы.

Свойства инициализации источника данных

Следующие свойства набора свойств DBPROPSET_SQLSERVERDBINIT позволяют приложениям указывать имена участников-служб.

Имя. Тип Использование
SSPROP_INIT_SERVERSPN VT_BSTR, чтение и запись Задает имя участника-службы для сервера. Значение по умолчанию — пустая строка, которая приводит к использованию собственного клиента SQL Server по умолчанию, созданного поставщиком имени субъекта-службы.
SSPROP_INIT_FAILOVERPARTNERSPN VT_BSTR, чтение и запись Указывает имя участника-службы для партнера по обеспечению отработки отказа. Значение по умолчанию — пустая строка, которая приводит к использованию собственного клиента SQL Server по умолчанию, созданного поставщиком имени субъекта-службы.

Свойства источника данных

Следующие свойства набора свойств DBPROPSET_SQLSERVERDATASOURCEINFO позволяют приложениям распознавать метод проверки подлинности.

Имя. Тип Использование
SSPROP_INTEGRATEDAUTHENTICATIONMETHOD VT_BSTR, только для чтения Возвращает метод проверки подлинности, используемый для соединения. Значение, возвращаемое приложению, — это значение, возвращаемое Windows в собственный клиент SQL Server. Ниже приведены возможные значения:
Значение «NTLM», которое возвращается в том случае, если соединение установлено с использованием проверки подлинности NTLM.
Значение «Kerberos», которое возвращается в том случае, если соединение установлено с использованием проверки подлинности Kerberos.

Если при открытом соединении нельзя определить метод проверки подлинности, то возвращается значение VT_EMPTY.

Это свойство доступно для чтения только в том случае, если инициализирован источник данных. При попытке считывания свойства до инициализации источника данных, IDBProperties::GetProperies соответственно вернет ошибку DB_S_ERRORSOCCURRED или DB_E_ERRORSOCCURRED и для атрибута DBPROPSET_PROPERTIESINERROR данного свойства будет установлено значение DBPROPSTATUS_NOTSUPPORTED. Это поведение соответствует основной спецификации OLE DB.
SSPROP_MUTUALLYAUTHENICATED VT_BOOL, только для чтения Если при соединении серверов была выполнена взаимная проверка подлинности, возвращает значение VARIANT_TRUE. В противном случае возвращает VARIANT_FALSE.

Это свойство доступно для чтения только в том случае, если инициализирован источник данных. При попытке считывания свойства до инициализации источника данных, IDBProperties::GetProperies соответственно вернет ошибку DB_S_ERRORSOCCURRED или DB_E_ERRORSOCCURRED и для атрибута DBPROPSET_PROPERTIESINERROR данного свойства будет установлено значение DBPROPSTATUS_NOTSUPPORTED. Это поведение соответствует основной спецификации OLE DB.

Если этот атрибут запрашивается соединением, не использующим проверку подлинности Windows, возвращается значение VARIANT_FALSE.

Поддержка OLE DB API для имен участников-служб

В следующей таблице описываются функции-члены OLE DB, поддерживающие имена участников-служб в клиентских соединениях.

Функция-член Description
IDataInitialize::GetDataSource ПараметрpwszInitializationString может содержать новые ключевые слова ServerSPN и FailoverPartnerSPN.
IDataInitialize::GetInitializationString Если свойства SSPROP_INIT_SERVERSPN и SSPROP_INIT_FAILOVERPARTNERSPN не имеют значений по умолчанию, они будут включены в строку инициализации с помощью параметра ppwszInitString в виде ключевых слов для ServerSPN и FailoverPartnerSPN. В противном случае эти ключевые слова не будут включены в строку инициализации.
IDBInitialize::Initialize Если запрос включается путем установки свойства DBPROP_INIT_PROMPT в свойствах инициализации источника данных, будет отображаться диалоговое окно входа OLE DB. Это позволяет ввести имена участников-служб как для основного сервера, так и для его партнера по обеспечению отработки отказа.

Строка поставщика в свойстве DPPROP_INIT_PROVIDERSTRING, если установлена, будет распознавать новые ключевые слова ServerSPN и FailoverPartnerSPN , и использовать их значения (при их наличии) для инициализации свойств SSPROP_INIT_SERVER_SPN и SSPROP_INIT_FAILOVER_PARTNER_SPN.

Можно вызвать метод IDBProperties::SetProperties, чтобы установить свойства SSPROP_INIT_SERVER_SPN и SSPROP_INIT_FAILOVER_PARTNER_SPN перед вызовом IDBInitialize::Initialize. Это является альтернативой использованию строки поставщика.

Если свойство устанавливается в нескольких местах, заданное программно значение имеет приоритет над значением, указанным в строке поставщика. Значение, заданное в строке инициализации, имеет приоритет над значением, заданным в диалоговом окне входа.

Если одно ключевое слово появляется в строке поставщика несколько раз, приоритет имеет первое значение.
IDBProperties::GetProperties Чтобы получить значения новых свойств инициализации источника данных SSPROP_INIT_SERVERSPN и SSPROP_INIT_FAILOVERPARTNERSPN, а также новых свойств источника данных SSPROP_AUTHENTICATIONMETHOD и SSPROP_MUTUALLYAUTHENTICATED, можно вызвать IDBProperties::GetProperties.
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 Native Client (OLE DB)