Espero que este post seja útil para você.
http://geekswithblogs.net/johnsPerfBlog/archive/2008/04/16/ntext-vs-nvarcharmax-in-sql-2005.aspx
Principais fatos:
- Por padrão, o TEXT e o NTEXT armazenam o valor do texto na estrutura LOB
- Por padrão, o NVARCHAR (MAX) armazena o valor do texto na estrutura da tabela (a menos que tenha mais de 8000 bytes)
Quando você altera a coluna de TEXT / NTEXT para NVARCHAR (MAX), a maneira como os dados são armazenados não é alterada; ele atualiza apenas os metadados da tabela. A estrutura de dados é alterada apenas na próxima vez que o valor for alterado. Isso pode ser feito imediatamente executando algo como isto:
update mytable set mycolumn1 = mycolumn1
Se você usar a configuração de opção de tabela padrão para NVARCHAR (MAX), os dados em sua tabela serão maiores.
- Você precisará examinar as configurações e o ambiente das opções da tabela antes de alterar a configuração para o que melhor se adequa às suas necessidades.
O tamanho da tabela eventualmente diminuirá se você seguir a instrução alter table com a instrução update table.
Em resumo, se você executar a instrução de atualização, forçando a alteração do armazenamento da estrutura de dados, o tamanho do banco de dados será menor, conforme o esperado.
EDIT : Como você mencionou TEXT e não NTEXT, seu ganho no espaço seria menos óbvio do que você imagina. O NTEXT ocupa o dobro da quantidade de espaço que o TEXT, mas, ao mesmo tempo, você deve esperar que o NVARCHAR (MAX) ocupe cerca de metade do espaço que o NTEXT. Pelo meu cálculo, você veria pouca alteração em relação ao tamanho original do banco de dados.
Crédito especial para http://www.douglubey.com/