Je mets à jour en masse une base de données SQL Server. Je modifie toutes nos numeric(38,0)
colonnes en int
(oui, les scripts SQL Server ont été créés à partir de scripts Oracle) . En utilisant SMO et C # (je suis un ingénieur sw) , j'ai réussi à générer de très beaux scripts comme le ferait SQL Server Management Studio . Tout fonctionne très bien, sauf pour un problème particulier:
pour une poignée de tables, lorsque j'appelle, ALTER TABLE [myTable] ALTER COLUMN [columnA] INT
il décide de changer également la colonne NOT NULL to NULL
. C'est bien sûr un énorme problème car j'ai besoin de régénérer les clés primaires pour la plupart de ces tables sur ces colonnes particulières.
Évidemment, j'ai beaucoup d'options à l'aide de SMO pour savoir quelles colonnes sont des clés primaires et les forcer à ne PAS être NULL après ou pendant la mise à jour du type de données, mais je suis vraiment curieux de savoir ce qui peut provoquer cela.