Estou atualizando em massa um banco de dados do SQL Server. Estou alterando todas as nossas numeric(38,0)
colunas para int
(sim, os scripts do SQL Server foram criados a partir dos scripts do Oracle) . Usando SMO e C # (eu sou engenheiro de software) , consegui gerar scripts muito bons, como o SQL Server Management studio faria. Tudo funciona muito bem, exceto por um problema específico:
para um punhado de tabelas, quando eu chamo ALTER TABLE [myTable] ALTER COLUMN [columnA] INT
, decide também mudar a coluna de NOT NULL to NULL
. É claro que isso é um problema enorme, pois preciso regenerar chaves primárias para a maioria dessas tabelas nessas colunas específicas.
Obviamente, tenho muitas opções usando o SMO para descobrir quais colunas são chaves primárias e forçá-las a não serem NULL após ou enquanto estou atualizando o tipo de dados, mas estou realmente curioso para saber o que pode estar causando isso.