Changements essentiels dans les fonctionnalités du moteur de base de données de SQL Server 2008
Cette rubrique décrit les changements importants apportés au Moteur de base de données. Ces modifications peuvent interrompre les applications, scripts ou fonctionnalités fondés sur les versions antérieures de SQL Server. Il se peut que vous rencontriez ces problèmes lors d'une mise à niveau. Pour plus d'informations, consultez Utilisation du Conseiller de mise à niveau pour la préparation des mises à niveau.
Classements
Fonctionnalité |
Description |
---|---|
Nouveaux classements |
SQL Server 2008 introduit de nouveaux classements qui sont en alignement complet avec les classements fournis par Windows Server 2008. Ces 80 nouveaux classements présentent une précision linguistique améliorée et sont dénotés par des références de version *_100. Si vous choisissez un nouveau classement pour votre serveur ou base de données, gardez à l'esprit que le classement peut ne pas être reconnu par les clients équipés de pilotes clients plus anciens. En raison des classements non reconnus, l'application peut retourner des erreurs et échouer. Envisagez les solutions suivantes :
Pour plus d'informations, consultez Définition et modification des classements. |
CLR (Common Language Runtime)
Fonctionnalité |
Description |
---|---|
Assemblys CLR |
Lorsqu'une base de données est mise à niveau vers SQL Server 2008, l'assembly Microsoft.SqlServer.Types destiné à prendre en charge de nouveaux types de données est automatiquement installé. Les règles du Conseiller de mise à niveau détectent tout type d'utilisateur ou assembly avec des noms en conflit. Le Conseiller de mise à niveau recommandera de renommer tout assembly incompatible, et de renommer tout type en conflit ou d'utiliser des noms en deux parties dans le code pour faire référence à ce type d'utilisateur préexistant. Si une mise à niveau de base de données détecte un assembly utilisateur avec un nom en conflit, elle renommera automatiquement cet assembly et placera la base de données en mode suspect. Si un type d'utilisateur avec un nom en conflit existe pendant la mise à niveau, aucune étape spéciale n'est suivie. Après la mise à niveau, l'ancien type d'utilisateur et le nouveau type de système existeront tous deux. Le type d'utilisateur sera disponible uniquement en utilisant des noms en deux parties. |
Assemblys CLR |
SQL Server 2008 installe .NET Framework 3.5 SP1, qui met à jour les bibliothèques dans le GAC (Global Assembly Cache). Si des bibliothèques non prises en charge sont inscrites dans une base de données SQL Server, votre application SQL Server peut cesser de fonctionner après la mise à niveau vers SQL Server 2008. Cela est dû au fait que la maintenance ou la mise à niveau de bibliothèques dans le GAC ne met pas à jour les assemblys à l'intérieur de SQL Server. Si un assembly existe dans une base de données SQL Server et dans le GAC, les deux copies de l'assembly doivent être exactement les mêmes. Si ce n'est pas le cas, une erreur se produit lorsque l'assembly est utilisé par l'intégration du CLR SQL Server. Pour plus d'informations, consultez Bibliothèques .NET Framework prises en charge. Après la mise à niveau de votre base de données, effectuez la maintenance ou la mise à niveau de la copie de l'assembly à l'intérieur de vos bases de données SQL Server avec l'instruction ALTER ASSEMBLY. Pour plus d’informations, consultez l'article 949080 de la Base de connaissances. Exécutez la requête suivante dans votre base de données pour détecter si vous utilisez une bibliothèque .NET Framework non prise en charge dans votre application.
|
Routines CLR |
Le recours à l'emprunt d'identité dans des fonctions CLR définies par l'utilisateur, des agrégats définis par l'utilisateur ou des types définis par l'utilisateur (UDT) peut entraîner une défaillance de votre application avec l'erreur 6522 suite à une mise à niveau vers SQL Server 2008. Les scénarios suivants réussissent dans SQL Server 2005 mais échouent dans SQL Server 2008. Des résolutions sont fournies pour chaque scénario.
|
Vues de gestion dynamique
Vue |
Description |
---|---|
sys.dm_os_sys_info |
Suppression des colonnes cpu_ticks_in_ms et sqlserver_start_time_cpu_ticks. |
sys.dm_exec_query_resource_semaphores sys.dm_exec_query_memory_grants |
La colonne resource_semaphore_id n'est pas un ID unique dans SQL Server 2008. Cette modification peut affecter l'exécution de la requête de résolution des problèmes. Pour plus d'informations, consultez sys.dm_exec_query_resource_semaphores (Transact-SQL). |
Erreurs et événements
Caractéristique |
Description |
---|---|
Erreurs de connexion |
Dans SQL Server 2005, l'erreur 18452 est retournée lorsqu'une connexion SQL est utilisée pour la connexion à un serveur configuré pour utiliser uniquement l'authentification Windows. Dans SQL Server 2008, l'erreur 18456 est retournée à la place. |
Plan d'exécution de requêtes
Caractéristique |
Description |
---|---|
Schéma du plan d'exécution XML |
Un nouvel élément SeekPredicateNew est ajouté au schéma du plan d'exécution XML et la séquence xsd englobante (SqlPredicatesType) est convertie en élément <xsd:choice>. À la place d'un ou de plusieurs éléments SeekPredicate, un ou plusieurs éléments SeekPredicateNew peuvent à présent s'afficher dans le plan d'exécution XML. Les deux éléments s'excluent mutuellement. L'élément SeekPredicate est conservé dans le schéma du plan d'exécution XML pour la compatibilité descendante ; toutefois, les plans de requêtes créés dans SQL Server 2008 peuvent contenir l'élément SeekPredicateNew. Les applications qui s'attendent à récupérer uniquement l'enfant SeekPredicate à partir du nœud ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple/QueryPlan/RelOp/IndexScan/SeekPredicates peuvent échouer si l'élément SeekPredicate n'existe pas. Écrivez à nouveau l'application pour qu'elle attende l'élément SeekPredicate ou SeekPredicateNew dans ce nœud. Pour plus d'informations, consultez Améliorations du traitement des requêtes sur les tables et les index partitionnés. |
Schéma du plan d'exécution XML |
Un nouvel attribut IndexKind est ajouté au type complexe ObjectType dans le schéma du plan d'exécution XML. Les applications qui valident de façon stricte les plans SQL Server sur le schéma SQL Server 2005 échouent. |
Transact-SQL
Caractéristique |
Description |
---|---|
Événement DDL ALTER_AUTHORIZATION_DATABASE |
Dans SQL Server 2005, lorsque l'événement DDL ALTER_AUTHORIZATION_DATABASE est déclenché, la valeur « object » est retournée dans l'élément ObjectType du fichier EVENTDATA xml pour cet événement lorsque le type d'entité de l'élément sécurisable dans l'opération de langage de définition de données (DDL) est un objet. Dans SQL Server 2008, le type réel (par exemple, « table » ou « function ») est retourné. |
CONVERT |
Si un style non valide est passé à la fonction CONVERT, une erreur est retournée lorsque la conversion est de type binaire à caractère ou caractère à binaire. Dans les versions antérieures de SQL Server, le style non valide est défini sur le style par défaut pour les conversions binaire à caractère et caractère à binaire. |
GRANT/DENY/REVOKE EXECUTE sur les assemblys |
L'autorisation EXECUTE ne peut pas être accordée, révoquée ou refusée sur les assemblys. Cette autorisation n'a aucun effet et provoque à présent une erreur. Accordez, refusez ou révoquez une autorisation EXECUTE sur les procédures stockées ou fonctions qui font plutôt référence à la méthode d'assembly. |
Autorisations GRANT/DENY/REVOKE sur les types de systèmes |
Les autorisations ne peuvent pas être accordées, révoquées ou refusées sur les types de systèmes. Dans les versions antérieures de SQL Server, ces instructions sont correctement exécutées, mais n'ont aucun effet. Dans SQL Server 2008, une erreur est retournée. |
Clause OUTPUT |
Pour empêcher tout comportement non déterministe, la clause OUTPUT ne peut pas référencer une colonne d'une vue ou fonction table lorsque cette colonne est définie par l'une des méthodes suivantes :
Lorsque SQL Server détecte une telle colonne dans la clause OUTPUT, l'erreur 4186 est générée. Pour plus d'informations, consultez MSSQLSERVER_4186. |
Clause OUTPUT INTO |
La table cible de la clause OUTPUT INTO ne peut pas comporter de déclencheurs activés. |
Option de niveau serveur precompute rank |
Cette option n'est pas prise en charge dans SQL Server 2008. Modifiez dès que possible les applications qui utilisent actuellement cette fonction. |
Indicateur de table READPAST |
L'indicateur de table READPAST ne peut pas être spécifié quand l'option de base de données READ_COMMITTED_SNAPSHOT a la valeur ON et que l'une ou l'autre des conditions suivantes a la valeur True :
Pour spécifier l'indicateur READPAST dans ces cas, supprimez l'indicateur de table READCOMMITTED s'il est présent et incorporez l'indicateur de table READCOMMITTEDLOCK dans la requête. |
sp_helpuser |
Les noms de colonnes suivants qui sont retournés dans le jeu de résultats de la procédure stockée sp_helpuser ont changé.
Nom de colonne précédentNouveau nom de colonne
GroupNameRoleName
Group_nameRole_name
Group_idRole_id
Users_in_groupUsers_in_role
|
Chiffrement transparent des données |
Le chiffrement transparent des données est effectué au niveau d'E/S : la structure de page est non chiffrée en mémoire et chiffrée uniquement lorsque la page est écrite sur disque. Les fichiers de bases de données et les fichiers journaux sont tous deux chiffrés. Les applications tierces qui ignorent le mécanisme SQL Server standard pour accéder aux pages (par exemple, en analysant directement les fichiers de données ou journaux) échouent lorsqu'une base de données utilise le chiffrement transparent des données, car les données sont chiffrées dans les fichiers. De telles applications peuvent exploiter l'API de chiffrement Windows pour développer une solution pour déchiffrer les données à l'extérieur de SQL Server. |
XQuery
Caractéristique |
Description |
---|---|
Prise en charge de la date et de l'heure |
Dans SQL Server 2005, les types de données xs:time, xs:date et xs:dateTime n'ont pas de prise en charge de fuseau horaire. Les données de fuseau horaire sont mappées au fuseau horaire UTC. SQL Server 2008 présente un comportement conforme standard qui a pour conséquence les modifications suivantes :
Modifiez les applications et expressions XQuery pour prendre en compte les nouvelles valeurs de type. Pour plus d'informations, consultez Utilisation de XML avec les types de données time, date, datetime2 et datetimeoffset. |
Expressions XQuery et XPath |
Dans SQL Server 2005, les étapes d'une expression XQuery ou XPath qui commencent par un signe deux-points (« : ») sont autorisées. Par exemple, l'instruction suivante contient un test de nom (CTR02) dans l'expression XPath qui commence par un signe deux-points.
Dans SQL Server 2008, cette utilisation est rejetée, car elle n'est pas conforme aux normes XML. L'erreur 9341 est retournée. Supprimez le signe deux-points de début ou spécifiez un préfixe pour le test de nom, par exemple (n$/CTR02) ou (n$/p1:CTR02). |
Historique des modifications
Mise à jour du contenu |
---|
Ajout d'informations sur les changements importants en matière d'expressions XQuery et XPath. |
Voir aussi