MODÈLE : SET CONCAT_NULL_YIELDS_NULL peut provoquer des procédures pour compiler stockées

IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique.

294942
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Symptômes
Si une procédure stockée contient l'instruction SET CONCAT_NULL_YIELDS_NULL et l'instruction modifie le paramètre actuel de CONCAT_NULL_YIELDS_NULL, la procédure est recompilée chaque exécution qu'il. Cela peut conduire à des problèmes de performances.
Cause
Recompilation est nécessaire car la modification de sa de CONCAT_NULL_YIELDS_NULL répercute le résultat et la manière dont que les commandes sont interprétés. Dans SQL Server 7.0 et SQL Server 2000, CONCAT_NULL_YIELDS_NULL est défini sur par défaut, conformément aux normes ANSI.

Si CONCAT_NULL_YIELDS_NULL DÉSACTIVÉE à la base de données au niveau ne produit pas le résultat souhaité car ODBC et OLE DB défini cette propriété sur lorsqu'ils se connectent. (Cela n'étant spécifiée par un peu dans le paquet de connexion, Générateur de profils ne pas affiche que cette propriété est en cours définie.)
Contournement
Ne définissez pas CONCAT_NULL_YIELDS_NULL à l'intérieur de la procédure stockée. La solution recommandée est d'utiliser la fonction ISNULL lors de la concaténation des chaînes.

Par exemple, une requête doit être écrit comme suit :
SELECT * FROM mytable WHERE name LIKE 'Xavier ' + ISNULL(@lastname,'') + '%'				
plutôt que comme suit :
SELECT * FROM mytable WHERE name LIKE 'Xavier ' + @lastname + '%'				
bien que non recommandé, une autre solution consisterait à émettre l'instruction SET CONCAT_NULL_YIELDS_NULL avant d'exécuter la procédure stockée.
Plus d'informations
Cet article adresses uniquement une raison qui stockées les procédures peut être recompilé ; pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
243586 Fichier INF: dépannage de recompilation d'une procédure stockée

Avertissement : Cet article a été traduit de manière automatique

Propriétés

ID d'article : 294942 - Dernière mise à jour : 01/16/2015 22:13:20 - Révision : 3.2

  • Microsoft SQL Server 2000 Standard
  • Microsoft SQL Server 7.0 Standard
  • kbnosurvey kbarchive kbmt kbprb KB294942 KbMtfr
Commentaires