Tôi đang cập nhật hàng loạt cơ sở dữ liệu SQL Server. Tôi đang thay đổi tất cả các numeric(38,0)
cột của chúng tôi thành int
(vâng, tập lệnh SQL Server được tạo từ tập lệnh Oracle) . Sử dụng SMO và C # (Tôi là một kỹ sư sw) , tôi đã quản lý để tạo các tập lệnh thực sự tốt như SQL Server Management studio . Tất cả đều hoạt động rất độc đáo ngoại trừ một vấn đề cụ thể:
đối với một số ít các bảng, khi tôi gọi ALTER TABLE [myTable] ALTER COLUMN [columnA] INT
nó quyết định cũng thay đổi cột từ NOT NULL to NULL
. Tất nhiên đó là một vấn đề lớn vì tôi cần tạo lại các khóa chính cho hầu hết các bảng trên các cột cụ thể đó.
Rõ ràng, tôi có nhiều tùy chọn sử dụng SMO để tìm ra cột nào là khóa chính và buộc chúng KHÔNG phải là NULL sau hoặc trong khi tôi đang cập nhật loại dữ liệu, nhưng tôi thực sự tò mò về những gì có thể gây ra điều này.