Обновление приложения с переходом от компонентов MDAC к SQL Server Native Client

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

Внимание

Собственный клиент SQL Server (часто сокращенный SNAC) был удален из SQL Server 2022 (16.x) и SQL Server Management Studio 19 (SSMS). Собственный клиент SQL Server (SQLNCLI или SQLNCLI11) и устаревший поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) не рекомендуется для разработки новых приложений. Перейдите на новый драйвер Microsoft OLE DB (MSOLEDBSQL) для SQL Server или последний драйвер Microsoft ODBC для SQL Server . Сведения о SQLNCLI, которые поставляется в качестве компонента SQL Server ядро СУБД (версии 2012–2019), см. в этом исключении жизненного цикла поддержки.

Существует ряд различий между собственным клиентом SQL Server и компонентами microsoft Data Access (MDAC; начиная с Windows Vista компоненты доступа к данным теперь называются компонентами доступа к данным Windows или Windows DAC). Хотя оба предоставляют собственный доступ к базам данных SQL Server, собственный клиент SQL Server специально разработан для предоставления новых функций SQL Server 2005 (9.x), одновременно поддерживая обратную совместимость с более ранними версиями.

Сведения в этом разделе помогают обновить приложение MDAC (или Windows DAC), чтобы оно было текущим с версией собственного клиента SQL Server, включенного в SQL Server 2005 (9.x). Сведения о том, как сделать это приложение текущим с версией собственного клиента SQL Server, отправленного в SQL Server, см. в разделе "Обновление приложения из собственного клиента SQL Server 2005".

Примечание.

Sql Server Native Client удален из SQL Server 2022 (16.x).

Кроме того, хотя MDAC содержит компоненты для использования OLE DB, ODBC и объектов данных ActiveX (ADO), собственный клиент SQL Server реализует только OLE DB и ODBC (хотя ADO может получить доступ к функциям собственного клиента SQL Server).

