2010-02-11 4 views
5

J'ai une application qui charge une grande quantité de données à partir de Twitter. Nous avons commencé à remarquer des problèmes de performances et j'ai donc installé SQL Profiler pour la base de données des applications. J'ai remarqué que l'instruction SQL suivante est en cours d'exécution mais n'apparaît nulle part dans mon code. Par conséquent, je suppose que SQL Server 2005 ou ColdFusion 8 ajoutent ces instructions pour une raison quelconque.ColdFusion exécuter des instructions SQL indésirables

  1. SET TRANSACTION ISOLATION LEVEL READ COMMITTED
  2. SET FMTONLY ON select Title from Links where 1=2 SET FMTONLY OFF
  3. exec [sys].sp_datatype_info_90 -9,@ODBCVer=4
  4. EXEC sp_executesql N'set implicit_transactions off select USER_NAME() select usertype,type,name from systypes where usertype>=257'
  5. EXEC sp_execute 16,'iTunes Store'
  6. exec sp_unprepare 28
  • Je n'ai pas de cftransaction dans mon code
  • Toutes mes requêtes sont exécutées à partir de cfqueries. (pas de procédures stockées)
  • Je ne suis jamais en cours d'exécution d'une instruction EXECUTE ou exec partout dans mon code
  • Toutes ces déclarations sont couru de ma base de données compte utilisateur spécialement mis en place pour mon application web
  • Les déclarations contenues dans # 5 et # 6 sont répliquées avec de nombreux numéros différents
  • La déclaration n ° 5 est reproduit avec beaucoup de chaînes différentes

Pourquoi ces déclarations sont ajoutés, sont-ils nécessaires et sinon comment puis-je les arrêter?

Répondre

4

1,2,3,4 peuvent être comptabilisés dans le code ColdFusion « normal » - en supposant que vous êtes sur la version 8 ou 9. Il fait toutes sortes de Déplacez-vous dans le backend pour vous assurer que le serveur de base de données est capable et prêt à renvoyer automatiquement les informations que ColdFusion demande dans le cadre de CFQUERY, même si cela n'est pas explicitement demandé dans votre requête.

http://www.forta.com/blog/index.cfm/2007/7/6/ColdFusion-8-Can-Return-Identity-Values

Je ne sais pas ce que 5 et 6 font.

De même, utilisez-vous Adobe Driver MS SQL ou utilisez-vous MS JDBC SQL Driver?Il existe certaines différences entre l'utilisation des deux pilotes:

http://cfsearching.blogspot.com/2008/03/cf8-ms-jdbc-12-driver-and-for-my-next.html

2

Il n'est en aucun cas anormal de voir apparaître dans le profileur des instructions que vous ne vous exposez pas explicitement à partir du code.

Mais c'est le point clé - vous ne explicitement les envoyer, mais ils sont implicitement fait à la suite des actions que vous effectuez/comment vous les faites.

par exemple. Si vous avez ouvert un jeu d'enregistrements dans VB6, puis l'avez parcouru, vous verriez (par exemple) les appels sp_cursor via le profileur. Ces derniers ne sont pas explicitement appelés par le code, mais résultent du passage d'ADO à travers le jeu d'enregistrements connecté.

J'espère avoir fait une sorte de sens

Questions connexes