Ce document décrit pourquoi l'ordre des résultats de la requête SQL par DateTime pour la table Route_Call_Detail ou la table Termination_Call_Detail entre Microsoft SQL version 6.5 et 7.0 est différent et fournit une solution de contournement dans un environnement Cisco Intelligent Contact Management (ICM).
Cisco recommande de posséder des connaissances sur ces sujets :
Cisco ICM
Microsoft SQL
Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :
Cisco ICM
Microsoft SQL Server versions 6.5 et 7.0
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
Pour plus d'informations sur les conventions utilisées dans ce document, reportez-vous à Conventions relatives aux conseils techniques Cisco.
Lorsque vous effectuez une mise à niveau vers Cisco ICM version 4.6.2 ou ultérieure, Microsoft SQL Server version 6.5 est mis à niveau vers la version 7. Après la mise à niveau, l'exécution de la requête SQL sur la table Route_Call_Detail ou la table Termination_Call_Detail sur le système ICM qui exécute SQL version 7 renvoie des résultats différents de ceux de SQL version 6.5. Consultez cette requête SQL :
Figure 1 : Requête Microsoft SQL Server
Lorsque vous comparez les résultats de l'exécution de la même requête SQL sur l'ancien système ICM qui exécute SQL version 6.5, le contenu est identique. Cependant, les nouveaux résultats ne sont pas dans l'ordre croissant DateTime comme les résultats d'origine. Avant la mise à niveau, cette requête a renvoyé les données dans l'ordre DateTime. Depuis la mise à niveau, les données ne sont pas retournées dans l'ordre DateTime, comme indiqué ici.
Figure 2 : Résultats de la requête SQL dans l'ordre DateTime
Après la mise à niveau de SQL version 6.5 vers la version 7.0, les résultats des requêtes de sélection effectuées sur Route_Call_Detail ou Termination_Call_Detail ne sont plus dans l'ordre DateTime. Une clause order by doit être insérée afin d'obtenir les résultats DateTime. Il s'agit d'un problème car la clause order by peut ajouter une surcharge importante aux requêtes Route_Call_Detail et Termination_Call_Detail, ce qui peut produire des jeux de résultats très volumineux.
L'ordre par clé primaire dans SQL Server version 6.5 provient de l'ancien système Sybase d'où provient Microsoft SQL. Microsoft a renforcé la conformité à la norme SQL dans SQL Server version 7.0 qui ne garantit pas une commande sans clause order by dans la requête SQL. Il s'agit d'une base de données relationnelle et non d'un fichier séquentiel physique. Il n'y a pas de séquence supposée dans une base de données relationnelle comme il y en a dans un fichier séquentiel physique. Par conséquent, il est nécessaire d'utiliser une clause order by pour établir une séquence dans le résultat.
Remarque : il ne s'agit pas d'un problème Cisco. Il s'agit d'un problème standard de Microsoft SQL Server.
Révision | Date de publication | Commentaires |
---|---|---|
1.0 |
07-Jun-2004 |
Première publication |