Я работаю над базой данных размером около 6 Гб.Мне нужно преобразовать все столбцы, отличные от Юникода, в Юникод, например, изменить все varchar на nvarchar.
Я написал это с помощью операторов ALTER, таких как ALTER TABLE mytable ALTER COLUMN mycolumn nvarchar(...)
, но впоследствии обнаружил, что размер базы данных значительно увеличился.Файл .mdf вырос до более чем 70 Гб, что меня удивило.Я знаю, что Юникод занимает в 2 раза больше пространства varchar, но даже если бы база данных была вся varchar и была конвертирована, я бы ожидал, что ее максимальный размер будет 12 ГБ.
Я пытался сжать базу данных и файлы, чтобы посмотреть,это было нераспределенное пространство, но это имело небольшой эффект, и sp_spaceused
указало, что не было чрезмерного количества нераспределенного пространства.
Кто-нибудь знает, почему база данных стала бы такой большой?Я очень хочу понять, что могло бы вызвать это.
Мне удалось изменить типы данных столбца на Unicode, создав новую базу данных со сценарием из старой базы данных и импортировав все данные, и результат увеличилсяразмером всего 1 ГБ, поэтому я хотел бы понять, почему изменение типов данных столбца вызвало такой рост.