SQL Serverの「変更の保存は許可されていません」エラー►テーブルの再作成が必要な変更の保存を防止


749

SQL Serverでテーブルを作成して保存するときに、列の型をintからrealに変更するなど、テーブルデザインを編集しようとすると、次のエラーが発生します。

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

テーブルを再作成する必要があるのはなぜですか?データ型をからsmallintに変更したいだけですreal

テーブルは空で、今まで使用していませんでした。


回答:


1466

保存(許可されません)MSDN上のダイアログボックス

[ 保存(許可されていません)]ダイアログボックスでは、変更を行うと、リストされたテーブルを削除して再作成する必要があるため、変更を保存できないことが警告されます。

次のアクションでは、テーブルの再作成が必要になる場合があります。

  • テーブルの中央に新しい列を追加する
  • 列を削除する
  • 列のNULL可能性の変更
  • 列の順序を変更する
  • 列のデータ型を変更する <<<<

このオプションを変更するには、[ ツール ]メニューの[ オプション ]をクリックし、[ デザイナー ] を展開 して、[ テーブルおよびデータベースデザイナー ]をクリックします。[ テーブルの再作成が必要な変更を保存できないようにする]チェックボックスをオンまたはオフにします。

関連項目Colt Kwongブログエントリ:
SQL 2008 Management Studioでは変更の保存は許可されていません


7
SSMSは、最初に警告せずに安全でないことをさせてはなりません。ただし、念のためバックアップを用意してください。
ロバートハーベイ、

40
このオプションは、SSMSに新しいスキーマで一時テーブルを作成してデータをコピーし、古いテーブルを削除して一時テーブルの名前を元の名前に戻すことを通知します。トランザクションの場合と同じように実行しても問題ありませんが、関係が壊れて再作成されるため、100%でないと予期しないことが起こります。
ジャスティンキング

13
このオプションをドロップダウンする簡単な手順を思い出せない理由がわからず、常に解決策を探す必要があります。へへへへへ。ありがとう!
開発者

8
聖なる牛-このエラーを回避するためにこれをオフにすることができますか?私はこれを知りませんでした。過去3年間、アイデンティティ仕様なしでテーブルを誤って設計し、新しいテーブルを作成しなければならないことを恐れていました。すばらしいヒントです。
nocarrier 2014

4
これは、「変更を保存できないようにする...」オプションを無効にすることに関するMicrosoftの警告です:support.microsoft.com/en-us/kb/956176。基本的に、変更追跡のようなメタデータを使用する場合、それが失われる可能性があります。
Baodad、2015年

205

SSMSを使用していますか?

はいの場合は、[ツール ] >> [オプション ] >> [デザイナー ]に移動し、[テーブルの再作成が必要な変更を保存できないようにする]チェックボックスをオフにします


ツール>>オプションなど。「メニュー」ではありません(ssms 2014の観点から見ると、以前のバージョンでも同じだと思います)
Tom Stickel

「ツール」:私はメニューに行く意味を推測@TomStickel
ypercubeᵀᴹ

:Pはい、私はそれを考え出し、私は私が知っている実際には「スタック」になるだろう誰も、怖いのコメント投稿だろうが、私は何人かの人々がすぐに... THX手を投げることができたとだけ考え出し
トムStickel

