2008-08-19 4 views
11

Пошел через эту ошибку сегодня. Хотите знать, если кто-нибудь может сказать мне, что это значит:SQL Server Максимальный размер строки

Невозможно отсортировать строку размером 9522, который больше, чем допустимый максимум 8094.

является то, что 8094 байт? Персонажи? Поля? Это проблема, связанная с несколькими таблицами, превышающими некоторый предел?

ответ

10

В SQL Server 2000, ограничение строка 8К байт, что тот же размер, страницу в памяти.

[Редактировать]

В 2005 году размер страницы такой же (8K), но база данных использует указатели на строки на странице, чтобы указать на другие страницы, которые содержат большие поля. Это позволяет 2005 году преодолеть ограничение размера строки 8K.

0

Это используется, чтобы быть проблемой в SQL Server 2000, но я подумал, что было зафиксировано в 2005 году

0

8094 байт.

Если вы перечислите дополнительную информацию о том, что вы делаете, это может помочь нам разобраться в фактической причине.

7

Проблема, которая, как представляется, ломает много людей, заключается в том, что вы можете создать таблицу, которая по определению будет содержать более 8 Кбайт данных, и она примет ее просто отлично. И таблица будет работать нормально, вплоть до момента, когда вы на самом деле пытаетесь вставить в таблицу больше 8K данных.

Итак, предположим, вы создаете таблицу с целым полем, для первичного ключа и 10 полей varchar (1000). Таблица будет работать отлично в большинстве случаев, так как количество раз, когда вы заполняете все 10 полей varchar (1000), будет очень мало. Howerver, даже если вы попытались поместить 1000 символов в каждое из полей, это даст вам ошибку, упомянутую в этом вопросе.

+0

@Erik Кибби : Да, у нас есть несколько столов с слишком большими рядами. Я неоднократно приводил эту проблему (наша база данных является абсолютным беспорядком), но это корпоративный магазин, и никто не хочет слышать о структурных проблемах. С точки зрения вещей, NHibernate на самом деле скрывает эту проблему от нас некоторое время. Но сегодня все пошло на вызов «Удалить» (из всех вещей). – TheSmurf 2008-08-20 02:53:16

2

FYI, выполнив команду SQL на вашу БД может исправить эту проблему, если она вызвана пространством, которое должно быть утилизировано после падения столбцов переменной длины:

DBCC CLEANTABLE (0,[dbo.TableName]) 

См: http://msdn.microsoft.com/en-us/library/ms174418.aspx

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