Uaktualnianie aplikacji do programu SQL Server 2008 R2 Native Client z klientami programu SQL Server 2005

W tym temacie omówiono zmiany podziału w SQL Server Native Client od SQL Server Native Client w SQL Server 2005.

Po uaktualnieniu z programu Microsoft Data Access Components (MDAC) do SQL Server Native Client może również pojawić niektóre różnice zachowanie.Aby uzyskać więcej informacji, zobacz Uaktualnianie aplikacji do programu SQL Server Native Client MDAC.

Zmieniono zachowanie 10.0 klienta macierzystego SQL Server

Opis

Wkładki OLE DB tylko do określonych skali.

Do konwersji, w którym przekonwertowane dane są przesyłane do serwera SQL Server wkładki macierzystym 10.0 klienta końcowe zera w danych z maksymalną długość datetime wartości.SQL Server Native Client 9.0 i wcześniej wyściełane do 9 cyfr.

Sprawdź poprawność DBTYPE_DBTIMESTAMP dla ICommandWithParameter::SetParameterInfo.

SQL ServerMacierzysta klienta 10.0 implementuje wymóg OLE DB dla bScale w ICommandWithParameter::SetParameterInfo do zestaw do ułamków sekund dokładność DBTYPE_DBTIMESTAMP.

sp_columnsprocedura składowana Teraz zwraca "Nie" zamiast "Nie" IS_NULLABLE kolumna.

W SQL Server macierzystego 10.0 klienta, sp_columns przechowywane zwraca procedurenow "Nie" zamiast "Nie" dla kolumna IS_NULLABLE.

SQLSetDescRec, SQLBindParameter, i SQLBindCol teraz sprawdzania spójności.

Przed SQL Server macierzystego 10.0 klient, ustawianie SQL_DESC_DATA_PTR nie może powodować Sprawdzanie spójności dla każdego typu deskryptora w SQLSetDescRec, SQLBindParameter, lub SQLBindCol.

SQLCopyDesc teraz wykonuje sprawdzanie spójności deskryptora.

Przed SQL Server macierzystego 10.0 klienta, SQLCopyDesc nie została Sprawdzanie spójności, gdy pole SQL_DESC_DATA_PTR jest zestaw w szczególności rekordu.

SQLGetDescRec już Sprawdzanie spójności deskryptora.

Przed SQL Server macierzystego 10.0 klienta, SQLGetDescRec wykonywane sprawdzanie spójności deskryptora, gdy pole SQL_DESC_DATA_PTR jest zestaw.Nie było wymagane przez specyfikację ODBC i w SQL Server 10.0 macierzystym klienta, to sprawdzanie spójności jest już wykonywane.

Inny błąd zwracane, gdy data jest z zakres.

Dla datetime Typ, numer błędu różnych zostaną zwrócone przez SQL Server macierzystego 10.0 klienta dla out zakres data nie został zwrócony w starszych wersjach.

W szczególności SQL Server Native Client 9.0 zwracane 22007 dla wszystkich wartości zakresu w roku w ciąg konwersji do datetime, i SQL Server macierzystego 10.0 klient zwraca 22008, gdy data jest w zasięgu, obsługiwane przez datetime2 , ale poza zakres obsługiwanych przez datetime lub smalldatetime.

datetime wartość obcina ułamków sekund i zaokrągla zaokrąglania zostanie zmianie dnia.

Przed SQL Server macierzystego 10.0 klienta, klient zachowanie datetime wartości wysyłane do serwera jest ich zaokrąglić do najbliższej 1/300th sekundy.W SQL Server macierzystego 10.0 klienta, ten scenariusz powoduje obcięcie ułamków sekund w przypadku zaokrąglania zmiany dnia.

Możliwe obcięcie sekund dla datetime wartości.

Aplikacja utworzona za pomocą SQL Server 2008 Native Client (lub nowsze) łączy do SQL Server 2005 (lub starszej) serwera obcinają sekund i ułamków sekund dla czas część dane wysyłane do serwera, jeśli powiąże się z datetime kolumna z identyfikatorem typu z DBTYPE_DBczasSTEMPLA (OLE DB) lub SQL_czaspieczęć (ODBC) i o skali 0.

Na przykład:

Dane wejściowe: 1994-08-21 21:21:36.000

Wstawione dane: 1994-08-21 21:21:00.000

Konwersja danych OLE DB z DBTYPE_DBTIME na DBTYPE_DATE nie może spowodować dnia, aby zmienić.

Przed SQL Server macierzystego 10.0 klienta, jeśli czas część DBTYPE_DATE była pół sekundy od północy, kod konwersji DB OLE spowodował dnia Zmień.W SQL Server 10.0 macierzystym klienta, będzie dzień nie zmieniaj (ułamków sekund są obcięte i nie zaokrąglona).

IBCPSession::BCColFmt zmiany konwersji.

W SQL Server macierzystego 10.0 klienta, korzystając z IBCPSession::BCOColFmt konwertować elementu SQLDATETIME lub element SQLDATETIME typu ciąg, wartość ułamkowa jest eksportowany.Wpisz na przykład podczas konwersji elementu SQLDATETIME wpisać SQLNVARCHARMAX we wcześniejszych wersjach SQL Server zwrócił Native Client

1989-02-01 00:00:00.SQL Server Native Client 10.0 returns 1989-02-01 00:00:00.0000000.

Rozmiar danych wysłanych musi odpowiadać długości określonej w SQL_LEN_DATA_AT_EXEC.

Podczas korzystania z SQL_LEN_DATA_AT_EXEC rozmiar danych musi odpowiadać długości określonej w SQL_LEN_DATA_AT_EXEC.Można użyć SQL_DATA_AT_EXEC, ale istnieją potencjalne korzyści wydajności z SQL_LEN_DATA_AT_EXEC.

Niestandardowe aplikacje korzystające z interfejsu API BCP można teraz wyświetlane ostrzeżenie.

Interfejs API BCP wygeneruje ostrzeżenie, jeśli długość danych jest większa niż określona długość pole dla wszystkich typów.Wcześniej to ostrzeżenie podano tylko typy znaków, ale nie będzie wydane dla wszystkich typów.

Wstawianie pustego ciąg do sql_variant powiązane jako data /czas typu generuje błąd.

W SQL Server Native Client 9.0 wstawianie pustego ciąg do sql_variant powiązane jako data /czas typu nie spowodowała wygenerowania błędu.SQL ServerMacierzysty 10.0 klienta poprawnie generuje błąd w tej sytuacji.

Bardziej rygorystyczne _TIMESTAMP SQL_C_TYPE i sprawdzanie poprawności parametru DBTYPE_DBTIMESTAMP.

Prior to SQL Server 2008 Native Client, datetime values were rounded to fit the scale of datetime and smalldatetime columns by SQL Server.SQL Server 2008 Native Client (i nowszych) stosuje się bardziej rygorystyczne reguł sprawdzania poprawności, które są zdefiniowane w specyfikacji podstawowych ODBC dla ułamków sekund.Jeśli wartość parametru nie można przekonwertować na typ SQL przy użyciu skali określona lub implikowana przez klient powiązanie bez obcinania z końcowe cyfry, zwracany jest błąd.

SQL Servermogą zwracać różne wyniki po uruchomieniu wyzwalacza.

Zmiany wprowadzone w SQL Server 2008 może spowodować aplikacji mają różne wyniki zwrócone z instrukcja, która spowodowała wyzwalacz uruchomione po NOCOUNT OFF w życie.W tej sytuacji aplikacja może wygenerować błąd.To resolve this error, set NOCOUNT ON in the trigger or call SQLMoreResults to advance to the next result.