Добавление автономного номера в столбец SQL, содержащий более 15 миллионов записей - PullRequest
1 голос
/ 28 сентября 2010

Мне нужно добавить столбец автономного номера в существующую таблицу, которая содержит около 15 миллионов записей в SQL 2005.

Как вы думаете, сколько времени это займет?Какой лучший способ сделать это?

Ответы [ 4 ]

3 голосов
/ 28 сентября 2010

Чтобы свести к минимуму влияние, я бы создал новую таблицу с добавленным столбцом идентификаторов, вставил в новую таблицу, выбрав из старой таблицы, затем отбросил старую таблицу и переименовал новую. Я дам основной план ниже. Для обработки внешних ключей и т. Д. Могут потребоваться дополнительные шаги

create table NewTable (
   NewID int identity(1,1),
   Column1 ...
)
go

insert into NewTable
   (Column1, ...)
   select Column1, ...
       from OldTable
go

drop table OldTable
go

exec sp_rename 'NewTable', 'OldTable'
go
2 голосов
/ 28 сентября 2010

Если это не чрезвычайная ситуация:

  1. Не вносить изменения в действующую базу данных.
  2. Не вносить изменения в действующую базу данных.

Чтобы узнать, сколько времени вам потребуется, выполните восстановление новой БД и внесите в нее изменения.

Это не должно быть очень долго: это зависит не толькона сколько строк, но еще больше на том, сколько данных в каждой строке.(SQL Server собирается скопировать всю таблицу.)

2 голосов
/ 28 сентября 2010

Трудно сказать, сколько времени это займет.

На мой взгляд, вам лучше всего вернуть копию рабочей базы данных, восстановить ее в среде разработки и применить ваши изменения.там, чтобы увидеть, сколько времени это займет.

Оттуда вы можете координировать время простоя сайта или планировать запуск обновления, когда пользователи не подключены.

0 голосов
/ 29 сентября 2010

Есть ли у вас возможность резервного копирования производственной базы данных, применения изменений на другом сервере и изменения строк подключения? Вы даже можете восстановить его на том же сервере, что и исходный, изменить строки подключения и избавиться от старой базы данных.

Может быть невозможным, если дисковое пространство ограничено.

...