.log

miscellaneous memorandum

「変更の保存が許可されていません」

December 16, 2010
SQLServer2008で、テーブルの定義を変更しようとすると、 > 変更の保存が許可されていません。行った変更には、次のテーブルを削除して再作成することが必要になります。再作成できないテーブルに変更を行ったか、テーブルの再作成を必要とする変更を保存できないようにするオプションが有効になっています。 と表示されて、保存させてくれません。 これは、SQLServer Management Studioの、[ツール]-[オプション]で開くダイアログの、[Designers]-[テーブルデザインおよびデータベース デザイナ]の中に、「テーブルの再作成を必要とする変更を保存できないようにする」という項目があり、これが有効になっているケースがほとんどです。 [![f:id:dotlog:20101216171828p:image](20101216171828.png "f:id:dotlog:20101216171828p:image")](http://f.hatena.ne.jp/dotlog/20101216171828) このオプションが有効の場合にメッセージが出るのは、 * 列に対して、"Null を許容" 設定を変更する。 * テーブルの列の順序を変更する。 * 列のデータ型を変更する。 * 新しい列を追加する。 という操作をしようとした場合のようです。 要するに、内部的にテーブルを再作成しないといけないような操作を行う場合、構造の一部が壊れたり、既に入っているデータが消えたりする可能性があるので、Management Studioから安易に変更できないようにするというオプションのようですね。 詳しくは、[SQL Server 2008 でテーブルを保存するときにエラー メッセージ "変更の保存が許可されていません" が表示される](http://support.microsoft.com/kb/956176/ja)にあります。