SR0009: Evite usar tipos de longitud variable cuyo tamaño sea 1 ó 2

Identificador de regla

SR0009

Categoría

Microsoft.Design

Cambio problemático

Causa

Uno o varios tipos de datos de longitud variable tienen una longitud de 1 o 2.

Descripción de la regla

Al utilizar tipos de datos de longitud variable como VARCHAR, NVARCHAR y VARBINARY, incurre en un costo de almacenamiento adicional para realizar el seguimiento de la longitud del valor almacenado en el tipo de datos. Además, las columnas de longitud variable se almacenan después de todas las columnas de longitud fija, lo que puede afectar al rendimiento.

Nota

También recibirá una advertencia si declara un tipo de de longitud variable, como VARCHAR, pero no especifica la longitud. Esta advertencia se produce porque, si está sin especificar, la longitud predeterminada es 1.

Cómo corregir infracciones

Si la longitud del tipo va a ser muy pequeña (tamaño 1 ó 2) y coherente, declárela como un tipo de longitud fija, por ejemplo, CHAR, NCHAR y BINARY.

Cuándo suprimir advertencias

Esta advertencia no se debe suprimir.

Ejemplo

En este ejemplo se muestran las definiciones para dos tablas. En la primera tabla se declara una cadena de longitud variable para que tenga longitud 2. En la segunda tabla se declara una cadena de longitud fija en su lugar, lo que evita la advertencia.

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]

Los datos para los tipos de longitud variable se almacenan físicamente después de los datos de tipos de longitud fija. Por consiguiente, producirá el movimiento de los datos si cambia una columna de longitud variable a fija en una tabla que no está vacía.

Vea también

Conceptos

Analizar el código de base de datos para mejorar la calidad del código