2
@NeilMeyerは、チェックボックスが理由でチェックされていることに注意してください。これは、ドロップと失うので、テーブルを再作成(となります操作を防止するための安全対策です、そのすべてのデータをので、注意して使用!!
ypercubeᵀᴹ

このようにテーブルを再作成すると、テーブル間の関係は失われますか?
Neil Meyer、

78

テーブルの再作成が必要な変更を保存しない

5回の迅速なクリック

5回のクリックでテーブルの再作成を必要とする変更を保存しない

  1. ツール
  2. オプション
  3. デザイナー
  4. テーブルの再作成が必要な変更を保存しない
  5. OK

保存後、手順を繰り返してボックスを再度チェックします。これにより、偶発的なデータ損失を防ぐことができます。

さらなる説明

  • デフォルトでは、SQL Server Management Studioはテーブルの削除を防ぎます。これは、テーブルが削除されると、そのデータの内容が失われるためです。*

  • テーブルのデザインビューで列のデータ型を変更する場合、変更を保存すると、データベースによってテーブルが内部的に削除され、新しいテーブルが再作成されます。

*テーブルが空であるため、特定の状況が影響を与えることはありません。手順の理解を深めるために、この説明を完全に提供します。


27

テーブルの再作成が必要な変更を保存できないようにするオプションを変更するには、次の手順に従います。

SQL Server Management Studio(SSMS)を開きます。[ツール]メニューの[オプション]をクリックします。

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

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

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

ここに画像の説明を入力してください


テーブルデザイナは便利ですが、
それで

22

これは非常に簡単でシンプルな設定の問題であり、次の手順に従って5秒で修正できます

テーブルを変更した後で変更を保存できるようにするには、SQL設定に対して次の手順に従ってください。

  1. Microsoft SQL Server Management Studio 2008を開く
  2. [ツール]メニューオプションをクリックし、[オプション]をクリックします。
  3. デザイナーを選択
  4. 「テーブルの再作成が必要な変更を保存できないようにする」オプションをオフにします
  5. OKをクリックします
  6. テーブルを変更してみてください
  7. 変更は必要に応じて実行されます

8
これはどのようにして受け入れられた回答にどのように追加されますか?
イモータルブルー

17

トップメニューにあるツールに行きます。ドロップダウンからオプション
選択します。ポップアップが表示され、メニューの左側のブロックにある[ デザイナー ]オプションを選択できます。[ テーブルの再作成が必要な変更を保存できないようにする]オプションをオフにします。OKボタンをクリックします。


12

未ダニPrevent saving changes that require table re-creationからボックスツール►オプション►デザイナータブを。

SQL Server 2012の例:

ここに画像の説明を入力してください


12

これは、Microsoft SQL Serverで簡単に変更できます

  1. Microsoft SQL Server Management Studio 2008を開く
  2. [ツール]メニューをクリックします
  3. オプションをクリックします
  4. デザイナーを選択
  5. 「テーブルの再作成が必要な変更を保存できないようにする」のチェックを外します
  6. OKをクリックします

ここに画像の説明を入力してください


7

このリンクからコピー "...重要テーブルの再作成を必要とする変更を保存できないようにするオプションをオフにすることで、この問題を回避しないことを強くお勧めします。このオプションをオフにするリスクの詳細については、「詳細」セクション。 ''

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

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

変更テーブルMyTable変更列MyDate7日時NULL "


2
非常に多くの回答がすべて同じことを言っているので、テーブルにライブデータがあり、失いたくなかったので、これは私が探していた回答でした。decimal列を小数点以下0桁から小数点以下2桁に更新する必要があり、単純なalterステートメントは完璧に機能しました!
stitz

ここでの悲劇は、SSMSが内部で正確にこれを実行する必要があるため、テーブルをドロップする必要がないということです
m12lrpv

6

そしてここに誰かが(私のように)注意を払っていない場合に備えて:

Microsoft SQL Server 2012の場合、オプションダイアログボックスには、他のすべての設定を明らかに非表示にするこっそりした小さなチェックボックスがあります。あの小さな怪物をずっと見逃していたと言わざるを得ませんが!!!

その後、あなたは手順を進めることができます、デザイナー、チェックを外してください。

sneaky_check_box_in_option


5

ツール>>オプション>>デザイナをクリックし、「テーブルの再作成が必要な変更を保存できないようにする」のチェックを外します。

写真形式の説明


2

1)上部にあるツールを開きます。
2)選択リストからオプションを選択します。
3)ポップアップが表示され、左側のメニューのリストからデザイナーオプションを選択できるようになりました。
4)変更を保存しないようにするには、必要なテーブルの再作成をオフにする必要があります。 OKをクリックします。


1

[ツール]メニューの[オプション]をクリックし、サイドメニューから[デザイナー]を選択して、テーブルの再作成につながる可能性のある変更を解除します。次に、変更を保存します


0

そのようなリストに「テーブルの再作成を必要とする変更の保存を禁止する」が表示されない場合は、 画像

変更の追跡を有効にする必要があります。

  • データベースを右クリックし、[プロパティ]をクリックします
  • 変更追跡をクリックして有効にします
  • [ツール]-> [オプション]-> [デザイナ]に移動し、チェックを外します。

0

SQL Server Management Studioを使用している場合は、[ツール] >> [オプション] >> [デザイナー]に移動し、[テーブルの再作成が必要な変更を保存できないようにする]チェックボックスをオフにします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.