SET NOCOUNT e cursori -
10-20-2005
, 04:43 AM
Buongiorno a tutti,
ho un DTS che contiene tra le altre cose un "Execute SQL Task" che
lancia una SP.
All'interno della SP (abbastanza articolata) c'è un cursore che ogni
volta che fa un loop, per ragioni che non sto a spiegare, fa una select
con un codice di processo.
La procedure lanciata da Query Analyzer si pianta ("resource is too
low") dopo un certo tempo per il numero elevato di recordset in uscita.
Va bene, me lo aspettavo.
Quello che non mi aspettavo è che messa all'interno del task del DTS e
lanciata (sia con l'execute step sia lanciando il DTS globale) sembra
che il cursore faccia il fetch delle prime 10-15 righe delle 1000
preventivate, eseguendo la procedura (e quindi la select) per poi
uscire senza messaggi d'errore.
SOLUZIONE:
All'interno della procedura ma all'esterno del cursore c'è un SET
NOCOUNT. Commentandolo il cursore esegue il fetch su tutte le righe
della select anche dal DTS.
DOMANDE:
Qualcuno ha mai riscontrato un problema del genere?
C'è una spiegazione a questo comportamento?
Grazie mille (e tanti complimenti) a tutti coloro che sapranno
rispondermi.
Davide |