[解決済み】「テーブルの再作成を必要とする変更を保存しない」悪影響について
質問内容
前文
今日、SQL Server 2008のカラムを修正して、データ型をcurrency(18,0)のようなものから(19,2)に変更しました。
SQL Serverから "あなたが行った変更には、次のテーブルを削除して再作成する必要があります"というエラーが表示されました。
スクラムを組んで回答する前に、以下をお読みください。
にオプションがあることは既に知っています。 ツール ► オプション ► デザイナー ► テーブルとデータベースデザイナー ► チェックボックスをオフにする "テーブルの再作成を必要とする変更を保存しないようにします。 ...そこで しない と答えてください。
実際の質問
私の実際の質問は、次のような別のものです。
このようなことをすると、何か悪影響/欠点が考えられますか?
このボックスのチェックを外すと、実際にテーブルは自動的に削除され、再作成されるのでしょうか?
その場合、テーブル コピーはソース テーブルの 100% 正確なレプリカですか?
解決方法は?
テーブルの削除と再作成は、SQL Server の Management Studio がその方法を知るためにプログラムされた唯一の方法である場合にのみ行われます。
確かに、必要ない時にそうする場合もありますが、Management Studioで行った編集が、そのようなケースもあるでしょう。 ではない ドロップして再作成する必要がないからです。
問題は、すべてのケースを列挙して、どちらに該当するかを判断するのが、かなり面倒だということです。
そのため、私が好きなのは
ALTER TABLE
何が起こっているのかを隠す(そして率直に言ってバグがある)ビジュアルデザイナーではなく、クエリウィンドウの中で、私は何が起こるのかを正確に知っており、唯一の可能性がテーブルをドロップして再作成すること(SSMSがあなたにそれを行う頻度よりも少ない数です)であるケースを準備することができます。
このようなことをすると、何か悪影響/欠点がある可能性はありますか?
もちろん、テーブル全体を再構築することなく、自分でスクリプトを組んで変更できるのであれば、その方が良いでしょう。テーブルが10TBで、データベースのログが多く(同期AG、変更追跡、レプリケーション、トリガーの書き方がまずいと思います)、テーブルへのアクセスが多い場合について考えてみましょう - これは災害の可能性を秘めていると言えます。もし、変更がONLINEヒントを適用したり、カラムを追加したり、GUIで行うオール・オア・ナッシングではなく、バッチでデータをコピーするようなものであれば、こちらの方がよいでしょう。
<ブロッククオートこのボックスのチェックを外したとき、実際にテーブルは自動的に削除され、再作成されるのでしょうか?
それは かもしれない . シナリオのリストはたくさんあり、結果はSSMSのバージョン、SQL Serverのバージョン、そして時にはエディションに依存します。チェックボックスにチェックを入れて、変更を適用してみることで確認できます。 まずデータベースの意味のないコピーで しかし、とんがったGUIではなく、実際のALTER TABLEスクリプトを使用するのがIMHOの方法です。
<ブロッククオートその場合、テーブルコピーはソーステーブルの100%正確な複製ですか?
はい、SSMSがテーブルを再構築しなければならない場合、それが終わった後は100%正確なレプリカになります(もちろん、変更を除いて)が、それは次の水曜日になるかもしれません。このプロセスでは、新しいバージョンのテーブルを作成し、すべてのデータをそこにコピーし、古いテーブルを削除して新しいテーブルの名前を変更します。
関連
-
[解決済み] プロシージャは 'ntext/nchar/nvarchar' 型のパラメータ '@statement' を想定しています。
-
[解決済み] 更新時のSqlエラー : UPDATE ステートメントが FOREIGN KEY 制約と競合しています。
-
[解決済み] SQL Serverで小数点の後に2桁の数字を表示させる方法
-
[解決済み] SQL Server : ログインに成功しましたが、「データベース [dbName] にアクセスできません。(ObjectExplorer) "と表示されました。
-
[解決済み] リンクサーバーとしてローカルデータベースを使用する場合、「Deferred prepare could not be completed」エラーが発生する。
-
[解決済み] 変数に値を代入するSELECT文は、データ検索操作と組み合わせてはいけません。
-
[解決済み] SQL Server: caseステートメントでUniqueIdentifierを文字列に変換する
-
[解決済み] Sql Server 'Saving changes is not permitted' エラー ► テーブルの再作成を必要とする変更を保存しないようにする。
-
[解決済み】SQL Server。クエリーは高速ですが、プロシージャから遅い
-
[解決済み】SQL Server Management Studioでテーブル編集後に変更を保存する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】各GROUP BY式は、外部参照でない列を少なくとも1つ含む必要があります。
-
[解決済み] SQL Agent を使用して SSIS パッケージを実行する際の問題 - "DTSER_FAILURE(1)" で失敗します。
-
[解決済み] sp_columnsが結果を返さないのはなぜですか?
-
[解決済み] 監査失敗、クレデンシャル検証 4776
-
[解決済み] 一括読み込みができません。オペレーティングシステムのエラーコード5(アクセスが拒否されました。)
-
[解決済み] SQL Serverのタイムスタンプ列をdatetime形式に変換する方法
-
[解決済み] SQL ServerでBegin / End BlocksとGoキーワードを使用する?
-
[解決済み] SQL Serverでforeachを記述する方法とは?
-
[解決済み] スカラー変数を宣言する必要があります。
-
[解決済み] SQL Server Management StudioでIntelliSenseが機能しない