Я массово обновляю базу данных SQL Server. Я изменяю все наши numeric(38,0)
столбцы на int
(да, сценарии SQL Server были созданы из сценариев Oracle) . Используя SMO и C # (я - инженер sw) , мне удалось создать действительно хорошие сценарии, как в SQL Server Management studio . Все это работает очень хорошо, за исключением одной конкретной проблемы:
для нескольких таблиц, когда я звоню, ALTER TABLE [myTable] ALTER COLUMN [columnA] INT
он решает также изменить столбец NOT NULL to NULL
. Это, конечно, огромная проблема, так как мне нужно регенерировать первичные ключи для большинства таблиц в этих столбцах.
Очевидно, у меня есть множество вариантов использования SMO, чтобы выяснить, какие столбцы являются первичными ключами, и заставить их быть NULL после или во время обновления типа данных, но мне действительно любопытно, что может быть причиной этого.