Accedi con Microsoft
Accedi o crea un account.
Salve,
Seleziona un altro account.
Hai più account
Scegli l'account con cui vuoi accedere.

Sintomi

Considerare lo scenario descritto di seguito:

  • Si inseriscono molte righe in una tabella in Microsoft SQL Server 2008 o in SQL Server 2008 R2 tramite una delle query seguenti:

    • INSERT INTO <target_table> SELECT * FROM <target_table> WHERE <predicate>
    • SELECT * INTO <target_table> FROM <source_table> WHERE <predicate>

    Note

    • Il segnaposto <target_table> rappresenta il nome effettivo della tabella di destinazione.

    • Il segnaposto ><predicato rappresenta il predicato effettivo.

    • Il segnaposto <source_table> rappresenta la tabella di origine effettiva.

  • Viene superata la soglia di escalation dei blocchi della tabella.

In questo scenario, il motore di database non aumenta i blocchi della tabella.

Causa

Questo problema si verifica perché in SQL Server non vengono conteggiati internamente tutti i nuovi blocchi generati da operazioni di inserimento. La soglia di escalation dei blocchi potrebbe pertanto non essere attivata quando necessario.

Risoluzione

Informazioni sui Service Pack per SQL Server 2008

Per risolvere il problema, ottenere il Service Pack più recente per SQL Server 2008. per altre informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base seguente per visualizzare l'articolo:

968382 Come ottenere il Service Pack più recente per SQL Server 2008

Informazioni sui Service Pack per SQL Server 2008 R2

Per risolvere il problema, ottenere il Service Pack più recente per SQL Server 2008 R2. Per altre informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base seguente per visualizzare l'articolo:

2527041Come ottenere il Service Pack più recente per SQL Server 2008 R2

Stato

Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".Questo problema è stato risolto per la prima volta in SQL Server 2008 Service Pack 2 per SQL Server 2008. questo problema è stato risolto per la prima volta in SQL Server 2008 R2 Service Pack 1 per SQL Server 2008 R2.

Ulteriori informazioni

Per altre informazioni sull'escalation dei blocchi, visitare il sito Web Microsoft TechNet seguente:

Informazioni generali sull'escalation dei blocchiPer determinare se i blocchi di una tabella vengono escalati, eseguire le istruzioni Transact-SQL seguenti:

USE tempdbGOCREATE TABLE x (i INT NOT NULL PRIMARY KEY)GOBEGIN TRANINSERT xSELECT TOP (40000)ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rFROM master..spt_values a, master..spt_values bORDER BYrSELECTCOUNT(*)FROM sys.dm_tran_locksWHERE request_session_id = @@SPID ROLLBACKGODROP TABLE x 

Se i blocchi della tabella vengono escalati, l'ultima istruzione SELECT restituisce un valore pari a 1 o 2. Se i blocchi della tabella non vengono escalati, l'ultima istruzione SELECT restituisce un valore di 40.066 o 40.067.

Serve aiuto?

Vuoi altre opzioni?

Esplorare i vantaggi dell'abbonamento e i corsi di formazione, scoprire come proteggere il dispositivo e molto altro ancora.

Le community aiutano a porre e a rispondere alle domande, a fornire feedback e ad ascoltare gli esperti con approfondite conoscenze.

Queste informazioni sono risultate utili?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?
Premendo Inviare, il tuo feedback verrà usato per migliorare i prodotti e i servizi Microsoft. L'amministratore IT potrà raccogliere questi dati. Informativa sulla privacy.

Grazie per il feedback!

×