Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе рассматриваются критические изменения в SQL Server Native Client с момента SQL Server Native Client в SQL Server 2005 г.
При обновлении компонентов доступа к данным Майкрософт (MDAC) до SQL Server Native Client также могут наблюдаться некоторые различия в поведении. Дополнительные сведения см. в статье Обновление приложения для SQL Server Native Client из MDAC.
SQL Server Native Client 9.0 поставляется с SQL Server 2005. SQL Server Native Client 10.0 поставляется в составе SQL Server 2008. Собственный клиент SQL Server 10.5 поставляется в составе SQL Server 2008 R2. SQL Server Native Client 11.0 поставляется с SQL Server 2012 и SQL Server 2014 годах.
Изменено поведение в SQL Server Native Client с SQL Server 2005 г. | Description |
---|---|
OLE DB дополняет данные только до заданного масштаба. | Для преобразований, в которых преобразованные данные отправляются на сервер, SQL Server Native Client (начиная с SQL Server 2008 г.) заполняет конечные нули данных только до максимальной длины значенийdatetime . Собственный клиент SQL Server версии 9.0 дополнял данные до 9 разрядов. |
Проверьте DBTYPE_DBTIMESTAMP для ICommandWithParameter::SetParameterInfo. | SQL Server Native Client (начиная с SQL Server 2008 г.) реализует требование OLE DB для bScale в ICommandWithParameter::SetParameterInfo, чтобы задать точность доли секунды для DBTYPE_DBTIMESTAMP. |
Теперь хранимая sp_columns процедура возвращает значение "NO" вместо "NO" для столбца IS_NULLABLE. |
Начиная с SQL Server Native Client 10.0 (SQL Server 2008) sp_columns хранимая процедура теперь возвращает значение "NO" вместо "NO" для столбца IS_NULLABLE. |
SQLSetDescRec, SQLBindParameter и SQLBindCol теперь выполняют проверку согласованности. | До SQL Server Native Client 10.0 установка SQL_DESC_DATA_PTR не вызывала проверка согласованности для любого типа дескриптора в SQLSetDescRec, SQLBindParameter или SQLBindCol. |
SQLCopyDesc теперь выполняет проверку согласованности дескриптора. | До SQL Server Native Client 10.0 SQLCopyDesc не выполнял согласованность проверка, когда поле SQL_DESC_DATA_PTR было задано для определенной записи. |
SQLGetDescRec больше не выполняет проверка согласованности дескриптора. | До SQL Server Native Client 10.0 SQLGetDescRec выполнял согласованность дескриптора проверка при установке поля SQL_DESC_DATA_PTR. Это не требовалось для спецификации ODBC, и в SQL Server Native Client 10.0 (SQL Server 2008) и более поздних версиях эта согласованность проверка больше не выполняется. |
При выходе значения даты за пределы диапазона теперь происходит возврат другого значения ошибки. | datetime Для типа SQL Server Native Client (начиная с SQL Server 2008 г.) возвращает другой номер ошибки, чем в более ранних версиях.В частности, SQL Server Native Client 9.0 вернул 22007 для всех значений года вне диапазона при преобразовании datetime строк в , а SQL Server Native Client начиная с версии 10.0 (SQL Server 2008) возвращает 22008, если дата находится в пределах диапазона, поддерживаемого datetime2 , но за пределами диапазона, поддерживаемого datetime или smalldatetime . |
В значении datetime усекаются доли секунды, а округление не происходит, если при округлении изменится значение дня. |
До SQL Server Native Client 10.0 поведение клиента для datetime значений, отправленных на сервер, было округление их до ближайшей 1/300 секунды. Начиная с SQL Server Native Client 10.0, этот сценарий приводит к усечению доли секунды, если округление изменяет день. |
Возможно усечение секунд в значениях типа datetime . |
Приложение, созданное с помощью SQL Server 2008 Native Client (или более поздней версии), которое подключается к серверу SQL Server 2005, усекает секунды и доли секунды для временной части данных, отправляемых на сервер, при привязке к столбцу datetime с идентификатором типа DBTYPE_DBTIMESTAMP (OLE DB) или SQL_TIMESTAMP (ODBC) и масштабом 0. Пример: Входные данные: 1994-08-21 21:21:36.000 Вставляемые данные: 1994-08-21 21:21:00.000 |
Преобразование данных OLE DB из типа DBTYPE_DBTIME в DBTYPE_DATE больше не вызывает изменения значения дня. | До появления собственного клиента версии 10.0 для SQL Server, если часть времени для значения DBTYPE_DATE отстояла от полуночи не более чем на полсекунды, то применение кода преобразования OLE DB приводило к изменению дня. Начиная с SQL Server Native Client 10,0 день не изменяется (доли секунд усекаются и не округляются). |
Изменения преобразования IBCPSession::BCColFmt. | Начиная с SQL Server Native Client 10.0 при использовании IBCPSession::BCOColFmt для преобразования SQLDATETIME или SQLDATETIME в строковый тип экспортируется дробное значение. Например, при преобразовании типа SQLDATETIME в тип SQLNVARCHARMAX возвращаются более ранние версии SQL Server Native Client 1989-02-01 00:00:00. SQL Server Native Client 10.0 и более поздних версий возвращается 1989-02-01 00:00:00.0000000. |
Размер пересылаемых данных должен соответствовать длине, заданной параметром SQL_LEN_DATA_AT_EXEC. | При использовании параметра SQL_LEN_DATA_AT_EXEC размер данных должен соответствовать длине, заданной параметром SQL_LEN_DATA_AT_EXEC. Можно использовать параметр SQL_DATA_AT_EXEC, но SQL_LEN_DATA_AT_EXEC дает некоторый выигрыш в производительности. |
В пользовательских приложениях, в которых используется API BCP, теперь могут обнаруживаться предупреждающие сообщения. | API BCP выдает предупреждающее сообщение, если длина данных превышает заданную длину для полей всех типов. Раньше это предупреждение выдавалось только для символьных типов, но не для всех типов. |
Вставка пустой строки в объект типа sql_variant , привязанный как тип даты и времени, вызывает ошибку. |
В SQL Server Native Client 9.0 при вставке пустой строки в привязанный sql_variant тип даты и времени ошибка не возникает. SQL Server Native Client 10.0 (и более поздних версий) в этой ситуации правильно создает ошибку. |
Более строгая проверка параметров типа SQL_C_TYPE _TIMESTAMP и DBTYPE_DBTIMESTAMP. | До SQL Server 2008 datetime года значения округлялись в соответствии с масштабом столбцов datetime и smalldatetime SQL Server. SQL Server 2008 Native Client (и более поздних версий) применяет более строгие правила проверки, определенные в спецификации ядра ODBC для доли секунд. Если значение параметра не удается преобразовать в тип SQL с помощью масштаба, заданного или подразумеваемого клиентской привязкой, без усечения конечных разрядов, то возвращается ошибка. |
SQL Server может возвращать различные результаты при выполнении триггера. | Изменения, внесенные в SQL Server 2008 г., могут привести к тому, что приложение будет возвращать разные результаты из инструкции, которая приводила к запуску NOCOUNT OFF триггера при действии. В такой ситуации в приложении может возникнуть ошибка. Чтобы устранить эту ошибку, задайте NOCOUNT ON в триггере или вызовите SQLMoreResults, чтобы перейти к следующему результату. |