SR0009: Evite usar tipos de comprimento variável que são de tamanho 1 ou 2

RuleId

SR0009

<strong>Categoria</strong>

Microsoft.design

Alteração significativa

Quebrando

Causa

Um ou mais tipos de dados de comprimento variável tem um comprimento de 1 ou 2.

Descrição da regra

Quando você usa os tipos de dados de comprimento variável, como, por exemplo, VARCHAR, NVARCHAR e VARBINARY, incorrer em um custo de armazenamento adicional para controlar o tamanho do valor armazenado no tipo de dados. Além disso, as colunas de comprimento variável são armazenadas após todas as colunas de comprimento fixo, que pode ter implicações de desempenho.

ObservaçãoObservação

Você também receberá um aviso se você declarar um tipo de comprimento variável, como, por exemplo, VARCHAR, mas você não especificar nenhum comprimento. Este aviso ocorre porque, se não for especificado, o comprimento padrão é 1.

Como corrigir violações

Se o comprimento do tipo será muito pequeno (tamanho de 1 ou 2) e consistente, declará-los como um tipo de comprimento fixo, como, por exemplo, CHAR, NCHAR e binário.

Quando suprimir avisos

Você não deve suprimir esse aviso.

Exemplo

Este exemplo mostra definições de duas tabelas. A primeira tabela declara uma seqüência de caracteres de comprimento variável para ter comprimento 2. A segunda tabela declara uma seqüência de caracteres de comprimento fixo em vez disso, o que evita que o aviso.

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]

Dados para tipos de comprimento variável são armazenados fisicamente depois que os dados para tipos de comprimento fixo. Portanto, você fará com que a movimentação de dados se você alterar uma coluna de variável para o comprimento fixo em uma tabela que não está vazio.

Consulte também

Conceitos

Analisando o código do banco de dados para melhorar a qualidade do código