Вопрос

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

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

Просматривая stackoverflow, я наткнулся на это:Есть ли какие-либо недостатки в том, чтобы всегда использовать nvarchar (MAX)?

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

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

Заранее спасибо за любую помощь!

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

Решение

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

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

Другие соответствующие проблемы:

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

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

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

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

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

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

Используйте текстовый столбец.

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

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

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