SQL Server Максимальный размер строки

Наткнулся сегодня на эту ошибку. Хотите знать, если кто-нибудь может сказать мне, что это значит:

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

Это 8094 байта? Символы? Поля? Является ли это проблемой объединения нескольких таблиц, превышающих некоторый лимит?

19.08.2008 19:32:38
6 ОТВЕТОВ
РЕШЕНИЕ

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

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

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

10
19.08.2008 19:39:20

Раньше это было проблемой в SQL 2000, но я думал, что это было исправлено в 2005 году.

0
19.08.2008 19:35:17

8094 байта.

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

0
19.08.2008 19:37:06

Этот пост справляется с попытками объяснить это (в контексте SQL 2005):

http://www.consortioservices.com/Blog/2008/02/28/MaximumRowSizeInSQLServer2005ToTheLimit.aspx

3
19.08.2008 19:38:11

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

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

7
19.08.2008 20:33:35
@Erik Kibbee: Да, у нас есть несколько таблиц со слишком большими строками. Я поднимал эту проблему несколько раз (наша база данных - полный беспорядок), но это корпоративный магазин, и никто не хочет слышать о структурных проблемах. Судя по всему, NHibernate уже давно скрывает эту проблему от нас. Но все взорвалось сегодня по вызову удаления (всех вещей).
TheSmurf 20.08.2008 02:53:16

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

DBCC CLEANTABLE (0,[dbo.TableName])

Смотрите: http://msdn.microsoft.com/en-us/library/ms174418.aspx

2
30.03.2010 19:00:15