Подтвердить что ты не робот

Varchar (max) MS SQL Server 2000, проблемы?

Я унаследовал проект веб-сайта asp.net, который в настоящее время запускает SQL Server 2000 в качестве его бэкэнд.

Я делал некоторые изменения баз данных на локальной копии db, используя SQL Server 2005 Express. Я создал таблицу, используя столбцы varchar(max). Они используются для хранения фрагментов XHTML произвольной длины.

Во время просмотра в stackoverflow я столкнулся с этим: Есть ли недостатки в использовании nvarchar (MAX)?

Пользователь mattruma говорит, что он обнаружил "трудный способ" использования varchar(max) на SQL Server 2000.

Что мне следует использовать вместо varchar(max), учитывая, что в SQL Server 2000 работает live-база данных?

Заранее благодарим за помощь!

4b9b3361

Ответ 1

Похоже, что ограничения varchar(MAX) являются спорным вопросом, если ваша живая БД - это SQL Server 2000, которая их не поддерживает. Если у вас есть более 8K символов для хранения, вы в значительной степени остаетесь с единственным другим вариантом, столбец TEXT. Однако будьте осторожны, что столбцы TEXT также имеют множество ограничений.

Например, вы не можете легко сортировать или группировать их, а также не сравнивать их с другими столбцами. То есть вы не можете сказать Select * from mytable where Mytext1 = mytext2.

Другие актуальные проблемы:

  • Я бы предложил использовать столбец NText или NVarchar независимо от того, как вы собираетесь поддерживать Unicode.
  • Если в таблице много других столбцов, а столбец varchar(8000), скорее всего, будет близок к полной, могут возникнуть проблемы с лимитом строки 8K. Помните об этом также.

Ответ 2

VARCHAR(Max) был введен в SQL Server 2005 и не будет работать на SQL Server 2000. Вам нужно использовать либо VARCHAR(8000), предполагая, что он будет достаточно большим. В противном случае вам нужно будет использовать TEXT

Edit

Также, если вы переходите на VARCHAR(8000), помните, что существует ограничение на то, что одна строка не может иметь более 8060 байт. Поэтому, если вы заполните таблицу VARCHAR(8000) и получите кучу других больших столбцов, вы получите сообщение об ошибке. Здесь TEXT входит.

TEXT имеет последствия для производительности, поскольку по умолчанию он хранится в отдельном месте и сохраняет указатель в таблице. Существует опция set, которая изменяет это поведение, чтобы типы текста сохранялись в таблице до тех пор, пока они не достигнут определенного размера. Если у вас в основном маленькие капли, вы можете включить это.

Ответ 3

Используйте столбец TEXT.

Ответ 4

Это зависит от ваших потребностей. Вы можете использовать столбец TEXT вместо VARCHAR (MAX), но вы должны быть уверены, что в вашей реализации не нужно искать в этом поле, так как вы не можете делать сравнения в полях TEXT и NTEXT.

Если вы можете ограничить себя 8000 символами, я бы использовал столбец VARCHAR (8000) для хранения информации.