Condividi tramite


Cursori e blocco

In Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5), l'istruzione SELECT in una definizione di cursore è soggetta alle stesse regole di blocco delle transazioni applicate a qualsiasi altra istruzione SELECT. I blocchi delle transazioni acquisiti da qualsiasi istruzione SELECT, inclusa l'istruzione SELECT in una definizione di cursore, sono controllati da:

  • L'impostazione del livello di isolamento delle transazioni per la connessione.
  • Qualsiasi hint per il blocco specificato nella clausola FROM.

Solo per i cursori per tabelle di base o per indici, il livello di isolamento delle transazioni può avere effetto sui blocchi acquisiti.

Importante

Per il livello di isolamento predefinito READ COMMITTED, SQL Server Compact 3.5 non consente di acquisire i blocchi durante il posizionamento e la lettura dei dati. I cursori in READ COMMITTED richiedono un blocco Sch-S per proteggere la stabilità dello schema mentre il cursore è aperto. I blocchi esclusivi vengono acquisiti se vengono modificati i dati.

I blocchi vengono mantenuti attivi fino al termine della transazione corrente per i cursori e per le istruzioni SELECT indipendenti.

Acquisizione di blocchi

Sebbene i cursori seguano le stesse regole delle istruzioni SELECT indipendenti in relazione al tipo di blocchi delle transazioni acquisiti, i blocchi vengono acquisiti in momenti diversi. I blocchi generati da un'istruzione SELECT indipendente o da un cursore vengono sempre acquisiti quando è necessaria una riga. Per un'istruzione SELECT indipendente, tutte le righe vengono recuperate quando viene eseguita l'istruzione. I cursori recuperano le righe in momenti diversi in base al tipo di cursore:

  • I cursori statici consentono di recuperare l'intero set di risultati nel momento in cui il cursore viene aperto. In questo modo ogni riga del set di risultati viene bloccata in fase di apertura.
  • I cursori gestiti da keyset consentono di recuperare le chiavi di ogni riga del set di risultati nel momento in cui il cursore viene aperto. In questo modo ogni riga del set di risultati viene bloccata in fase di apertura.
  • I cursori forward-only non consentono di recuperare le righe finché non vengono lette. I blocchi vengono acquisiti sulle righe solo nel momento in cui vi vengono posizionati.

Vedere anche

Concetti

Tipi di cursori
Scelta del tipo di cursore
Conversioni implicite dei cursori
Aggiornamento di cursori gestiti da keyset

Guida e informazioni

Assistenza (SQL Server Compact 3.5 Service Pack 1)