Breaking Changes to Database Engine Features in SQL Server 2008

W tym temacie opisano zmiany podziału Database Engine. Te zmiany może spowodować uszkodzenie aplikacji, skryptów lub funkcje, które są oparte na starszych wersjach SQL Server. Te problemy mogą wystąpić podczas uaktualniania.Aby uzyskać więcej informacji zobaczUsing Upgrade Advisor to Prepare for Upgrades.

Ustawienia sortowania

Funkcja

Description

Nowe ustawienia sortowania

SQL Server 2008 wprowadzenie do nowych ustawień sortowania, znajdujące się w pełnym wyrównanie z ustawień sortowania, dostarczanych przez system Windows Server 2008.Te 80 nowych ustawień sortowania zostały udoskonalone lingwistyczne dokładność i są oznaczone * _100 wersja odwołania.Jeśli wybierzesz nowy sortowania dla serwera lub bazy danych, należy pamiętać, sortowanie nie mogą być rozpoznawane przez klientów ze starszych sterowników klient.Nierozpoznany sortowania może spowodować, że aplikacja zwracać błędy i nie powiedzie się.Należy wziąć pod uwagę następujące rozwiązania:

  • Uaktualnienie systemu operacyjnego klient, aby podstawowe metody sortowania systemu są aktualizowane.

  • Jeśli komputer kliencki ma zainstalowane oprogramowanie klient bazy danych, należy rozważyć zastosowanie aktualizacji usługa do oprogramowania klient bazy danych.

  • Wybierz istniejące sortowanie, który mapuje strona kodowa na komputerze klienckim.

Aby uzyskać więcej informacji zobaczSetting and Changing Collations.

Plików wykonywalnych języka wspólnego (CLR)

Funkcja

Description

Zestawy CLR

Po uaktualnieniu bazy danych SQL Server 2008, Microsoft.SqlServer.Types wirtualny plik dziennika do obsługi nowych typów danych jest instalowana automatycznie. Reguły Doradcy uaktualnienia wykryć typ użytkownika ani zestawy z konfliktu nazw.Doradca uaktualnienia będzie informacji zmiany nazwy dowolnego wirtualny plik dziennika powodujących konflikt i albo dowolnego typu powodujące konflikt zmiany nazwy lub korzystanie z dwóch części nazw w kodzie do odwoływania się do istniejących typu użytkownika.

Jeśli uaktualnienie bazy danych wykryje wirtualny plik dziennika użytkownika o nazwie powodujące konflikt, będzie automatycznie zmiany nazwy tego wirtualny plik dziennika i umieścić bazy danych w trybie podejrzanych.

CERTYFIKAT, PROTOKOŁU KERBEROScertyfikat, NEGOCJOWANIAcertificate_id

Zestawy CLR

SQL Server 2008 instaluje system .NET Framework 3.5 SP1, która aktualizuje bibliotek w globalnej pamięci podręcznej zestawów (GAC).Jeśli ma nieobsługiwany bibliotek zarejestrowanych w SQL Server Baza danych, sieci SQL Server Aplikacja może przestać działać po uaktualnieniu systemu do SQL Server 2008. Dzieje się tak, ponieważ naprawy lub uaktualnienia bibliotek w pamięci podręcznej GAC nie aktualizuje zestawów wewnątrz SQL Server. Jeśli zespół istnieje zarówno w SQL Server bazy danych i w pamięci podręcznej GAC, musi dokładnie odpowiadać dwóch kopii tego wirtualny plik dziennika. Jeśli nie są zgodne, wystąpi błąd, gdy wirtualny plik dziennika jest używany przez SQL Server Integracja środowiska CLR. Aby uzyskać więcej informacji zobaczObsługiwany system .NET Framework biblioteki.

Po uaktualnieniu bazy danych, usługa lub uaktualnić kopię wirtualny plik dziennika wewnątrz sieci SQL Server bazy danych przy użyciu instrukcja ALTER wirtualny plik dziennika. Aby uzyskać więcej informacji zobacz Artykuł bazy wiedza Microsoft wiedza Base 949080.

Do wykrywać, czy korzystasz z każdej biblioteki .NET Framework nieobsługiwane w aplikacji, należy uruchomić następujące kwerendy w bazie danych.

SELECT name FROM sys.assemblies WHERE clr_name LIKE '%publickeytoken=b03f5f7f11d50a3a,%';

Środowisko CLR procedur

Przy użyciu personifikacji wewnątrz CLR funkcji zdefiniowanej przez użytkownika, zagregowanych przez użytkownika lub typów zdefiniowanych przez użytkownika (UDTs) może spowodować niepowodzenie z powodu błędu 6522 po uaktualnieniu systemu do aplikacji SQL Server 2008.

