エラー メッセージ "変更の保存が許可されていません" が、SQL Server でテーブルを保存しようとすると表示される

文書翻訳 文書翻訳
文書番号: 956176 - 対象製品
すべて展開する | すべて折りたたむ

目次

現象

Microsoft SQL Server 2008 で、データ定義言語 (DDL) を使用してテーブルを変更してから、テーブルを保存しようとすると、次のメッセージが表示されることがあります。
変更の保存が許可されていません。行った変更には、次のテーブルを削除して再作成することが必要になります。再作成できないテーブルに変更を行ったか、テーブルの再作成を必要とする変更を保存できないようにするオプションが有効になっています。

原因

この問題は、[テーブルの再作成を必要とする変更を保存できないようにする] オプションが有効であり、テーブルに以下のいずれかの変更を行った場合に発生します。
  • 列の [Null を許容] 設定を変更する。
  • テーブルで列を並べ替える。
  • 列のデータ型を変更する。
  • 新しい列を追加する。
テーブルのメタデータ構造を変更するようにテーブルを変更し、テーブルを保存した場合、これらの変更内容に基づいてテーブルを再作成する必要があります。これにより、テーブルの再作成時にメタデータが失われ、データが直接失われる場合があります。[SQL Server Management Studio (SSMS) のオプション] ウィンドウの [デザイナー] セクションで [テーブルの再作成を必要とする変更を保存できないようにする] オプションを有効にすると、「現象」に記載されているエラー メッセージが表示されます。

回避策

この問題を回避するには、Transact-SQL ステートメントを使用してテーブルのメタデータ構造を変更します。詳細については、SQL Server Books Online の以下のトピックを参照してください。

http://msdn.microsoft.com/en-us/library/ms190273.aspx

たとえば、MyTable というテーブルで、型 datetime の MyDate 列を変更して NULL 値を使用できるようにするには、次のステートメントを使用する方法があります。

alter table MyTable alter column MyDate7 datetime NULL

重要 [テーブルの再作成を必要とする変更を保存できないようにする] オプションを無効にすることでこの問題を回避することはお勧めしません。このオプションを無効にするリスクの詳細については、「詳細」を参照してください。

状況

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

詳細

[テーブルの再作成を必要とする変更を保存できないようにする] オプションを変更するには、以下の手順を実行します。
  1. SQL Server Management Studio (SSMS) を開きます。
  2. [ツール] メニューの [オプション] をクリックします。
  3. [オプション] ウィンドウのナビゲーション ウィンドウで、[デザイナー] をクリックします。
  4. [テーブルの再作成を必要とする変更を保存できないようにする] チェック ボックスをオンまたはオフにして、[OK] をクリックします。
注: このオプションを無効にすると、ユーザーが行った変更によりテーブルのメタデータ構造が変更されたテーブルを保存しても、警告は表示されません。この場合、テーブルを保存するときにデータが失われる可能性があります。

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

このオプションを無効にすると、テーブルの再作成を回避するのに役立ちますが、変更内容が失われる可能性も生じます。たとえば、SQL Server 2008 で変更の監視機能を有効にしてテーブルへの変更を追跡する場合を考えます。テーブルが再作成される原因になる操作を実行すると、「現象」に記載されているエラー メッセージが表示されます。ただし、このオプションを無効にしていると、テーブルが再作成される際に既存の変更の追跡情報が削除されます。そのため、このオプションを無効にしてこの問題を回避することはお勧めしません。

テーブルで変更の追跡機能が有効であるかどうかを確認するには、次の手順を実行します。
  1. SQL Server Management Studio の [オブジェクト エクスプローラー] でテーブルを参照します。
  2. テーブルを右クリックし、[プロパティ] をクリックします。
  3. [テーブルのプロパティ] ダイアログ ボックスで、[変更の追跡] をクリックします。
[変更の追跡] の値が "True" である場合、テーブルに対してこのオプションが有効になってます。値が "False" である場合、このオプションは無効です。

変更の追跡機能が有効である場合、テーブルのメタデータ構造を変更するには Transact-SQL ステートメントを使用します。

問題の再現手順

  1. SQL Server Management Studio のテーブル デザイナー ツールで、主キーが含まれるテーブルを作成します。
  2. このテーブルが含まれるデータベースを右クリックし、[プロパティ] をクリックします。
  3. [データベースのプロパティ] ダイアログ ボックスで、[変更の追跡] をクリックします。
  4. [変更の追跡] の値を "True" に設定し、[OK] をクリックします。
  5. テーブルを右クリックし、[プロパティ] をクリックします。
  6. [テーブルのプロパティ] ダイアログ ボックスで、[変更の追跡] をクリックします。
  7. [変更の追跡] の値を "True" に設定し、[OK] をクリックします。
  8. [ツール] メニューの [オプション] をクリックします。
  9. [オプション] ダイアログ ボックスの [デザイナー] をクリックします。
  10. [テーブルの再作成を必要とする変更を保存できないようにする] チェック ボックスをオンにして、[OK] をクリックします。
  11. テーブル デザイナー ツールで、既存の列に対する [Null を許容] 設定を変更します。
  12. テーブルへの変更を保存してみます。

プロパティ

文書番号: 956176 - 最終更新日: 2012年7月3日 - リビジョン: 4.0
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Express with Advanced Services
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2008 R2 Express with Advanced Services
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Standard Edition for Small Business
  • Microsoft SQL Server 2008 R2 Web
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Express
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
  • SQL Server 2012 Enterprise Core
キーワード:?
kbsqlsetup sql2008relnotetools sql2008relnote kbprb KB956176
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com