Microsoft SQL Server 2008 R2 で、null 許容列を非 null に変更したいと考えています。明らかに、データ型を次のように言い換えることでこれを行うことができます。
alter table t alter column c int not null
たとえば、列 tc が int データ型の場合。しかし、既存のデータ型を言い換えずに、一般的にはどうでしょうか? 私はそれに相当するものを探しています
alter table t alter column c not null
既存のデータ型は保持され、null 可能性のみがオフになります。
バックグラウンド
データベースの監査を行ったところ、列が null 許容として指定されているにもかかわらず、実際には null 値が発生しないという多くのケースが見つかりました。これらの列で null 値を禁止するようにスキーマを強化したいと思います。データ型が間違っている可能性があるため、それぞれの列を変更するために DDL を手動で書き込むと、エラーが発生しやすくなります。各列の既存のデータ型を出力するスキーマ ダンパー プログラムを使用してコードを自動的に生成することもできますが、ダンパー プログラムが最新のデータ型を認識せず、別のものを出力する場合 (例として、 datetime2 を認識せず、代わりに datetime を書き出します)。
SQL サーバーは、列の型が何であるかを既に認識しているため、それを保持して null 可能性をオフにするように指示する方法が確実にあります。
既存のデータ型を見つけて DDL に入れる以外にそれを行う方法が本当にない場合は、適切なツールを使用することをお勧めできますか? Sybase時代のdbschema.plについては知っていますが、スキーマビューから必要なステートメントを出力する、より現代的なもの、またはSQLのよく知られたフラグメントがあるかもしれません。