W poniższych scenariuszach uda się SQL Server 2005 ale nie w SQL Server 2008. Dostępne są rozwiązania dla każdego scenariusza.

  1. funkcja zdefiniowanej przez użytkownika CLR, zdefiniowane przez użytkownika funkcja agregacja lub UDT metoda, której używa personifikacji ma parametr typu nvarchar(max), varchar(max), varbinary(max), ntext, text, image, lub UDT duże, a nie ma DataAccessKind.Read atrybut metoda.

    Aby rozwiązać ten problem, należy dodać DataAccessKind.Read atrybut metoda, należy ponownie skompilować wirtualny plik dziennika, a ponowne-wdrożyć rutynowych i wirtualny plik dziennika.

  2. CLR funkcja zwracająca tabelę ma Inicjowanie metoda, która przeprowadza personifikacji.

    Aby rozwiązać ten problem, Dodaj DataAccessKind.Read atrybut w przypadku metoda wirtualny plik dziennika należy ponownie skompilować i zainstalowanie rutynowych i wirtualny plik dziennika.

  3. funkcja wycenione tabela CLR, która ma FillRow metoda, która przeprowadza personifikacji.

    Aby rozwiązać ten problem, usuń personifikacji z FillRow metoda.Nie dostęp do zasobów zewnętrznych za pomocą FillRow metoda.Zamiast tego należy uzyskać dostęp do zasobów zewnętrznych z Inicjowanie metoda.

Dynamiczne zarządzanie widoki

Bez opuszczania środowiska, można zarządzać sieci fizycznej i łatwo zespołów projektów.

Description

sys.dm_os_sys_info

Usunięcie kolumny cpu_ticks_in_ms i sqlserver_start_time_cpu_ticks.

sys.dm_exec_query_resource_semaphores sys.dm_exec_query_memory_grants

Kolumna resource_semaphore_id nie jest unikatowy identyfikator w SQL Server 2008. Ta zmiana może wpłynąć na wykonanie kwerendy dotyczące rozwiązywania problemów.Aby uzyskać więcej informacji zobaczsys.dm_exec_query_resource_semaphores (języka Transact-SQL).

Błędy i zdarzenia

Funkcja

Description

Błędy logowania

W SQL Server 2005, zwracany jest błąd 18452 podczas logowania SQL jest używany do łączenia się z serwerem, skonfigurowany do korzystania tylko z uwierzytelnianie systemu Windows. W SQL Server 2008, zamiast tego zostanie zwrócony błąd 18456.

plan wykonania

Funkcja

Description

Schemat XML plan wykonania

Nowy SeekPredicateNew element zostanie dodany do schematu XML plan wykonania i otaczający sekwencji xsd (SqlPredicatesType) jest konwertowany na <xsd:Choice> element. Zamiast jednego lub więcej SeekPredicate co najmniej jeden SeekPredicateNew elementów teraz może pojawić się w języku XML plan wykonania.Dwa elementy wzajemnie się wykluczają.SeekPredicate jest przechowywana w schemacie XML plan wykonania dla Wstecz zgodności, jednak kwerendy planów utworzonych w SQL Server 2008 może zawierać SeekPredicateNew element.Aplikacje, które oczekują, że w celu pobrania tylko SeekPredicate podrzędność z węzła ShowPlanXML/BatchSequence/partia/deklaracji/StmtSimple/QueryPlan/RelOp/IndexScan/SeekPredicates może się nie powieść, jeśli SeekPredicate element nie istnieje.Ponownie zapisuje aplikacji albo oczekiwać SeekPredicate or SeekPredicateNew element w tym węźle.Aby uzyskać więcej informacji zobaczKwerendy przetwarzania rozszerzenia na podzielonym na partycje, tabele oraz indeksy.

Schemat XML plan wykonania

Nowy IndexKind dodaje się atrybutTypu obiektu typu złożonego w schemacie XML plan wykonania.Aplikacje, które ściśle sprawdzania poprawności SQL Server Plany przed SQL Server 2005 Schemat nie powiedzie się.

Transact-SQL

Funkcja

Description

Zdarzenie ALTER_AUTHORIZATION_DATABASE DDL

W SQL Server 2005, po uruchomieniu zdarzenie DDL ALTER_AUTHORIZATION_DATABASE, 'obiektu' jest zwracany w wartości Typu obiektu element xml EVENTDATA dla tego zdarzenie, gdy obiekt jest typu obiektu zabezpieczany w operacji (DDL) języka definicja danych.W SQL Server 2008, zwracana jest rzeczywisty typ (na przykład 'Tabela' lub 'Funkcja').

KONWERTOWANIE

Jeżeli nieprawidłowa stylu jest przekazywana do funkcja konwersji, zwracany jest błąd podczas konwersji jest binarne znaku lub znaków do wartości binarnej.We wcześniejszych wersjach SQL Server, jest nieprawidłowy styl zestaw do domyślnego stylu dla konwersji plik binarny do znaków i znaków na binarny.

GRANT/DENY/REVOKE wykonać na zestawy

