Вопрос

Я только что прочитал Максимальная спецификация емкости для SQL Server 2008 и увидел максимум 8060 баллов за ряд? Что позволило ... только 8 КБ в строке? (Да, я увидел специальную обработку «рядное хранилище», я говорю о стандартном поведении)

Я что -то здесь неправильно понял? Я уверен, что у меня есть, потому что я уверен, что видел двоичные объекты с несколькими размерами MB, хранящимися в базах данных SQL Server. Это зловеще за ряд На самом деле означает строку таблицы, как в одной строке, несколько столбцов?

Итак, когда у меня есть три nvarchar Столбцы с каждым 4000 символами (предположим, три юридических документа, написанные в текстовых полетах ...) - сервер выплевывает предупреждение?

Это было полезно?

Решение

Да, вы получите предупреждение на таблице создания, ошибку при вставке или обновлении

Типы LOB (NVARCHAR (MAX), VARCHAR (MAX) и Varbinary (MAX) позволяют 2GB-1 байты, и это то, как вы храните большие куски данных, и это то, что вы видели раньше.

  • Для одного поля> 4000 символов/8000 байтов я бы использовал nvarchar (max)

  • Для 3 x nvarchar (4000) в одном ряду я бы рассмотрел один из:

    • Мой дизайн неверен
    • nvarchar (max) для одного или нескольких столбцов
    • 1: 1 Дочерняя таблица для столбцов "наименьшего населения"

Другие советы

2008 год будет справляться с переполнением в 2000 году, он просто отказался бы вставить запись, которая переполнена. Тем не менее, все еще лучше дизайн с учетом этого, потому что значительное количество переполненных записей может вызвать некоторые проблемы с производительностью в запросе. В случае описания, я мог бы рассмотреть соответствующую таблицу с столбцом для типа документа, большое поле для документа и иностранное ключ к интенсивной таблице. Однако, если в отличие от того, что все три столбца будут заполнены в одной и той же записи или в максимальных значениях, то дизайн может быть в порядке. Вы должны знать свои данные, чтобы определить, что лучше. Еще одно соображение - продолжить, как у вас сейчас, пока у вас не возникнут проблемы, а затем замените отдельную таблицу документов. Вы можете даже рефактор, переименуя существующую таблицу и создав новый, а затем создав представление с существующим именем таблицы, которое извлекает данные из новой структуры. Это может не дать вам разорвать ваш код, хотя вам все равно придется отрегулировать любые операторы вставки или обновления.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top