Почему SQL Server вынуждает меня удалить таблицу, чтобы иметь возможность изменять поле с DateTime на DateTime2 (3)? - PullRequest
5 голосов
/ 29 декабря 2011

Я пытаюсь изменить поле таблицы - с несколькими строками в нем - с DateTime до DateTime2(3).

Но SQL Server Management Studio жалуется, что я удалил и заново создал таблицу.

Но почему?

Разве DateTime2(3) не имеет большей точности, чем DateTime тип?Это должно быть хорошо, не так ли?

Ответы [ 2 ]

6 голосов
/ 29 декабря 2011

В SSMS есть настройка, которая позволит вам делать то, что вы хотите. Menu-Tools-Options-Designers-Предотвращать сохранение изменений, требующих повторного создания таблицы.

SSMS имеет привычку воссоздаватьпочти любые изменения, которые вы делаете.Должно быть хорошо, если вы изменяете тип данных столбца только следующим образом.

alter table TableName alter column ColName datetime2(3)
3 голосов
/ 29 декабря 2011

Вы также можете сделать это без перестройки таблицы (как Management Studio делает это за кулисами).

ALTER TABLE T ALTER COLUMN D DateTime2(3) [NOT NULL]

Это будет менее ресурсоемким заранее, но оставит «старый» столбец в данныхстраницы будут действовать до тех пор, пока вы не восстановите таблицу.

...