FIX: Il blocco di una tabella non è escalation quando si inserisce il numero di righe in una tabella in SQL Server 2008

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 2448971

Sintomi
Si consideri il seguente scenario:

  • Per inserire più righe in una tabella in Microsoft SQL Server 2008 utilizzando uno dei seguenti query:
    • INSERT INTO <target_table> SELECT * FROM <target_table> WHERE <predicate>
    • SELECT * INTO <target_table> FROM <source_table> WHERE <predicate>
    Note
    • Il<target_table></target_table>rappresenta il nome della tabella di destinazione effettiva.
    • Il<predicate></predicate>segnaposto rappresenta il predicato effettivo.
    • Il<source_table></source_table>segnaposto rappresenta la tabella di origine.
  • Viene superata la soglia di escalation di blocco della tabella.
In questo scenario, il motore di database non inoltrare i blocchi della tabella.
Cause
Questo problema si verifica perché SQL Server non esegue il conteggio internamente tutti i nuovi blocchi generati da operazioni INSERT. Pertanto, la soglia di escalation dei blocchi non potrebbe essere attivata quando è necessario.
Risoluzione

Informazioni di Service pack

Per risolvere il problema, procurarsi l'ultimo service pack per SQL Server 2008.

Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base:
968382Come ottenere il service pack più recente per SQL Server 2008
Status
Microsoft ha confermato che si tratta di un problema con i prodotti elencati nella sezione "Si applica a".
Il problema è stato risolto in SQL Server 2008 Service Pack 2 per SQL Server 2008.

Informazioni
Per ulteriori informazioni sull'escalation dei blocchi, visitare il seguente sito Web Microsoft TechNet:
Per determinare se sono l'escalation blocchi di una tabella, eseguire le seguenti istruzioni Transact-SQL:
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 vengono eseguita l'escalation blocchi della tabella, l'ultima istruzione SELECT restituisce un valore di uno1oppure2. Se non sono l'escalation blocchi della tabella, l'ultima istruzione SELECT restituisce un valore di uno40,066oppure40,067.


Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 2448971 - Ultima revisione: 11/05/2010 07:53:00 - Revisione: 2.0

Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Developer

  • kbqfe kbfix kbexpertiseadvanced kbsurveynew kbmt KB2448971 KbMtit
Feedback