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

Sintomi

Si supponga di aggiungere una colonna a una tabella in Microsoft SQL Server 2012 o SQL Server 2014. Quando la dimensione della riga è vicina alla dimensione massima consentita che è di 8.060 byte, l'operazione di aggiunta può richiedere molto tempo.

Causa

Il problema si verifica perché, quando la dimensione totale della riga è vicina alla dimensione massima consentita, SQL Server esegue un'analisi completa della tabella per verificare che l'aggiunta di una nuova colonna non violi l'integrità dei dati. Le versioni precedenti a SQL Server 2012 non eseguono questo controllo e il linguaggio DDL (Data Definition Language) viene eseguito più rapidamente. Tuttavia, questo comportamento genera l'errore delle operazioni successive, ad esempio l'aggiornamento delle righe o la riduzione delle dimensioni delle righe, se la dimensione della riga supera quella consentita.

Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nell'aggiornamento cumulativo precedente. Vedere gli ultimi aggiornamenti cumulativi per SQL Server:

Ulteriori informazioni

  • Puoi attivare il contrassegno di traccia 647 usando il parametro Startup. Per informazioni, vedere Opzioni di avvio del servizio motore di database.

  • Puoi eseguire la query seguente (Sostituisci <nome tabella> con il nome di tabella effettivo) per testare la tabella specifica prima dell'operazione in un sistema di produzione e pianificare l'effetto del problema. Se il risultato è maggiore di 8.060, la tabella è soggetta al problema. Inoltre, se sono state eliminate colonne, è necessario modificare la tabella con l'opzione Rigenera. La ricostruzione della tabella può rendere la query restituire risultati corretti.

    select  1+1+2 + 2 +  (case  when sum (case when leaf_offset < 0 then 1 else 0 end) > 0 then 2 else 0 end)  +  ( (count (*) + 7)/8 ) + count (case when leaf_offset < 0 then 1 else null end) * 2 +  sum( case when max_length=-1 then 24 else max_length end)  from sys.system_internals_partition_columns   col join sys.partitions par on col.partition_id = par.partition_id  where object_id = object_id ('<table name>')  and  index_id in (0,1) and partition_number =1 
  • È possibile valutare l'aggiunta di colonne di lunghezza variabile o colonne di tipo sparse quando l'applicazione aggiunge di frequente nuove colonne alla tabella. Si tratta di un'operazione solo per i metadati, anche se la dimensione totale di tutte le colonne supera i 8.060 byte.

Stato

Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".

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!

×