Pergunta

Eu herdei um projeto de site asp.net que atualmente executa o SQL Server 2000 como seu backend.

Eu tenho feito alguns bancos de dados alterações em uma cópia local do db usando o SQL Server 2005 Express. Eu tenho criar uma tabela utilizando colunas varchar(max). Eles são usados ??para trechos armazenados de XHTML que são de comprimento arbitrário.

Enquanto navega em torno de stackoverflow me deparei com esta: Há alguma desvantagem para sempre usando nvarchar (MAX)?

mattruma usuário diz que ele descobriu o "caminho duro" sobre o uso de varchar(max) em SQL Server 2000.

O que devo usar em vez de varchar(max) dado que as corridas de banco de dados ao vivo sobre SQL Server 2000?

Agradecemos antecipadamente por qualquer ajuda!

Foi útil?

Solução

Parece que as limitações varchar(MAX) são um ponto discutível se o seu DB ao vivo é SQL Server 2000, que não apoiá-los. Se você tiver mais de 8K caracteres para armazenar você está praticamente deixado com a única outra opção, uma coluna TEXT. No entanto, cuidado que colunas TEXT têm uma série de limitações também.

Por exemplo, você não pode tipo ou grupo de-los facilmente, nem você pode compará-los para equivalência com outras colunas. Isso é que você não pode dizer Select * from mytable where Mytext1 = mytext2.

Outras preocupações relevantes:

  • Eu sugiro usar uma coluna NText ou NVarchar independentemente da maneira que você vá para suportar Unicode.
  • Se a tabela tem um monte de outras colunas ea coluna varchar(8000) é provável que seja frequentemente perto de cheia, você pode ter problemas com o limite de linhas de 8K. Tenha isso em mente também.

Outras dicas

VARCHAR(Max) foi introduzido no SQL Server 2005, e não vai funcionar no SQL Server 2000. Você precisa usar VARCHAR(8000) assumindo que será grande o suficiente. Caso contrário, você vai precisar usar TEXT

Editar

Além disso, se você alternar para VARCHAR(8000) manter em mente que há um limite que uma única linha não pode ter mais do que 8060 bytes. Então, se você encher uma mesa varchar(8000) e tem um monte de outras colunas grandes você receberá um erro. Este é o lugar onde Text entra.

Text tem implicação desempenho porque, por padrão ele é armazenado em um local separado, e eles manter um ponteiro em uma tabela. Há uma opção de conjunto que muda esse comportamento para que tipos de texto são mantidos na tabela até que atinjam um determinado tamanho. Se você tiver em sua maioria pequenas bolhas que você pode desejar para permitir isso.

Use uma coluna TEXT.

Isso depende de suas necessidades. Você pode usar uma coluna de texto em vez de VARCHAR (MAX), mas você tem que ter certeza que sua implementação não precisa procurar nesse campo, como você não pode fazer como comparações sobre campos de texto e NTEXT.

Se você pode limitar-se a 8000 caracteres, eu usaria uma coluna VARCHAR (8000) para armazenar as informações.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top