SR0009: Evitare l'utilizzo di tipi di lunghezza di variabile con dimensione 1 o 2

RuleId

SR0009

Category

Microsoft.Design

Breaking Change

Breaking

Causa

Uno o più tipi di dati di lunghezza variabile dispongono di una lunghezza di 1 o 2.

Descrizione della regola

Quando si utilizzano tipi di dati di lunghezza variabile quale VARCHAR, NVARCHAR e VARBINARY, si incorre in un costo di archiviazione aggiuntivo per localizzare la lunghezza del valore archiviato nel tipo di dati. Inoltre, le colonne di lunghezza variabile vengono archiviate dopo tutte le colonne di lunghezza fissa. Questo può influire sulle prestazioni.

Nota

Si riceverà anche un avviso se si dichiara un tipo di lunghezza variabile, quale VARCHAR, ma non si specifica la lunghezza. Questo avviso viene visualizzato perché, se non specificata, la lunghezza predefinita è 1.

Come correggere le violazioni

Se la lunghezza del tipo sarà molto piccola (con dimensione 1 o 2) e coerente, dichiararla come un tipo di lunghezza fissa, ad esempio CHAR, NCHAR e BINARY.

Esclusione di avvisi

Non escludere tale avviso.

Esempio

In questo esempio vengono mostrate le definizioni relative a due tabelle. La prima tabella dichiara una stringa di lunghezza variabile per ottenere lunghezza 2. La seconda tabella dichiara una stringa di lunghezza fissa, che consente di evitare l'avviso.

CREATE TABLE [dbo].[TableWithWarning]
( 
[ID] INT NOT NULL IDENTITY(0, 1), 
[c1] INT NOT NULL PRIMARY KEY, 
[c2] INT,
[c3] INT,
[SmallString] VARCHAR(2)
)
ON [PRIMARY]

CREATE TABLE [dbo].[FixedTable]
( 
[ID] INT NOT NULL IDENTITY(0, 1), 
[c1] INT NOT NULL PRIMARY KEY, 
[c2] INT,
[c3] INT,
[SmallString] CHAR(2)
)
ON [PRIMARY]

I dati dei tipi di lunghezza variabile vengono archiviati fisicamente dopo i dati dei tipi di lunghezza fissa. Si verificherà quindi uno spostamento dei dati se si modifica la lunghezza di una colonna da variabile a fissa in una tabella non vuota.

Vedere anche

Concetti

Analisi del codice di database per migliorare la qualità del codice