0

データ型が char(255) のデータベース内のすべての列のデータ型を nvarchar(255) に変更する必要があります。そのためには、P/F キーを削除してから、再度作成する必要があります。しかし、データ型を変更すると、null ではない情報が失われます。

列によっては、NULL 値を許容できるものと、そうでないものがあります。これが問題です。

どうすれば解決できますか?

編集:

P/F キーをドロップすると、データ型を正常に変更しようとします。そして、キーを再作成すると、null可能であるため、そのフィールドにキーを設定できないと表示されます。

それから私はtry/catchでそれをやろうとしました:

キーの追加を試み、そうでない場合はデータ型を null 以外に変更し、キーの追加を再試行します。

それは機能しますが、今では大量の例外がスローされます。仕事は終わったと思いますが、私のDBには約100のテーブルがあり、それらすべてが問題ないかどうかを確認できないため、よくわかりません。

それで、これを行う他の方法はありますか?

4

1 に答える 1

1

INFORMATION_SCHEMA.COLUMNS ビューを使用して、char(255) であるすべての列を見つけることができます。ビューには、列が属しているテーブルや null を許可するかどうかなど、列に関する追加情報も含まれています。

例えば...

select TABLE_NAME, COLUMN_NAME, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
from INFORMATION_SCHEMA.COLUMNS
Where DATA_TYPE = 'char'
And CHARACTER_MAXIMUM_LENGTH = 255

その情報を使用して、どの列を変更する必要があるかを判断でき、null が許可されているかどうかがわかります。

于 2014-05-01T15:10:03.413 に答える