Обновление приложения до собственного клиента SQL Server из MDAC

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

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

Кроме того, хотя 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.

  • 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.

  • 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 должна использоваться yes или нет.

  • Незначительные изменения произошли с предупреждениями и ошибками. Предупреждения и ошибки, возвращаемые сервером, теперь сохраняют одинаковую серьезность при передаче в собственный клиент 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 с перфмоном. Perfmon — это средство Windows, которое можно использовать только с DSN, использующий драйвер MDAC SQLODBC, включенный в Windows.

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

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

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

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

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

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

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

    • Перенастроить

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

    • Убивать

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

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

    Тип SQL Server 2005 Тип SQL Server 2000
    varchar(max) text
    nvarchar(max) ntext
    varbinary(max) image
    udt varbinary
    xml ntext

    Это сопоставление типов влияет на значения, возвращаемые для метаданных столбца. Например, text столбец имеет максимальный размер 2 147 483 647, но ODBC собственного клиента SQL Server сообщает максимальный размер 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 поддерживает изоляцию транзакций моментальных снимков. (В терминах программирования изоляция зафиксированных транзакций с помощью управления версиями строк совпадает с транзакцией, зафиксированной для чтения.).

См. также

Создание приложений с помощью собственного клиента SQL Server