Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом разделе рассматриваются критические изменения в собственном клиенте SQL Server, так как собственный клиент SQL Server в SQL Server 2005.
При обновлении компонентов Microsoft Data Access (MDAC) до собственного клиента SQL Server также могут возникнуть некоторые различия в поведении. Дополнительные сведения см. в статье об обновлении приложения до собственного клиента SQL Server из MDAC.
SQL Server Native Client 9.0 поставляется с SQL Server 2005. SQL Server Native Client 10.0 поставляется с SQL Server 2008. SQL Server Native Client 10.5 поставляется с SQL Server 2008 R2. SQL Server Native Client 11.0 поставляется с SQL Server 2012 и SQL Server 2014.
| Изменено поведение в собственном клиенте SQL Server с SQL Server 2005 | Описание |
|---|---|
| OLE DB дополняет данные только до заданного масштаба. | Для преобразований, в которых преобразованные данные отправляются на сервер, sql Server Native Client (начиная с SQL Server 2008) заполняет конечные нули данных только до максимальной длины значений datetime . Собственный клиент SQL Server версии 9.0 дополнял данные до 9 разрядов. |
| Проверьте DBTYPE_DBTIMESTAMP для ICommandWithParameter::SetParameterInfo. | Собственный клиент SQL Server (начиная с 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 (начиная с SQL Server 2008) для даты вне диапазона, чем возвращаемый в более ранних версиях.В частности, sql Server Native Client 9.0 вернул 22007 для всех значений года вне диапазона в строковых преобразованиях datetime, а собственный клиент SQL Server начиная с версии 10.0 (SQL Server 2008) возвращает 22008, когда дата находится в диапазоне, поддерживаемом но за пределами диапазона, поддерживаемого datetime2datetime или smalldatetime. |
datetime Значение усекает дробные секунды и не округляется, если округление изменится на день. |
До SQL Server Native Client 10.0 поведение клиента для значений, datetime отправленных серверу, округляет их до ближайшего 1/300 секунды. Начиная с SQL Server Native Client 10.0, этот сценарий приводит к усечению дробных секунд, если округление изменяет день. |
Возможное усечение секунд для datetime значения. |
Приложение, созданное с помощью собственного клиента SQL Server 2008 (или более поздней версии), которое подключается к серверу 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 больше не вызывает изменения значения дня. | До SQL Server Native Client 10.0, если часть времени 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:000000. |
| Размер пересылаемых данных должен соответствовать длине, заданной параметром 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 Native Client datetime значения округлялись в соответствии с масштабом datetime и smalldatetime столбцами SQL Server. Собственный клиент SQL Server 2008 (и более поздние версии) применяет более строгие правила проверки, определенные в спецификации ядра ODBC для дробных секунд. Если значение параметра не удается преобразовать в тип SQL с помощью масштаба, заданного или подразумеваемого клиентской привязкой, без усечения конечных разрядов, то возвращается ошибка. |
| SQL Server может возвращать разные результаты при запуске триггера. | Изменения, внесенные в SQL Server 2008, могут привести к тому, что приложение возвращает различные результаты из инструкции, которая вызвала запуск триггера при NOCOUNT OFF действии. В такой ситуации в приложении может возникнуть ошибка. Чтобы устранить эту ошибку, задайте NOCOUNT ON в триггере или вызове SQLMoreResults, чтобы перейти к следующему результату. |