none
Output Profiler exec sp_cursorfetch RRS feed

  • Domanda

  • Salve a tutti, da inesperto, chiedo se qualcuno mi dà qualche informazione circa l'output prodotto tramite una traccia di Profiler..

    exec sp_cursorfetch 180186135,2,0,1

    capisco che viene lanciata una funzione "sp_cursorfetch" ma i parametri successivi?.... e come mai questa ri ripete moltissime volte tra l'inizio e la fine di una transazione?...

    esiste una "spiegazione for dummies"?....

    Grazie..


    Marco

    giovedì 12 luglio 2018 12:11

Risposte

  • Ciao,
    "interpreto" dal link https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-cursorfetch-transact-sql?view=sql-server-2017, che dettaglia appunto l'istruzione sp_cursorfetch.

    Il primo valore è l'handle del cursore, il valore col quale viene identificato. Tale valore è assegnato dalla SP sp_cursoropen alla creazione del cursore.

    Il secondo parametro è il fetchtype, ovvero la modalità con cui il cursore interroga i records. Nel tuo caso, il valore di 2 corrisponde a NEXT, che preleva un dato numero di righe (segnalato dal parametro 4, nel tuo caso = 1).

    Il terzo valore è detto rownum, ed è un parametro opzionale utilizzato per specificare il posizionamento nel recordset. Viene utilizzato solo su fetchtypes specifici, il tuo NEXT ignora un eventuale valore di rownum.

    Infine, l'ultimo parametro, nrows, è opzionale e specifica quante righe prelevare in lettura.

    Riassumendo, la tua istruzione esegue la lettura dell'n-sima riga del cursore contrassegnato da handle 180186135, e la sua esecuzione ripetuta dovrebbe essere data dal fatto che il compito di un cursore, tipicamente, è quello di ciclare un recordset un record alla volta.

    Spero di esserti stato utile


    Emiliano Musso

    giovedì 12 luglio 2018 14:48