Оновлення програми з переходом від компонентів mdac до власного клієнта sql server

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

Власний клієнт SQL Server і компоненти MDAC розрізняються також в наступних областях.

Користувачі, які використовують об'єкти ADO для доступу до постачальника свого клієнта SQL Server, можуть мати в своєму розпорядженні менше функцій фільтрації, ніж при доступі до постачальника SQL OLE DB.

Якщо в додатку ADO використовується власний клієнт SQL Server і робиться спроба оновити обчислюваний стовпець, то з'являється повідомлення про помилку. При використанні компонентів MDAC оновлення було б прийнято, але пропущено.

Власний клієнт SQL Server є одним автономним файлом DLL. Кількість інтерфейсів з відкритим доступом зведено до мінімуму, щоб спростити поширення, а також підвищити рівень безпеки.

Підтримуються тільки інтерфейси OLE DB і ODBC.

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

Доступні для користувача функції, що надаються компонентами MDAC, можна використовувати при роботі з власним клієнтом SQL Server. Ці функції включають, але не обмежуються наступними: створення пулів з'єднань, підтримка об'єктів ADO і підтримка клієнтських курсорів. При використанні будь-якої з цих функцій власний клієнт SQL Server забезпечує тільки зв'язок з базою даних. Компоненти MDAC надають такі функції, як трасування, елементи управління в інтерфейсі управління і лічильники продуктивності.

Власний клієнт SQL Server підтримує доступ до баз даних SQL Server попередніх версій.

Власний клієнт SQL Server підтримує настройку мережевих бібліотек на стороні клієнта з використанням тільки атрибутів рядка з'єднання. Якщо потрібно провести більш складну настройку мережевих бібліотек, необхідно використовувати диспетчер конфігурації SQL Server.

Власний клієнт SQL Server несумісний з odbcbcp.dll. Додатки, які використовують і 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 або no.

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

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

Власний клієнт SQL Server і компоненти MDAC по-різному реагують на розрив з'єднання. Наприклад, компоненти MDAC повертають кешовані значення властивостей розірваного з'єднання, тоді як власний клієнт SQL Server повідомляє зухвалому додатком про помилку.

Власний клієнт SQL Server не формує події Visual Studio Analyzer, замість них він формує події трасування Windows.

Власний клієнт SQL Server неможливо використовувати з системним монітором. Системний монітор - це засіб Windows, яке можна використовувати тільки для файлів DSN, які використовують драйвер MDAC SQLODBC, що входить в Windows.

Власний клієнт SQL Server реалізує інтерфейс IDBDataSourceAdmin. є додатковим інтерфейсом OLE DB, який які раніше не реалізовувався, але при цьому реалізується тільки метод CreateDataSource цього інтерфейсу. У майбутньої версії Microsoft SQL Server цей компонент буде видалений. Уникайте використання цього компонента в нових розробках і заплануйте зміна існуючих додатків, в яких він застосовується.

Постачальник OLE DB свого клієнта SQL Server повертає синоніми в наборах рядків схеми TABLES і TABLE_INFO, при цьому параметру TABLE_TYPE присвоюється значення SYNONYM.

Компоненти MDAC дозволяють виконувати наступні інструкції при запуску ручних або неявних транзакцій, а власний клієнт SQL Server - немає. Вони повинні виконуватися в режимі автоматичної фіксації.

Все повнотекстові операції (операції DDL з індексом і каталогом)

Всі операції з базою даних (створення бази даних, зміна бази даних, видалення бази даних)

Це зіставлення типів зачіпає значення, які повертаються для метаданих стовпців. Наприклад, максимальний розмір стовпчика text становить 2 147 483 647, але власний клієнт SQL Server повідомляє, що максимальний розмір стовпців varchar (max) дорівнює SQL_SS_LENGTH_UNLIMITED, а OLE DB свого клієнта SQL Server повідомляє, що максимальний розмір стовпців 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 після завершення виконання процедури або пакета було таким же, як при запуску пакета або збереженої процедури.

При використанні Native Client SQL Server метод ITransactionLocal :: BeginTransaction викликає негайний запуск транзакції. При використанні компонентів MDAC запуск транзакції затримується до виконання додатком інструкції, якою потрібно транзакція в неявному режимі. Додаткові відомості див. У розділі SET IMPLICIT_TRANSACTIONS (Transact-SQL).

При використанні драйвера свого клієнта SQL Server з сутністю System.Data.Odbc для доступу до сервера SQL Server, на якому використовуються нові, характерні для SQL Server типи даних і функції, можуть виникати помилки. Сутність System.Data.Odbc надає універсальну реалізацію ODBC і, відповідно, не надає функції і розширення, характерні для постачальника. (Драйвер свого клієнта SQL Server оновлений для забезпечення підтримки нових функцій SQL Server.) Щоб вирішити цю проблему, можна або повернутися до використання компонентів MDAC, або провести міграцію до System.Data.SqlClient.

Власний клієнт SQL Server і MDAC підтримують рівень ізоляції транзакцій read committed при використанні управління версіями рядків, проте ізоляцію транзакцій моментальних знімків підтримує тільки власний клієнт SQL Server. (З точки зору програмування рівень ізоляції транзакцій READ COMMITTED з керуванням версіями рядків являє собою той же, що і транзакція READ COMMITTED.)

Схожі статті