2016-04-21 5 views
0

У меня есть таблица с более чем 100 столбцами, что такое varchar(200). Мы меняем все столбцы nvarchar, но при запуске альтер сценария мы получаем предупреждающее сообщение, как это:SQL Server: предупреждение о максимальном размере строки

Внимание: В таблице «TABLE_NAME» был создан, но его максимальная строка размер превышает допустимый максимум из 8060 байт. INSERT или UPDATE до эта таблица не будет работать, если итоговая строка превышает ограничение по размеру.

Должен ли я быть встревожен этим или могу ли я просто игнорировать его?

+2

Я был бы обеспокоен наличием стола, который можно было бы начать с самого начала, что бы ни случилось с этим требованием? можете ли вы пересмотреть некоторые типы данных и уменьшить длину? –

+0

Может быть, хорошее время, чтобы посмотреть на нормализацию этих 100 колонок на что-то более управляемое. –

+0

Игнорировать? В самом деле? Ваши вставки и/или обновления могут теперь начать сбой, и вы хотите игнорировать его? –

ответ

1

Проблема актуальна даже без перехода на nvarchar - 200 байт для каждого из 100 столбцов - 20000 байт в строке. Максимальный размер строки в SQL Server равен 8060, как указано в тексте предупреждения. Это только предупреждение, потому что столбцы являются var char, что означает, что они занимают столько места, сколько им действительно необходимо для хранения текущих данных, начиная с нуля. Но если общая длина всего столбца превышает максимальную границу для любой строки - она ​​не удалась - сервер не сможет сохранить эту строку. Вот что такое предупреждение.

+0

Все поля никогда не будут заполняться ни на одной из строк, вставленных в эту таблицу (максимум, возможно, 30). Но я понимаю, что вы говорите. Следует удалить ненужные ... – hs2d

Смежные вопросы