Надеюсь, это не вне темы, но у меня есть настоящая проблема, о которой я посоветовал использовать некоторые советы.Sql Server issue
У меня есть приложение, которое обновляет собственную базу данных Sql Server (из предыдущих версий) при запуске. Обычно это работает хорошо, но новая версия должна изменить несколько ширины столбцов nvarchar.
В реальных базах данных с большим количеством данных в таблице это занимает очень много времени. Кажется, что существует две проблемы: один из них заключается в том, что сервер Sql, по-видимому, обрабатывает данные (возможно, переписывает их), даже если это фактически не изменяется, а другое - журнал транзакций поглощает огромное пространство.
Есть ли способ обойти эту проблему? Это только простая таблица Alter ... Команда Alter Column, изменяющая nvarchar (x) на nvarchar (x + n), ничего не притворяется, но вызывает «проблему» и много неудовлетворенности в этой области. Если бы был способ изменить ширину столбца без обработки существующих данных и каким-то образом подавить материал журнала транзакций, это было бы удобно.
Это не похоже на проблему с базами данных Oracle.
Пример команды:
IF EXISTS (SELECT 1 FROM information_schema.COLUMNS WHERE table_name='ResourceBookings' AND column_name = ('ResourceBookerKey1') AND character_maximum_length <= 50)
ALTER TABLE [ResourceBookings] ALTER COLUMN [ResourceBookerKey1] NVARCHAR(80) NULL
Как вы можете видеть, таблица только изменится, если ширина столбца должна быть увеличена
ТИА
я понимаю, вы охарактеризовали код, но он все еще может быть полезным разместите фактический код. –
Похоже, что у вас есть какие-то разрывы страниц, но я бы не подумал, что это необходимо с VAR. – Paparazzi
Есть ли какие-либо индексы с этим полем? – valex