保存されていないSQLクエリスクリプトを復元する


196

SSMSがクラッシュした/未保存のタブが誤って閉じられた場合、未保存のスクリプトを回復するには


3
私は基本的にジョンに同意します。しかし、これは時々私たち全員に起こります:「私はそれを救ったと思いました!」コーディングを始める前に、最初にSAVE FIRSTすることを習慣にしてください。Ctrl + Sはあなたの友達です!
Graeme

4
SSMSBOOST(無料のコミュニティモード)またはRedgate(無料ではありませんが、非常に便利です)を試してください
Vasily Ivoyzha

2
残念ながら、SSMSには現在、閉じたタブを元に戻す機能がありません。:Microsoftがうまくいけば、将来のバージョンでこれを追加しますので、私は、次の接続項目を作成しているconnect.microsoft.com/SQLServer/Feedback/Details/1044403
ロブ・ニコルソン

回答:


425

誰かが同じ問題に遭遇した場合に備えて、これを投稿します。

未保存のスクリプト取得するためにグーグル検索し、解決策を見つけました。

次のselectスクリプトを実行します。スクリプトのリストと、過去24時間の実行時間を提供します。これは、スクリプトを保存せずにSQL Server管理スタジオでクエリウィンドウを閉じる場合に、スクリプトを取得するのに役立ちます。ビューやプロシージャだけでなく、実行されたすべてのスクリプトで機能します。

Use <database>
SELECT execquery.last_execution_time AS [Date Time], execsql.text AS [Script] FROM sys.dm_exec_query_stats AS execquery
CROSS APPLY sys.dm_exec_sql_text(execquery.sql_handle) AS execsql
ORDER BY execquery.last_execution_time DESC

27
これは間違いなく標準のクエリ検索方法ですが、クエリがプランキャッシュに残っている限り(またはSQL Serverが再起動されるまで)情報を保持します。あなたはまだあなたの仕事を保存する習慣に入る必要があります。
マット

5
このクエリを実行するには、VIEW SERVER STATE権限が必要であることに注意してください
BornToCode

4
多くのクエリが実行されているデータベースでこのクエリを実行している場合は、フィルター条件を追加することをお勧めします。whereexecsql.textなどのwhere execsql.textのように、「%Some part to search to search by%」
Jeff Fol

3
クエリのおかげで、間違ったタブを誤って閉じてしまった場合に、かなりの時間を節約できました。ジャンク実行がたくさんあるので(別名、不要なもの)、余分なものをすべて一時テーブルにダンプし、それを読み取って、フィルター処理された余分なものをフィルター処理で少し追加できますか?
Sava Glodic 2016

3
この作品は私にぴったりです。午前中にそのスクリプトを開発してきたので、保存せずにウィンドウを閉じて泣き始めました。
RobsionKarls 2017年

167

あなたはありこれらの場所(使用しているWindowsのバージョンによって異なります)のいずれかでそれらを見つけることができます。

Windows XP

C:\Documents and Settings\YourUsername\My Documents\SQL Server Management Studio\Backup Files\

Windows Vista / 7/10

%USERPROFILE%\Documents\SQL Server Management Studio\Backup Files

または

%USERPROFILE%\AppData\Local\Temp

この情報源この情報源からググる


2
私が作業しているWindowsバージョンはWindows 7です。この場所にファイルはありません。空っぽです。AppData \ Local \ Tempの下にあるMicrosoft SQL Serverクエリファイルはkbです。
BumbleBee 2013

2
これはすばらしいことです。システムがクラッシュしてから数時間の作業を節約できました。内のファイルを見つけたBackup Files\Solution1
ケビン教皇

4
失われたクエリを書き直す必要がなく、私が節約した時間数だけこの回答に賛成票を投じることができれば。
ctorx 14

1
一時フォルダを探してみました。〜vsA497.sqlのようなファイルは存在しますが、それぞれのサイズは0kbです。開いた後でも、ファイルに行が書き込まれません。バックアップフォルダにはファイルがありません。
マーク

1
C:\ Users \ YourUserName \ AppData \ Local \ Tempは、私が失ったものを正確に回復しました。5分前にWindows 10、SQL Server Management Studio 17でファイルが失われた
dmoney

52

パーティーに少し遅れましたが、前述の場所はどれも私にとってはうまくいきませんでした-何らかの理由で、バックアップ/自動リカバリファイルが私のPCのVS15フォルダーに保存されました(これはSQL Server 2016 Management Studio用です)

C:\ Users \ YOURUSERNAME \ Documents \ Visual Studio 2015 \ Backup Files \ Solution1

Tools-Options-Environment-Import and Export Settingsを確認することをお勧めします。設定ファイルの場所がバックアップフォルダーを指している可能性があります。これについては、VS15フォルダーの下を見ることはなかったでしょう。


