エンジニアの将来って?

現在7年目のCOBOL→Java→C#エンジニアが、将来への考えや勉強のアウトプット、たまに腎臓について書くブログです

【SQL Server】「変更の保存が許可されていません」のエラーメッセージが表示されたときの解決策をお伝えします

こんにちは。たいら(@tairaengineer2)です。
SQL Serverでテーブル定義を変えようとしたとき

f:id:Tairax:20190513084855p:plain

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

というエラーメッセージが表示されることがあります。

この記事では、このエラーメッセージを解決するやり方について解説します。

 

前提条件

この記事では、Microsoft SQL Server2017を使っています。
インストールの仕方は、下の記事をご参考ください。

www.tairax.com

「変更の保存が許可されていません。」が表示されるケース

「変更の保存が許可されていません。」が表示されるケースは

  • 「NULLを許容」を許さない列を追加する
  • 列の「NULLを許容」の許さないようにする

です。どういうことなのかを以下のテーブルに対して、エラーを起こしていきます。

f:id:Tairax:20190513095740p:plain

「NULLを許容」を許さない列を追加する

【NULLを許容】を許さない列を追加します。

f:id:Tairax:20190513102050p:plain

この状態で保存すると、エラーになります。

※「NULLを許容」のチェックを入れるとエラーが発生しません。

列の【NULLを許容】の許さないようにする

idの【NULLを許容】のチェックを外します。

f:id:Tairax:20190513100101p:plain

この状態で保存すると、エラーになります。

「変更の保存が許可されていません。」のエラーメッセージが表示される原因

f:id:Tairax:20190513084855p:plain

このエラーメッセージが表示される原因は、テーブルオプション有効にしていることです。

この問題は、テーブルの再作成を必要とする変更を保存できないようにするオプションを有効にすると、テーブルに 1 つまたは複数の次の変更を行うときに発生します。

  • 列のnull 値を許可する設定を変更するとします。
  • テーブル内の列の順序を変更するとします。
  • 列のデータ型を変更するとします。
  • 新しい列を追加するとします。

Microsoftサポート:SQL Server のテーブルを保存しようとするときにエラー メッセージ:「変更を保存することはできません」から引用させて頂きました

なのでオプション無効にしてあげれば、このエラーは解決できます。

「変更の保存が許可されていません。」を解決するやり方

f:id:Tairax:20190513135719p:plain

SQL Serverを開きます。

f:id:Tairax:20190513140028p:plain

  1. ツール
  2. オプション

の順でクリックしていきます。

f:id:Tairax:20190513140312p:plain

オプションが開きます。
左のスクロールを移動させて

f:id:Tairax:20190513140519p:plain

【デザイナー】を選択します。
右のテーブルオプションの

f:id:Tairax:20190513140758p:plain

【テーブルの再作成を必要とする変更を保存できないようにする】チェック外します
この状態で

f:id:Tairax:20190513141044p:plain

【OK】ボタンを押せば完了です!

エラーメッセージが表示されないか確認

本当にエラーメッセージが表示されないか、確認します。
先ほど【「変更の保存が許可されていません。」が表示されるケース】で解説した

  • 「NULLを許容」を許さない列を追加する
  • 列の「NULLを許容」の許さないようにする

で、同じ以下のテーブルに対して、試してきます。

f:id:Tairax:20190513095740p:plain

「NULLを許容」を許さない列を追加する

「NULLを許容」を許さない列を追加します。

f:id:Tairax:20190513141744p:plain

この状態で保存すると

f:id:Tairax:20190513141950p:plain

エラーメッセージが表示されず、正常に保存することができます。

列の【NULLを許容】の許さないようにする

idの【NULLを許容】のチェックを外します。

f:id:Tairax:20190513144422p:plain

この状態で保存すると

f:id:Tairax:20190513144606p:plain

エラーメッセージが表示されず、正常に保存することができます。

まとめ:「変更の保存が許可されていません。」のエラーメッセージは解決できる

以上が「変更の保存が許可されていません。」のエラーメッセージが表示したときの解決方法です。
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

 

ほかにもSQL Server解説記事を書いてます。
よければご参考ください。

【SQL Server】特定のテーブルのスキーマとデータをInsert文でエクスポートする方法を解説します

【SQL Server】データベースの作り方を解説します