SSMS での変更の保存が許可されていないエラーメッセージ

この記事では、SQL Server Management Studio (SSMS) でテーブルを保存しようとしたときにエラーメッセージが表示される問題を回避するのに役立つ情報を提供します。

元の製品バージョン:   SQL Server
元の KB 番号:   956176

現象

SQL Server management Studio でデザイナーを使用してテーブルを変更した後、テーブルを保存しようとすると、次のエラーメッセージが表示されることがあります。

変更を保存することはできません。 加えた変更には、次のテーブルを削除して再作成する必要があります。 再作成できないテーブルを変更したか、またはテーブルを再作成する必要がある変更を保存できないようにするオプションを有効にしています。

この問題は、次の1つ以上の変更をテーブルに対して行った場合に発生します。

  • 列の [Null を許容] 設定を変更します。
  • テーブル内の列を並べ替える。
  • 列のデータ型を変更します。
  • 新しい列を追加します。
  • filegroupテーブルまたはデータのを変更し text/image ます。

原因

この問題は、SQL Server Management Studio の [テーブルの再作成を必要とする変更を保存しない   ] オプションが既定で有効になっているために発生します。

テーブルのメタデータ構造が変更されるようにテーブルを変更した後、テーブルを保存する場合は、これらの変更に基づいてテーブルを再作成する必要があります。 これにより、メタデータが失われ、テーブルの再作成時にデータが直接失われることがあります。 [ SQL Server Management Studio (SSMS) のオプション] ウィンドウの [デザイナー ] セクションに [テーブルの再作成を必要 とする変更を保存しない] オプションを有効にすると、「Symptoms」のセクションに記載されているエラーメッセージが表示されます。

回避策

この問題を回避するには、Transact-sql ステートメントを使用して、 ALTER TABLE テーブルのメタデータ構造に対して変更を行います。

たとえば、" MyTable " という名前の datetime 型の MyDate 列を変更して NULL 値を受け入れるには、次のように使用できます。

alter table MyTable alter column MyDate7 datetime NULL

重要

[テーブルの再作成が必要な変更を保存しない] オプションをオフにすることによって、この問題を回避することを強くお勧めします。 このオプションをオフにするリスクの詳細については、「詳細情報」セクションを参照してください。

詳細情報

[テーブルの 再作成を必要とする変更を保存しない ] オプションを変更するには、次の手順を実行します。

  1. SQL Server Management Studio を開きます。

  2. [ツール] メニューの [オプション] をクリックします。

  3. [ オプション ] ウィンドウのナビゲーションウィンドウで、[ デザイナー] をクリックします。

  4. [ テーブルの再作成が必要な変更を保存しない ] チェックボックスをオンまたはオフにして、[ OK] をクリックします。

注意

このオプションを無効にすると、変更によってテーブルのメタデータ構造が変更されたテーブルを保存するときに警告が表示されません。 この場合、テーブルを保存するときに、データが失われる可能性があります。

[テーブルの再作成が必要な変更を保存できないようにする] オプションをオフにするリスク

このオプションをオフにすると、テーブルの再作成を避けることができますが、変更が失われてしまう可能性もあります。 たとえば、SQL Server で変更追跡機能を有効にして、テーブルへの変更を追跡しているとします。 テーブルを再作成する操作を実行すると、「 現象 」に記載されているエラーメッセージが表示されます。 ただし、このオプションをオフにすると、既存の変更追跡情報は、テーブルが再作成されるときに削除されます。 そのため、このオプションをオフにすることによって、この問題を回避することをお勧めします。

変更追跡機能がテーブルで有効になっているかどうかを確認するには、次の手順を実行します。

  1. SQL Server Management Studio で、[オブジェクトエクスプローラー] でテーブルを見つけます。
  2. テーブルを右クリックし、[プロパティ] をクリックします。
  3. [表のプロパティ] ダイアログボックスで、[変更履歴の記録] をクリックします。 変更追跡アイテムの値が True の場合、このオプションはテーブルに対して有効になります。 値が False の場合、このオプションは無効になります。

この Change Tracking 機能が有効になっている場合は、transact-sql ステートメントを使用して、テーブルのメタデータ構造を変更します。

問題を再現するための手順

  1. SQL Server Management Studio で、テーブルデザイナーツールで主キーを含むテーブルを作成します。
  2. このテーブルを含むデータベースを右クリックし、[ プロパティ] をクリックします。
  3. [ データベースのプロパティ ] ダイアログボックスで、[ 変更履歴] をクリックします。
  4. 変更履歴 アイテムの値を True に設定し、[ OK] をクリックします。
  5. テーブルを右クリックし、[ プロパティ] をクリックします。
  6. [ 表のプロパティ ] ダイアログボックスで、[ 変更履歴の記録] をクリックします。
  7. 変更履歴 アイテムの値を True に設定し、[ OK] をクリックします。
  8. [ツール] メニューの [オプション] をクリックします。
  9. [ オプション ] ダイアログボックスで、[ デザイナー] をクリックします。
  10. [ テーブルの再作成が必要な変更を保存しない ] チェックボックスをオンにして、[OK] をクリックし ます。
  11. テーブルデザイナーツールで、既存の列の [ null を許容] 設定を変更します。
  12. テーブルへの変更を保存してください。