7
これはSSMS 2017に当てはまります。代わりに、このVS15フォルダーに失われたファイルが見つかりました
irgnosis

1
このフォルダをチェックアウトしてください。私もここに隠れていました。
Radderz、2018

1
ありがとう、ありがとう、ありがとう!!!!予想外のクラッシュでかなり大きなスクリプトが失われていた場合、これが最終的に移動先のフォルダーになります。
Unfallener 2018

1
ありがとう-スクリプトがどこにも見つかりませんでした!
-keithm

2
これにはヒーローバッジが必要です
ジョーシュマッカー

32

すべてを見つけることができる次の場所を使用します~AutoRecover.~vs*.sql自動回復ファイル):

C:\Users\<YourUserName>\Documents\SQL Server Management Studio\Backup Files\Solution1

4
「このフォルダは空です」
アドルフニンニク

これは私が覚えていないものです。私はそれを投稿されたフォルダに制限しなかった、そして私がSSMSの死に失ったものを見つけた。
ジェフモーデン

1
または、試すことができます:C:\ Users \ YourUserName \ My Documents \ SQL Server Management Studio \ Backup Files \ Solution1
Mandar

11

提案されたディレクトリが見つからないか、リカバリファイルが見つからない可能性があります。保存されていないスクリプトを使用してクラッシュをレプリケートし、このディレクトリに誘導しました。

C:\ Users \ user \ OneDrive \ Documents \ Visual Studio 2015 \ Backup Files \ Solution1

だから、多分これはあなたの日を節約します:)


9

私はこれが古いスレッドであることを知っていますが、ssmsがクラッシュした後にスクリプトを取得したい人は、次のようにします

  1. ローカルディスクを開く(C):
  2. ユーザーフォルダを開く
  3. ユーザー名に関連するフォルダーを見つけて開きます
  4. ドキュメントファイルをクリックします
  5. Visual Studioフォルダーをクリックするか、表示されている場合はバックアップファイルフォルダーをクリックします。
  6. バックアップファイルフォルダをクリックします
  7. Solution1フォルダーを開く
  8. 回復された一時ファイルはここにあります。ファイルはvsで終わり、その後にvs9E61などの番号が続きます。
  9. ファイルを開き、失われたコードを確認します。お役に立てば幸いです。これらの正確な手順は私にとってはうまくいきました。私はSQL Server Express 2017を使用しています

7

私はWindows 8を使用していて、不足しているスクリプトを以下のパスで見つけました:

C:\Users\YourUsername\Documents\SQL Server Management Studio\Backup Files

7

SSMS >>ツール>>オプション>>環境>>自動回復に移動します

2つの異なる設定があります。

1)自動回復情報を毎分保存する

このオプションは、一定の間隔でSQLクエリファイルを保存します。損失を避けるために、このオプションを可能な最小値に設定してください。この値を5に設定した場合、最悪の場合、最後の5分の作業が失われる可能性があります。

2)自動回復情報を数日間保持する

このオプションは、指定した日の自動回復情報を保持します。ただし、誤ってSQL Server Management Studioを開いてファイルを回復することをお勧めします。この重要なタスクを先延ばしにしないでください。


11
企業の自動インストールにより、不在時にマシンが再起動しました。これにより、すべてのアプリが強制的に閉じられます。開いているタブがあり、保存されていないタブもあります。私はこれらのオプションを両方とも選択し、他のレスポンダーによって述べられた他の場所に回復オプションも「一時」文書もありません
アドルフニンニク

私には両方のオプションがありますが、SSMSが失敗した後、何も回復しませんでした。
ケイト

6

SSMSBoostアドイン(現在は無料)

  • 実行されたすべてのステートメントを追跡します(ディスクに保存されます)
  • SQL Editorの内容のスナップショットを定期的に保存します。スクリプトの変更の履歴を保持します。「最良の」バージョンが最後ではなく、中間状態を復元したい場合があります。
  • 開いているタブを追跡し、再起動後にそれらを復元することができます。保存されていないタブも復元されます。

+トンの他の機能。(私はアドインの開発者です)


1
ちなみに、これは素晴らしいアドインです。節約できたと思っていたのに、できなかった2時間の作業を節約できました。(私はAndreiとは関係ありません)
ジョナサン

私がもっと投票できることを望みます。SSMSBoostは「私のベーコンを救った」ことを2回以上しました。
Andrew Steitz 2016

4

SSMSウィンドウを誤って閉じた場合、ここでファイルを見つけることができます

C:\Windows\System32\SQL Server Management Studio\Backup Files\Solution1

OS Windows 8.1?
Kiquenet

4

次の場所からファイルを復元できました。

C:\Users\<yourusername>\Documents\SQL Server Management Studio\Backup Files\Solution1

タブごとに異なるリカバリファイルがあるはずです。私はあなたがそれらを失った日付のファイルを探すと思います。

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