Uprawnienie wykonać nie mogą być udzielone, odmowa lub odwołane do zespołów.To uprawnienie nie ma wpływu i teraz powoduje błąd.Udzielić, odmawianie lub odwołać uprawnienia wykonać na przechowywane procedury lub funkcje odwołujące metoda wirtualny plik dziennika.

GRANT/DENY, REVOKE uprawnienia w systemie typów

Uprawnienia nie może być udzielone, odmowa lub odwołany na typy systemu.We wcześniejszych wersjach SQL Server, instrukcje te została wykonana pomyślnie, ale nie są uwzględniane. W SQL Server 2008, zwracany jest błąd.

Klauzula wyjście

Aby zapobiec nondeterministic klauzula wyjście nie może odwołać kolumna z widoku lub wbudowanej wartości tabela funkcja podczas tej kolumna jest definiowana przez jedną z następujących metod:

  • podkwerenda.

  • funkcja zdefiniowanej przez użytkownika, która wykonuje dostępu do danych użytkownika lub systemu lub przyjęto, że do wykonywania takiego dostępu.

  • kolumna obliczana zawiera w swojej definicji funkcja zdefiniowanej przez użytkownika wykonującego dostępu do danych użytkownika lub systemu.

Kiedy SQL Server wykrywa taki kolumna w klauzula wyjście powstaje błąd 4186. Aby uzyskać więcej informacji zobaczMSSQLSERVER_4186.

klauzula INTO wyjście

W tabela miejsce docelowe klauzula INTO wyjście nie może mieć żadnych włączonych wyzwalaczy.

precompute rangi opcji poziom serwera

Ta opcja nie jest obsługiwany w SQL Server 2008. Modyfikowanie aplikacji, które obecnie korzystać z tej funkcji jak najszybciej.

Wskazówka dotycząca READPAST tabela

Wskazówka READPAST tabela nie można określić, gdy opcja READ_COMMITTED_SNAPSHOT bazy danych jest ustawiona na ON i jest spełniony jeden z następujących warunków:

  • level_2_grid_desc

  • Gęstość siatki dla siatki drugiego poziom, jeden z:

level_3_grid

sp_helpuser

Następujące nazwy kolumn, które są zwracane zestaw wyników procedura przechowywana sp_helpuser uległy zmianie.

Poprzednia nazwa kolumnaNowa nazwa kolumna
Nazwa_grupyRoleName
Group_nameRole_name
Group_idRole_id
Users_in_groupUsers_in_role

Przezroczyste szyfrowanie danych

Szyfrowanie danych przezroczyste (TDE) jest wykonywane poziom we/wy: strukturę strona jest niezaszyfrowana w pamięci i są szyfrowane tylko wtedy, gdy strona są zapisywane na dysku. Pliki bazy danych i pliki dziennika są szyfrowane.Aplikacje innych producentów, które omijają regularne SQL Server mechanizm dostępu do strony (na przykład przez skanowanie plików danych lub dziennika bezpośrednio), nie powiedzie się, gdy baza danych używa TDE, ponieważ dane są szyfrowane w plikach. Takie aplikacje mogą korzystać z okna kryptograficzny interfejs API do opracowania rozwiązania do odszyfrowania danych poza SQL Server.

XQuery

Funkcja

Description

Obsługa daty/godziny

W SQL Server 2005, typy danych xs:time, xs:date, a xs:dateTime nie jest obsługiwane timezone. Dane timezone jest mapowany na timezone czasu UTC.SQL Server 2008, zapewnia zachowanie standardowe zgodność, powodując następujące zmiany:

  • Wartości bez timezone są sprawdzane.

  • Pod warunkiem, że timezone lub braku timezone jest zachowywany.

  • Reprezentacji wewnętrznej pamięci masowej jest modyfikowany.

  • Rozdzielczość przechowywane wartości wzrasta.

  • Lata ujemne są niedozwolone.

Modyfikowanie aplikacji i XQuery wyrażenia, aby uwzględnić nowe wartości typu.Aby uzyskać więcej informacji zobaczUsing XML with time, date, datetime2, and datetimeoffset Data Types.

Wyrażenia XQuery i wyrażenia XPath

W SQL Server 2005, kroków w XQuery lub wyrażenie XPath wyrażeniem, które zaczynają się od dwukropka (":") są dozwolone. Na przykład następująca instrukcja zawiera (test do nazwyCTR02) w wyrażeniu ścieżka rozpoczynającą się od dwukropka.

SELECT FileContext.query('for n$ in //CTR return <C>{data )(n$/:CTR02)} </C>) AS Files FROM dbo.MyTable;

W SQL Server 2008, to użycie jest niedozwolona, ponieważ nie jest zgodna ze standardami XML. Zwracany jest błąd 9341.Usuwanie wiodących dwukropek lub określić prefiks do nazwy testu — na przykład, (n $ / CTR02) lub (n $ / p1:CTR02).

Historia zmian

Microsoft Learning

Dodaje przerywania zmian dla wyrażeń XQuery i wyrażenia XPath.