こんにちは私は、SQL Serverでテーブルのロールバックコピーを作成する方法はありますか?または更新ステートメント私はその挿入または更新ステートメントの前だったように私のデータを回復したいと思います。テーブルのロールバックコピーを作成する方法を誤って挿入または更新する場合
-2
A
答えて
0
SELECT *
INTO myBackupTableName
FROM Yourtable
テーブルのバックアップを作成します。
0
本番環境と作業負荷について議論していると仮定します。この質問/要件について考えると、ロールバックが最善の答えだと強く思います。すでに作られた提案をまとめる
:
は、バックアップテーブルを作成するに選択するには、テーブルのコピーを作成しますが、あなたはそれに戻す場合は、潜在的に他のユーザーまたはバッチからのデータを失うことになります。
select文またはupdate文のinto句を使用すると、変更された行は取得されますが、元の値は取得されません。
もう1つの答えは、監査テーブルを作成し、トリガーを使用してそれを設定することです。監査テーブルには、バッチに関するロールバックを識別するための十分な詳細が含まれている必要があります。これはかなりウサギの穴に終わる可能性があります。トリガをベーステーブルと監査テーブルに設定したら、この監査テーブルを使用してバッチを元に戻すコードを作成する必要があります。トリガーはパフォーマンス上の問題となり、十分な他のユーザーから十分な変更があった場合でも、他のユーザーの作業を失うことなくバッチを元に戻すことはできません。
更新プログラムと検証コードを同じproc内にラップすることができます。検証が失敗した場合、変更内容のみがロールバックされます。
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/begin-transaction-transact-sql
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/rollback-transaction-transact-sql
関連する問題
- 1. テーブルが存在する場合にデータを挿入するか、テーブルを作成してデータを挿入する
- 2. 条件の場合に挿入または更新する
- 3. エンティティフレームワークデータが存在する場合は挿入または更新
- 4. ハイブ - 新しいテーブルを作成し、更新されたデータを挿入する
- 5. 存在する場合に更新する方法または挿入する方法
- 6. Informixテーブルに挿入するか、存在する場合は更新する
- 7. 見つからない場合に行を挿入するためのMySQLの「良い」方法または見つかった場合は更新する
- 8. pandasを使用してmysqlに挿入または更新する場合
- 9. テーブルに挿入や更新が行われたときに起動するトリガを作成する方法は?
- 10. C# - CRMに挿入または更新がある場合
- 11. MySQL - テーブルへの挿入/更新の数をカウントする方法
- 12. javascriptを作成したラベルが誤った位置に挿入
- 13. テーブルの行を選択、更新、挿入する方法
- 14. PHP/MYSQL複数のテーブルを挿入/更新する方法
- 15. 挿入後に同じテーブルの行を更新するトリガを作成する方法は?
- 16. EFコードファースト - 挿入または更新。テーブルが存在しない場合のエラー
- 17. 挿入または更新済み= 111をEMPLOYEE_ID場合
- 18. mySqlに、更新が失敗した場合に挿入する更新/挿入コンボがありますか?
- 19. テーブルに余分の列がある場合、多対多リレーションシップの中間テーブルに行を挿入または更新する方法はありますか?
- 20. Talendテーブルにデータを挿入または更新する
- 21. 別のテーブルに挿入するとテーブルを更新します
- 22. あるテーブルの値を別のテーブルに挿入して元のテーブルを更新する方法は?
- 23. 新しいテーブルを作成せずにテーブルを更新する/挿入する方法(一時的またはそれ以外)
- 24. テーブルから値を取り出して新しいテーブルに挿入するストアドプロシージャを作成する方法
- 25. MySQLは "挿入または更新の前にトリガーtr_empを作成する"
- 26. MYSQL、挿入/更新、else文の場合
- 27. 別の挿入が成功した場合、dbに一括挿入する方法はありますか?
- 28. 別のテーブルからテーブルを更新する方法Azureバックエンドでスクリプトを挿入
- 29. mysqlデータベースのテーブルに存在しない場合は、複数のレコードを更新または挿入します
- 30. 新しいテーブルを作成して別のテーブルからデータを挿入する
なぜあなたは正しいスクリプトを得るまでロールバックしたトランザクションの内部でスクリプトを置きますか?実際には、テーブル全体のコピーを作成する必要はありません。 –
私は自分のスクリプトをトランザクション内に置いていますが、正常に動作していますが、安全上の理由から私は自分のテーブルのコピーが必要です。 – deep
ロールバックは安全ネットです。テーブルのコピーを作成することに失敗した場合は、SELECT INTOを参照してください。 –