2010-02-11 13 views
5

Ho un'applicazione che carica una grande quantità di dati da Twitter. Abbiamo iniziato a notare alcuni problemi di prestazioni e quindi ho impostato SQL Profiler per il database delle applicazioni. Ho notato che la seguente istruzione SQL è in fase di esecuzione ma non compare da nessuna parte nel mio codice. Pertanto, presumo che SQL Server 2005 o ColdFusion 8 stiano aggiungendo queste istruzioni per qualche motivo.ColdFusion che esegue istruzioni SQL indesiderate

  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
  • Non ho alcun cftransaction nel mio codice
  • Tutte le mie query vengono eseguite da cfqueries. (nessun stored procedure)
  • non sono mai in esecuzione un eseguire o una dichiarazione exec ovunque nel mio codice
  • Tutte queste affermazioni vengono corse dal mio account utente del database definita appositamente per la mia applicazione web
  • Le dichiarazioni contenute nel # 5 e # 6 sono replicato con molti numeri diversi
  • La dichiarazione a # 5 si replica con molte corde diverse

Perché si aggiungono queste affermazioni, sono avevano bisogno, e se non come posso fermarli?

risposta

4

1,2,3,4 possono essere valutate nel codice ColdFusion "normale" - supponendo che sono in versione 8 o 9. Lo fa tutti i tipi di Muoversi nel back-end per assicurarsi che il server di database sia in grado e pronto a restituire automaticamente le informazioni che ColdFusion richiede come parte di CFQUERY, anche se potrebbe non essere esplicitamente richiesto nella propria query effettiva.

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

ho idea che cosa il 5 e 6 stanno facendo.

Inoltre, stai usando Adobe fornisce MS SQL Driver o stai utilizzando il driver MS JDBC SQL?Esistono alcune differenze tra l'utilizzo dei due driver:

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

2

Non è affatto anormale vedere le istruzioni visualizzate nel profiler che in realtà non si inviano esplicitamente dal codice.

Ma questo è il punto chiave - non è esplicitamente inviarli, ma sono fatto implicitamente come conseguenza delle azioni che si stanno eseguendo/come si sta facendo loro.

ad es. se hai aperto un recordset in VB6 e poi lo iterate intorno, vedresti (ad esempio) chiamate sp_cursor che passano attraverso il profiler - ora questi non vengono chiamati esplicitamente dal codice, ma sono il risultato dell'ADO che avanza attraverso il recordset connesso.

Spero di aver fatto una sorta di senso

Problemi correlati