Visual Studio 2012 でSQL Server データベース プロジェクトを使用していますが、更新スクリプトを比較および生成するときに次の問題が発生します。
Visual Studio では、次のような既定の制約を持つ列を追加します。
[NewColumn] NVARCHAR(50) CONSTRAINT [DF_ExistingTable_NewColumn] NOT NULL DEFAULT N''
残念ながら、次の場合、デフォルトの制約の名前は表示されません。
- プロジェクトを実際のデータベースと比較 (スキーマ比較) する
- 更新スクリプトの生成 (スキーマ比較内から)
作成された更新スクリプトには、次のスクリプトが含まれています (制約名なし)。
ALTER TABLE [dbo].[ExistingTable]
ADD [NewColumn] NVARCHAR (50) DEFAULT N'' NOT NULL;
これは大きな見落としのように思えるので、すべてのデータベース操作にデフォルトの制約の名前を含めるための魔法のスイッチがどこにあるのか疑問に思っています。