Domanda

Mi è capitato di leggere il massima Specifica Capacità per SQL Server 2008 e vide un massimo di 8060bytes per riga ? Quello che il ... solo 8 KB per riga ammessi? (Sì, ho visto "stoccaggio di overflow della riga" trattamento speciale, sto parlando di comportamento standard)

Ti ho fraintendere qualcosa qui? Sono sicuro che ho, perché sono sicuro di aver visto oggetti binari con diversi MB Le dimensioni della memorizzato all'interno database di SQL Server. Fa questo inquietante per riga significa veramente una riga di tabella come in una fila, colonne multiple?

Così, quando ho tre colonne nvarchar con ogni 4000 caratteri in là (suppongo tre documenti giuridici scritti in caselle di testo ...) -? Gli spiedi di server un avvertimento

È stato utile?

Soluzione

Sì, si otterrà un messaggio di avviso su CREATE TABLE, un errore sul INSERT o UPDATE

tipi LOB (nvarchar (max), varchar (max) e varbinary (max) consentono 2GB-1 byte che è come ci si memorizzare grandi quantità di dati ed è quello che ci avete visto prima.

  • Per un singolo campo> 4000 caratteri / 8000 byte userei nvarchar (max)

  • Per 3 x nvarchar (4000) in una riga che avevo in considerazione uno dei seguenti:

    • il mio disegno è sbagliato
    • nvarchar (max) per uno o più colonne
    • 1: Tabella 1 bambino per le colonne "meno popolate"

Altri suggerimenti

2008 gestirà l'overflow mentre nel 2000, sarebbe semplicemente si rifiutano di inserire un record che traboccava. Tuttavia, è ancora meglio per progettare con questo in mente, perché un numero significativo di record overflow potrebbe causare alcuni problemi di prestazioni in esecuzione di query. Nel caso che hai descritto, potrei prendere in considerazione una tabella correlata con una colonna per tipo di documento, un grande campo per il documento ed e una chiave esterna alla tabella intial. Se tuttavia è unlikey che tutte e tre le colonne sarebbero riempiti nello stesso record o ai valori massimi, allora il disegno potrebbe andare bene. Devi conoscere i dati per determinare quale sia la migliore. Un'altra considerazione è di continuare come hai ora fino ad avere problemi e poi sostituirli con un tavolo documento separato. Si potrebbe anche refactoring rinominando la tabella esistente e la creazione di uno nuovo e quindi la creazione di una vista con il nome della tabella esistente che estrae i dati dalla nuova struttura. Questo potrebbe mantenere un sacco di vostro codice di rottura, anche se si dovrà ancora per regolare eventuali istruzioni di inserimento o di aggiornamento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top