Fehlerhafte Änderungen an Features des Datenbankmoduls in SQL Server 2008
In diesem Thema werden fehlerhafte Änderungen in Database Engine (Datenbankmodul) beschrieben. Diese Änderungen können unter Umständen zur Funktionsunfähigkeit von Anwendungen, Skripts oder Funktionen führen, die auf früheren Versionen von SQL Server basieren. Diese Probleme können nach einer Aktualisierung auftreten. Weitere Informationen finden Sie unter Verwenden des Updateratgebers zur Vorbereitung auf Aktualisierungen.
Sortierungen
Feature |
Beschreibung |
---|---|
Neue Sortierungen |
In SQL Server 2008 werden neue Sortierungen eingeführt, die vollständig an die Sortierungen von Windows Server 2008 angepasst sind. Durch die 80 neuen Sortierungen wurde die linguistische Genauigkeit verbessert; sie sind mit dem Versionshinweis "* _100" gekennzeichnet. Beachten Sie, dass eine neue Sortierung für den Server oder die Datenbank möglicherweise von Clients mit älteren Treibern nicht erkannt wird. Unbekannte Sortierungen können zu Anwendungsfehlern führen. Ziehen Sie die folgenden Lösungen in Betracht:
Weitere Informationen finden Sie unter Festlegen und Ändern von Sortierungen. |
Common Language Runtime (CLR)
Feature |
Beschreibung |
---|---|
CLR-Assemblys |
Wenn eine Datenbank auf SQL Server 2008 aktualisiert wird, wird die Microsoft.SqlServer.Types-Assembly zur Unterstützung neuer Datentypen automatisch installiert. Updateratgeber-Regeln erkennen alle Benutzertypen oder Assemblys mit in Konflikt stehenden Namen. Der Updateratgeber schlägt im Fall von in Konflikt stehenden Assemblys das Umbenennen vor, und bei in Konflikt stehenden Typen das Umbenennen oder das Verwenden von zweiteiligen Namen im Code, um auf diesen bereits vorhandenen Benutzertypen zu verweisen. Wenn bei einer Datenbankaktualisierung eine Benutzerassembly mit in Konflikt stehendem Namen entdeckt wird, wird diese Assembly automatisch umbenannt und die Datenbank in den Fehlerverdachtmodus versetzt. Sollte während der Aktualisierung ein Benutzertyp mit in Konflikt stehendem Namen vorhanden sein, werden keine speziellen Schritte ausgeführt. Nach der Aktualisierung sind sowohl der alte Benutzertyp als auch der neue Systemtyp vorhanden. Der Benutzertyp steht nur bei Verwendung von zweiteiligen Namen zur Verfügung. |
CLR-Assemblys |
SQL Server 2008 installiert .NET Framework 3.5 SP1, woduch Bibliotheken im globalen Assemblycache (Global Assembly Cache, GAC) aktualisiert werden. Wenn die SQL Server-Datenbank nicht unterstützte Bibliotheken enthält, kann die SQL Server-Anwendung nach einer Aktualisierung auf SQL Server 2008 möglicherweise nicht mehr verwendet werden. Das liegt daran, dass durch Warten oder Aktualisieren von Bibliotheken im GAC die entsprechenden Assemblys in SQL Server nicht aktualisiert werden. Wenn eine Assembly sowohl in einer SQL Server-Datenbank als auch im GAC vorhanden ist, müssen die beiden Kopien der Assembly genau übereinstimmen. Stimmen sie nicht überein, tritt ein Fehler auf, wenn die Assembly von der SQL Server CLR-Integration verwendet wird. Weitere Informationen finden Sie unter Unterstützte .NET Framework-Bibliotheken. Bedienen oder aktualisieren Sie nach der Aktualisierung der Datenbank die Kopie der Assembly in den SQL Server-Datenbanken mit der ALTER ASSEMBLY-Anweisung. Weitere Informationen finden Sie im Knowledge Base-Artikel 949080. Sie können auch die folgende Abfrage in Ihrer Datenbank ausführen, um festzustellen, ob darin nicht unterstützte .NET Framework-Bibliotheken verwendet werden.
|
CLR-Routinen |
Durch Identitätswechsel innerhalb der benutzerdefinierten CLR-Funktionen, benutzerdefinierten Aggregate oder benutzerdefinierten Typen (User-Defined Types, UDTs) können kann nach der Aktualisierung auf SQL Server 2008 bei der Anwendung der Fehler 6522 auftreten. Die folgenden Szenarios können in SQL Server 2005 erfolgreich ausgeführt werden, nicht jedoch in SQL Server 2008. Für jedes Szenario werden Auflösungen bereitgestellt.
|
Dynamische Verwaltungssichten
Sicht |
Beschreibung |
---|---|
sys.dm_os_sys_info |
Entfernt die Spalte cpu_ticks_in_ms- und die sqlserver_start_time_cpu_ticks. |
sys.dm_exec_query_resource_semaphores sys.dm_exec_query_memory_grants |
Die Spalte resource_semaphore_id-Spalte stellt keine eindeutige ID in SQL Server 2008 dar. Diese Änderung kann die Abfrageausführung bei der Problembehandlung beeinflussen. Weitere Informationen finden Sie unter sys.dm_exec_query_resource_semaphores (Transact-SQL). |
Fehler und Ereignisse
Feature |
Beschreibung |
---|---|
Fehler beim Anmelden |
In SQL Server 2005 wird der Fehler 18452 zurückgegeben, wenn versucht wird, mit einem SQL-Anmeldenahmen eine Verbindung zu einem Server herzustellen, der nur die Windows-Authentifizierung verwendet. In SQL Server 2008 wird stattdessen der Fehler 18456 zurückgegeben. |
Showplan
Feature |
Beschreibung |
---|---|
Showplan (XML-Schema) |
Ein neues SeekPredicateNew-Element wird dem Showplan-XML-Schema hinzugefügt, und die einschließende XSD-Sequenz (SqlPredicatesType) wird in ein <xsd:choice>-Element konvertiert. Anstelle von einem oder mehreren SeekPredicate-Elementen werden nun eines oder mehrere SeekPredicateNew-Elemente für Showplan XML angezeigt Die beiden Elemente schließen sich gegenseitig aus. SeekPredicate wird im Showplan-XML-Schema für die Rückwärtskompatibilität angezeigt; Abfragepläne, die in SQL Server 2008 erstellt wurden, enthalten jedoch möglicherweise das SeekPredicateNew-Element. Anwendungen, die nur das untergeordnete SeekPredicate-Element aus dem Knoten ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple/QueryPlan/RelOp/IndexScan/SeekPredicates abrufen sollen, können möglicherweise nicht ordnungsgemäß ausgeführt werden, wenn SeekPredicate nicht vorhanden ist. Schreiben Sie die Anwendung um, so dass entweder das SeekPredicate-Element oder das SeekPredicateNew-Element für diesen Knoten abgerufen wird. Weitere Informationen finden Sie unter Verbesserte Abfrageverarbeitung bei partitionierten Tabellen und Indizes. |
Showplan (XML-Schema) |
Dem komplexen ObjectType-Typ wird im Showplan-XML-Schema ein neues IndexKind-Attribut hinzugefügt. Anwendungen, die eine strenge Validierung von SQL Server-Plänen anhand des SQL Server 2005-Schemas durchführen, generieren einen Fehler. |
Transact-SQL
Feature |
Beschreibung |
---|---|
ALTER_AUTHORIZATION_DATABASE DDL-Ereignis |
Wenn das DDL-Ereignis ALTER_AUTHORIZATION_DATABASE in SQL Server 2005 ausgelöst wird, wird der Wert "object" im ObjectType-Element der XML-Daten von EVENTDATA für das Ereignis zurückgegeben, wenn der Entitätstyp des sicherungsfähigen Elements im DDL-Vorgang (Data Definition Language, Datendefinitionssprache) ein Objekt darstellt. In SQL Server 2008 wird der tatsächliche Typ (z. B. "table" oder "function") zurückgegeben. |
CONVERT |
Wenn ein ungültiger Stil an die CONVERT-Funktion übergeben wird und eine Konvertierung vom Binärformat ins Zeichenformat oder vom Zeichenformat ins Binärformat ausgeführt werden soll, wird ein Fehler zurückgegeben. In früheren Versionen von SQL Server wurde der ungültige Stil bei Konvertierungen vom Binärformat ins Zeichenformat oder vom Zeichenformat ins Binärformat auf den Standardstil festgelegt. |
GRANT/DENY/REVOKE EXECUTE für Assemblys |
EXECUTE-Berechtigungen können nicht für Assemblys gewährt, verweigert oder widerrufen werden. Diese Berechtigung hat keine Auswirkungen mehr und generiert einen Fehler. Gewähren, verweigern oder widerrufen Sie die EXECUTE-Berechtigung stattdessen für gespeicherte Prozeduren oder Funktionen, die auf die Assemblymethode verweisen. |
GRANT/DENY/REVOKE-Berechtigungen für Systemtypen |
Berechtigungen können nicht für Systemtypen gewährt, verweigert oder widerrufen werden. Diese Anweisungen können in früheren Versionen von SQL Server zwar erfolgreich ausgeführt werden; sie haben jedoch keine Auswirkungen. In SQL Server 2008 wird ein Fehler zurückgegeben. |
OUTPUT-Klausel |
Um nicht deterministisches Verhalten zu vermeiden, kann die OUTPUT-Klausel nicht auf eine Spalte einer Sicht oder Inline-Tabellenwertfunktion verweisen, wenn diese Spalte mithilfe einer der folgenden Methoden definiert wurde:
Wenn SQL Server eine solche Spalte in der OUTPUT-Klausel erkennt, wird der Fehler 4186 ausgelöst. Weitere Informationen finden Sie unter MSSQLSERVER_4186. |
OUTPUT INTO-Klausel |
Für die Zieltabelle der OUTPUT INTO-Klausel dürfen keine Trigger aktiviert sein. |
precompute rank-Option auf Serverebene |
Diese Option wird in SQL Server 2008 nicht unterstützt. Ändern Sie Anwendungen, die dieses Feature derzeit verwenden, so schnell wie möglich. |
READPAST-Tabellenhinweis |
Der READPAST-Tabellenhinweis kann nicht angegeben werden, wenn die READ_COMMITTED_SNAPSHOT-Datenbankoption auf ON festgelegt ist und eine der folgenden Bedingungen zutrifft:
Um den READPAST-Hinweis in diesen Fällen anzugeben, entfernen Sie den READCOMMITTED-Tabellenhinweis (sofern vorhanden), und nehmen Sie den READCOMMITTEDLOCK-Tabellenhinweis in die Abfrage auf. |
sp_helpuser |
Die folgenden Spaltennamen, die im Resultset der gespeicherten Prozedur sp_helpuser zurückgegeben werden, wurden geändert.
Vorheriger SpaltennameNeuer Spaltenname
GroupNameRoleName
Group_nameRole_name
Group_idRole_id
Users_in_groupUsers_in_role
|
Transparente Datenverschlüsselung |
Die transparente Datenverschlüsselung (Transparent Data Encryption, TDE) erfolgt auf E/A-Ebene: Die Struktur der Seite im Speicher ist nicht verschlüsselt, und die Seite wird erst beim Schreiben auf einen Datenträger verschlüsselt. Die Datenbankdateien und die Protokolldateien werden verschlüsselt. Anwendungen von Drittanbietern, die den regulären Seitenzugriffsmechanismus von SQL Server umgehen, beispielsweise durch direktes Scannen der Daten- oder Protokolldateien), generieren einen Fehler, wenn TDE in einer Datenbank verwendet wird, da die Daten in den Dateien verschlüsselt sind. In diesen Fällen kann mithilfe der Windows-Kryptografie-API eine Lösung zum Entschlüsseln der Daten außerhalb von SQL Server für die Anwendungen entwickelt werden. |
XQuery
Feature |
Beschreibung |
---|---|
Datetime-Unterstützung |
Die Datentypen xs:time, xs:date und xs:dateTime in SQL Server 2005 unterstützen keine Zeitzonen. Zeitzonendaten werden der UTC-Zeitzone zugeordnet. SQL Server 2008 stellt standardkonformes Verhalten bereit. Dies führt zu folgenden Änderungen:
Ändern Sie Anwendungen und XQuery-Ausdrücke gemäß den Anforderungen der neuen Typwerte. Weitere Informationen finden Sie unter Verwenden von XML mit den Datentypen 'time', 'date', 'datetime2' und 'datetimeoffset'. |
XQuery und Xpath-Ausdrücke |
In SQL Server 2005 sind Schritte in einem XQuery-Ausdruck oder einem XPath-Ausdruck zulässig, die mit einem Doppelpunkt (":") beginnen. Die folgende Anweisung enthält zum Beispiel einen Namenstest (CTR02)) innerhalb des Pfadausdrucks, der mit einem Doppelpunkt beginnt.
In SQL Server 2008 ist diese Verwendung nicht zulässig, da sie nicht den XML-Standards entspricht. Der Fehler 9341 wird zurückgegeben. Entfernen Sie den führenden Doppelpunkt, oder geben Sie ein Präfix für den Namenstest an, z. B. (n$/p1:CTR02) oder (n$/CTR02). |
Änderungsverlauf
Aktualisierter Inhalt |
---|
Änderungen, die die Funktionsfähigkeit beeinträchtigen, für XQuery-Ausdrücke und Xpath-Ausdrücke hinzugefügt. |
Siehe auch