Собственный клиент SQL Server и MDAC отличаются в других следующих областях:

  • Пользователи, использующие ADO для доступа к поставщику собственного клиента SQL Server, могут найти меньше функций фильтрации, чем при доступе к поставщику OLE DB SQL.

  • Если приложение ADO использует собственный клиент SQL Server и пытается обновить вычисляемый столбец, появится сообщение об ошибке. При использовании компонентов MDAC обновление было бы принято, но пропущено.

  • SQL Server Native Client — это отдельный автономный файл библиотеки динамических ссылок (DLL). Количество интерфейсов с открытым доступом сведено к минимуму, чтобы упростить распространение, а также повысить уровень безопасности.

  • Поддерживаются только интерфейсы OLE DB и ODBC.

  • Поставщик OLE DB собственного клиента SQL Server и имена драйверов ODBC отличаются от имен драйверов, используемых с MDAC.

  • Функциональные возможности, предоставляемые компонентами MDAC, доступны при использовании собственного клиента SQL Server. К ним помимо прочего относится создание пулов соединений, поддержка ADO и поддержка клиентских курсоров. При использовании любого из этих функций собственный клиент SQL Server предоставляет только подключение к базе данных. Компоненты MDAC предоставляют такие функции, как трассировка, элементы управления в интерфейсе управления и счетчики производительности.

  • Приложения могут использовать основные службы OLE DB с собственным клиентом SQL Server, но при использовании обработчика курсоров OLE DB они должны использовать параметр совместимости типов данных, чтобы избежать возможных проблем, которые могут возникнуть, так как обработчик курсоров не знает о новых типах данных SQL Server 2005 (9.x).

  • SQL Server Native Client поддерживает доступ к предыдущим базам данных SQL Server.

  • Sql Server Native Client не содержит интеграцию XML. SQL Server Native Client поддерживает SELECT ... ЗАПРОСы FOR XML, но не поддерживают другие функции XML. Однако собственный клиент SQL Server поддерживает тип данных XML, представленный в SQL Server 2005 (9.x).

  • SQL Server Native Client поддерживает настройку клиентских сетевых библиотек с использованием только строка подключения атрибутов. Если вам нужна более полная конфигурация сетевой библиотеки, необходимо использовать диспетчер конфигурации SQL Server.

  • Собственный клиент SQL Server несовместим с odbcbcp.dll. Приложения, использующие ИНТЕРФЕЙСы API ODBC и bcp , необходимо перестроить для связи с sqlncli11.lib, чтобы использовать собственный клиент SQL Server.

  • Собственный клиент SQL Server не поддерживается поставщиком MICROSOFT OLE DB для ODBC (MSDASQL). Если драйвер MDAC SQLODBC используется с драйвером MSDASQL или MDAC SQLODBC с ADO, используйте OLE DB в собственном клиенте SQL Server.

  • Строки подключения компонентов MDAC позволяют использовать логическое значение (true) для ключевого слова Trusted_Connection. Строка подключения собственного клиента SQL Server должен использовать да или нет.

  • Незначительные изменения внесены в предупреждения и ошибки. Предупреждения и ошибки, возвращаемые сервером, теперь сохраняют одинаковую серьезность при передаче в собственный клиент SQL Server. Следует тщательно протестировать приложение, если его работа зависит от перехвата определенных предупреждений и ошибок.

  • Собственный клиент SQL Server имеет более строгую ошибку проверка, чем MDAC, что означает, что некоторые приложения, которые не соответствуют спецификациям ODBC и OLE DB, могут вести себя по-разному. Например, поставщик SQLOLEDB не применял правило, которое имена параметров должны начинаться с "@" для параметров результата, но поставщик OLE DB собственного клиента SQL Server.

  • Собственный клиент SQL Server работает по-разному от MDAC в отношении неудачных подключений. Например, MDAC возвращает кэшированные значения свойств для соединения, которое завершилось сбоем, в то время как SQL Server Native Client сообщает об ошибке вызывающему приложению.

  • Sql Server Native Client не создает события анализатора Visual Studio, а создает события трассировки Windows.

  • Не удается использовать собственный клиент SQL Server с перфмоном. Системный монитор — это средство Windows, которое можно использовать только для файлов DSN, которые используют драйвер MDAC SQLODBC, входящий в Windows.

  • При подключении собственного клиента SQL Server к SQL Server 2005 (9.x) и более поздним версиям ошибка сервера 16947 возвращается в виде SQL_ERROR. Эта ошибка возникает, если при выполнении позиционированного обновления или удаления не удается обновить или удалить строку. При подключении к любой версии SQL Server ошибка сервера 16947 возвращается в виде предупреждения (SQL_SUCCESS_WITH_INFO).

  • Собственный клиент SQL Server реализует интерфейс IDBDataSource Администратор, который является необязательным интерфейсом OLE DB, который ранее не реализован, но реализуется только метод CreateDataSource этого необязательного интерфейса. Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.

  • Поставщик OLE DB собственного клиента SQL Server возвращает синонимы в наборах строк схемы ТАБЛИЦ и TABLE_INFO схемы с TABLE_TYPE значениеМ СИНОНИМ.

  • Возвращаемые значения типа данных varchar(max), nvarchar(max), varbinary(max), xml, udt или другие крупные типы объектов не могут быть возвращены в клиентские версии, предшествующие SQL Server 2005 (9.x). Если вы хотите использовать эти типы в качестве возвращаемых значений, необходимо использовать собственный клиент SQL Server.

  • MDAC позволяет выполнять следующие инструкции в начале ручных и неявных транзакций, но sql Server Native Client не выполняется. Они должны выполняться в режиме автоматической фиксации.

    • Все полнотекстовые операции (операции DDL с индексом и каталогом)

    • Все операции с базой данных (создание базы данных, изменение базы данных, удаление базы данных)

    • Перенастройка

    • Завершение работы

    • Завершить

    • Резервное копирование

  • При подключении приложений MDAC к SQL Server типы данных, представленные в SQL Server 2005 (9.x), будут отображаться как типы данных, совместимые с SQL Server 2000 (8.x),как показано в следующей таблице.

    Тип SQL Server 2005 Тип SQL Server 2000
    varchar(max) text
    nvarchar(max) ntext
    varbinary(max) Изображение
    udt varbinary
    xml ntext

    Это сопоставление типов затрагивает значения, возвращаемые для метаданных столбцов. Например, текстовый столбец имеет максимальный размер 2 147 483 647, но ODBC sql Server Native Client ODBC сообщает максимальный размер столбцов varchar(max) как SQL_SS_LENGTH_UNLIMITED, а OLE DB sql Server Native Client сообщает максимальный размер столбцов varchar(max) как 2 147 483 647 или -1 в зависимости от платформы.

  • Собственный клиент SQL Server разрешает неоднозначность в строка подключения (например, некоторые ключевое слово могут быть указаны более одного раза, и конфликтующие ключевое слово могут быть разрешены с разрешением на основе позиции или приоритета) по причинам обратной совместимости. Будущие выпуски собственного клиента SQL Server могут не разрешать неоднозначность в строка подключения. Рекомендуется изменять приложения для использования собственного клиента SQL Server для устранения любой зависимости от строка подключения неоднозначности.

  • При использовании вызова ODBC или OLE DB для запуска транзакций существует разница в поведении между собственным клиентом SQL Server и MDAC; транзакции начинаются сразу с собственного клиента SQL Server, но транзакции начинаются после первого доступа к базе данных с помощью MDAC. Это может повлиять на поведение хранимых процедур и пакетов, так как в SQL Server требуется, чтобы значение @@TRANCOUNT после выполнения хранимой процедуры или пакета было таким же, как на момент запуска пакета или хранимой процедуры.

  • При использовании собственного клиента SQL Server ITransactionLocal::BeginTransaction будет немедленно запущена транзакция. При использовании компонентов MDAC запуск транзакции задерживается до выполнения приложением инструкции, которой требуется транзакция в неявном режиме. Дополнительные сведения см. в статье SET IMPLICIT_TRANSACTIONS (Transact-SQL).

  • При использовании драйвера собственного клиента SQL Server с System.Data.Odbc могут возникнуть ошибки для доступа к компьютеру SQL Server Server, который предоставляет новые типы данных или функции SQL Server. System.Data.Odbc предоставляет универсальную реализацию ODBC и впоследствии не предоставляет определенные функциональные возможности или расширения поставщика. (Драйвер собственного клиента SQL Server обновляется для поддержки последних функций SQL Server.) Чтобы устранить эту проблему, можно либо отменить изменения в MDAC, либо перейти в System.Data.SqlClient.

Как sql Server Native Client, так и MDAC поддерживают изоляцию зафиксированных транзакций с помощью управления версиями строк, но только sql Server Native Client поддерживает изоляцию транзакций моментальных снимков. (С точки зрения программирования уровень изоляции транзакций READ COMMITTED с управлением версиями строк представляет собой то же, что и транзакция READ COMMITTED.)

См. также

Построение приложений с использованием SQL Server Native Client