Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Não é possível criar uma linha de tamanho 8937 maior que o máximo permitido de 8060


O erro é causado porque você não pode ter uma linha no SQL Server maior que 8 KB (o tamanho de 1 página) porque as linhas não podem abranger páginas - é um limite básico do SQL Server, você pode ler mais sobre isso aqui:

Observe que o SQL Server permitirá que você crie a tabela, no entanto, se você tentar inserir qualquer dado que abranja várias páginas, ele apresentará o erro acima.

É claro que isso não faz sentido, porque se o que foi dito acima fosse toda a verdade, então um único VARCHAR(8000) coluna preencheria uma linha em uma tabela! (Isso costumava ser o caso). O SQL Server 2005 contornou essa limitação permitindo que determinados dados de uma linha fossem armazenados em outra página e, em vez disso, deixando um ponteiro de 24 bytes. Você pode ler sobre isso aqui:

Como você pode ver, isso agora significa que as linhas agora podem abranger várias páginas, no entanto, as linhas de coluna única ainda precisam caber em uma única página (portanto, o tamanho máximo de uma coluna é VARCHAR(8000) ) e ainda há um limite no número total de tais colunas que você pode ter (cerca de 8000 / 24 =~ 300 pela minha estimativa)

Claro que tudo isso está perdendo o ponto principal, que é que 400 colunas largas em uma única tabela é um absurdo!!!

Você deve dar uma boa olhada no esquema do seu banco de dados e chegar a algo mais razoável - você pode começar escolhendo algumas estimativas mais conservadoras nos tamanhos das colunas (como VARCHAR(255) ou VARCHAR(50) ), mas você realmente precisa dividir alguns desses campos em tabelas separadas.