Udostępnij za pośrednictwem


Uaktualnianie aplikacji do programu SQL Server 2008 Native klient programu SQL Server 2005 Native klient

SQL Server 2008 zawiera SQL Server Klient macierzystym 10.0. W tym temacie opisano różnice w zachowaniu w tej wersja i we wcześniejszych wersjach SQL Server Macierzysta klient.

Po uaktualnieniu z programu Microsoft Data Access Components (MDAC) do SQL Server Macierzysty 10.0 klient, może pojawić się również pewne różnice zachowanie. Aby uzyskać więcej informacji zobaczUaktualnianie aplikacji SQL Server Native klient ze składników MDAC.

Zmieniono zachowanie SQL Server Native klient 10.0

Description

Konsole OLE DB tylko do określonych skali.

Aby konwersje, gdzie przekonwertowane dane są przesyłane do serwera, SQL Server Końcowe zera w danych z maksymalną długość pads macierzystym 10.0 klient datetime wartości. klient SQL Server Native 9.0 i wcześniej wyściełane 9 cyfr.

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

SQL Server Macierzysta 10.0 klient implementuje wymóg OLE DB bScale w ICommandWithParameter::SetParameterInfo Aby ustawić dokładnością ułamków sekund dla DBTYPE_DBTIMESTAMP.

The sp_columns procedura przechowywana now returns "NO" instead of "NO " for the IS_NULLABLE kolumna.

W SQL Server Klient macierzystym 10.0, sp_columns Zwraca procedurenow przechowywane "NIE" zamiast "NIE" dla kolumna IS_NULLABLE.

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

Przed SQL Server Macierzysty 10.0 klient, ustawianie SQL_DESC_DATA_PTR nie powoduje sprawdzenie spójności dla każdego typu deskryptora w SQLSetDescRec, SQLBindParameter, lub SQLBindCol.

SQLCopyDesc obecnie nie Sprawdzanie spójności deskryptora.

Przed SQL Server Klient macierzystym 10.0, SQLCopyDesc nie została Sprawdzanie spójności, gdy pole SQL_DESC_DATA_PTR było zestaw do określonego rekordu.

SQLGetDescRec nie jest sprawdzana spójność deskryptora.

Przed SQL Server Klient macierzystym 10.0, SQLGetDescRec pole SQL_DESC_DATA_PTR było wykonywane sprawdzanie spójności deskryptora zestaw. To nie był wymagany przez specyfikację ODBC i w SQL Server Nie jest już wykonywane jest macierzystym 10.0 klient, to sprawdzanie spójności.

Inny błąd zwracane, gdy data jest poza zakresem.

Dla datetime Typ, numer błędu różnych zostaną zwrócone przez SQL Server Macierzysta 10.0 klient w przypadku out o zakres dat nie został zwrócony z wcześniejszych wersji.

W szczególności SQL Server W konwersji ciąg na macierzysty Client 9.0 zwrócone 22007 dla wszystkich zmniejszyć zakres wartości z roku datetime, a SQL Server Macierzysty 10.0 klient zwraca 22008, gdy data jest w zasięgu, obsługiwane przez datetime2 jednak poza zakresem obsługiwane przez datetime lub smalldatetime.

datetime wartość obcina ułamków sekund, a nie okrągłe, jeśli zaokrąglania zostanie zmieniona na dzień.

Przed SQL Server Macierzysta 10.0 klient, zachowanie klient datetime wartości wysłane do serwera jest ich zaokrąglanie do najbliższej 1/300th sekundy. W SQL Server Macierzysta 10.0 klient, w tym scenariuszu powoduje obcięcia ułamków sekund Jeśli zaokrąglania zmieni się w dniu.

Konwersja danych OLE DB z DBTYPE_DBTIME na DBTYPE_DATE już może spowodować, że dzień, aby zmienić.

Przed SQL Server Macierzysta 10.0 klient, jeśli pół sekundy od północy, czas część DBTYPE_DATE kod konwersji baz danych OLE spowodował dnia, aby zmienić. W SQL Server 10.0 klient macierzystym, dzień będą zmieniać (ułamków sekund są obcięte i nie jest zaokrąglana).

IBCPSession::BCColFmt zmiany konwersji.

W SQL Server Macierzysta 10.0 klient, korzystając z IBCPSession::BCOColFmt Aby przekonwertować SQLDATETIME lub SQLDATETIME typu ciąg znaków, wartość ułamkowa jest eksportowany. Wpisz na przykład podczas konwersji SQLDATETIME wpisanie SQLNVARCHARMAX we wcześniejszych wersjach SQL Server Zwrócone macierzystym klient

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.

W przypadku korzystania z SQL_LEN_DATA_AT_EXEC, rozmiar danych musi odpowiadać długość określoną SQL_LEN_DATA_AT_EXEC.Można użyć SQL_DATA_AT_EXEC, ale istnieją potencjalne korzyści wydajności przy użyciu SQL_LEN_DATA_AT_EXEC.

Niestandardowe aplikacje korzystające z interfejsu API BCP zobaczy komunikat ostrzegawczy.

Interfejs API BCP wygeneruje komunikat ostrzegawczy, jeżeli długość danych jest większa niż długość określoną dla pole dla wszystkich typów.Wcześniej to ostrzeżenie podano tylko dla typów znaków, ale nie zostanie wystawiony dla wszystkich typów.

Pusty ciąg znaków do wstawiania sql_variant powiązane jako datę / czas typu generuje błąd.

W SQL Server Macierzysty klient 9.0, pusty ciąg znaków do wstawiania sql_variant powiązane typu Data/Godzina nie spowodowała wygenerowania błędu. SQL Server Macierzysta 10.0 klient poprawnie generuje błąd w tej sytuacji.

Bardziej rygorystyczne _TIMESTAMP SQL_C_TYPE i DBTYPE_DBTIMESTAMP poprawność parametrów.

Przed SQL Server 2008 Klient macierzystą, datetime wartości są zaokrąglane do dopasowanie skali datetime i smalldatetime kolumny przez SQL Server. SQL Server 2008 Klient macierzystym teraz 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 wiązanie bez obcinania z końcowe cyfr, zwracany jest błąd.

SQL Server Po uruchomieniu wyzwalacza mogą zwracać różne wyniki.

Zmiany w SQL Server 2008 może spowodować, że aplikacja ma różne wyniki zwrócone z instrukcja, która spowodowała wyzwalacz ma być uruchamiane, gdy NOCOUNT OFF obowiązywały. W takim przypadku aplikacji może wygenerować błąd.Aby rozwiązać ten problem, należy ustawić NOCOUNT ON wyzwalacz lub wywołania SQLMoreResults Aby przejść do następnego wyniku.