Я использую SQL Server 2008, и мне нужно увеличить поле VARCHAR от (200 до 1200) в таблице с примерно 500 тыс. Строк. Мне нужно знать, есть ли какие-либо вопросы, которые я не рассматривал.
Я буду использовать этот оператор TSQL:
ALTER TABLE MyTable
ALTER COLUMN [MyColumn] VARCHAR(1200)
Я уже пробовал это на копии данных, и это утверждение не имело никаких побочных эффектов, которые я мог бы увидеть.
Итак, есть ли какие-то возможные проблемы, которые я мог не учитывать?
Кстати, столбец не индексируется.
sql-server
sql-server-2008
varchar
alter-column
Пол Т. Дэвис
источник
источник
Ответы:
Это только изменение метаданных: это быстро.
Наблюдение: явно укажите NULL или NOT NULL, чтобы избежать «аварий», если одна из настроек SET ANSI_xx отличается, например, запускать в osql, а не в SSMS по какой-то причине
источник
varchar(200)
в пункт назначенияvarchar(max)
?Просто хотел добавить свои 2 цента, так как я погуглил этот вопрос b / c, я оказался в аналогичной ситуации ...
ВНИМАНИЕ : изменение с
varchar(xxx)
наvarchar(yyy)
действительно является изменением метаданных, а изменение наvarchar(max)
- нет. Потому чтоvarchar(max)
значения (также известные как значения BLOB - изображение / текст и т. Д.) Хранятся на диске по-разному, не в строке таблицы, а «вне строки». Таким образом, сервер сойдет с ума на большом столе и перестанет отвечать на запросы в течение нескольких минут (часов).--no downtime ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(1200) --huge downtime ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(max)
PS. то же самое относится к
nvarchar
или конечно.источник
Переход на Varchar (1200) с Varchar (200) не должен вызвать у вас никаких проблем, поскольку это всего лишь изменение метаданных, а поскольку SQL-сервер 2008 усекает слишком много пустых пространств, вы также не должны видеть никаких различий в производительности, поэтому, короче говоря, не должно быть проблем с созданием изменение.
источник
Еще одна причина, по которой вам следует избегать преобразования столбца в varchar (max), заключается в том, что вы не можете создать индекс для столбца varchar (max).
источник
В моем случае столбец изменения не работал, поэтому можно использовать команду «Изменить», например:
изменить таблицу [имя_таблицы] ИЗМЕНИТЬ столбец [имя_столбца] varchar (1200);
источник