Khôi phục các tập lệnh truy vấn SQL chưa được lưu


196

Làm cách nào để khôi phục các tập lệnh chưa được lưu nếu SSMS gặp sự cố / tab chưa được lưu vô tình bị đóng?


3
Tôi đồng ý với John về nguyên tắc; tuy nhiên, điều này thỉnh thoảng xảy ra với tất cả chúng ta: "Tôi nghĩ rằng tôi đã lưu nó!" Tạo thói quen TIẾT KIỆM ĐẦU TIÊN trước khi bạn bắt đầu viết mã. Ctrl + S là bạn của bạn!
Graeme

4
Hãy thử SSMSBOOST (chế độ cộng đồng miễn phí) hoặc Redgate (không miễn phí, nhưng rất hữu ích)
Vasily Ivoyzha

2
Thật không may, SSMS hiện không có tính năng Hoàn tác Tab Đóng. Tôi đã tạo Mục kết nối sau đây để Microsoft hy vọng sẽ thêm mục này trong phiên bản trong tương lai: connect.microsoft.com/QueryServer/Feedback/Details/1044403
Rob Nicholson

Câu trả lời:


425

Đăng bài này trong trường hợp nếu ai đó vấp vào cùng một vấn đề.

Googled cho Lấy các tập lệnh chưa lưu và tìm thấy một giải pháp.

Chạy đoạn selectscript sau . Nó cung cấp một danh sách các tập lệnh và thời gian thực hiện trong 24 giờ qua. Điều này sẽ hữu ích để truy xuất các tập lệnh, nếu chúng ta đóng cửa sổ truy vấn của mình trong phòng quản lý SQL Server mà không lưu tập lệnh. Nó hoạt động cho tất cả các tập lệnh thực thi không chỉ là một khung nhìn hoặc thủ tục.

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
Đó chắc chắn là một cách tìm kiếm truy vấn bên ngoài của bạn, nhưng nó sẽ chỉ lưu giữ thông tin miễn là truy vấn vẫn còn trong bộ đệm của kế hoạch (hoặc cho đến khi SQL Server được khởi động lại, tùy theo điều kiện nào đến trước). Bạn vẫn nên tập thói quen tiết kiệm công việc của mình.
Matt

5
Có thể đáng lưu ý rằng bạn phải có quyền XEM
TỪ

4
Nếu bạn đang chạy truy vấn này trên cơ sở dữ liệu có nhiều truy vấn chạy với nó, tôi khuyên bạn nên thêm một điều kiện bộ lọc là mệnh đề where như execsql.text như '% Một số đoạn script của bạn để tìm kiếm theo%'
Jeff Fol

3
Cảm ơn cho truy vấn, điều này đã tiết kiệm cho tôi một khoảng thời gian đáng kể khi tôi vô tình đóng tab sai. Vì có rất nhiều thực thi rác (còn gọi là thứ bạn không muốn), tôi có thể cung cấp một bổ sung nhỏ để lọc ra những thứ dư thừa bằng cách bỏ tất cả vào một bảng tạm thời và sau đó đọc nó, được lọc không?
Sava Glodic

3
công việc này hoàn hảo đối với tôi, tôi đã phát triển kịch bản đó cả buổi sáng sau đó tôi đóng cửa sổ mà không lưu nó và bắt đầu khóc.
RobsionKarls

167

Bạn thể tìm thấy chúng ở một trong những vị trí này (tùy thuộc vào phiên bản Windows bạn đang sử dụng).

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

HOẶC LÀ

%USERPROFILE%\AppData\Local\Temp

Googled từ nguồn nàynguồn này.


2
Phiên bản Windows tôi đang làm việc là Windows 7. Không có tệp nào ở vị trí này. Nó trống rỗng. trong AppData \ Local \ Temp các tệp truy vấn Microsoft SQL Server là o kb.
BumbleBee

2
Điều này thật tuyệt - đã tiết kiệm cho tôi một vài giờ làm việc sau khi gặp sự cố hệ thống! Tìm thấy các tập tin trongBackup Files\Solution1
Kevin Pope

4
Giá như tôi có thể bình chọn câu trả lời này cho số giờ tôi đã lưu không phải viết lại truy vấn bị mất.
ctorx

1
đã thử tìm trong thư mục temp .. các tệp như ~ vsA497.sql tồn tại nhưng kích thước của mỗi tệp là 0kb, ngay cả sau khi mở tôi không nhận được dòng nào được ghi trong tệp. Trong thư mục sao lưu không có tập tin.
Đánh dấu

1
C: \ Users \ YourUserName \ AppData \ Local \ Temp đã phục hồi chính xác những gì tôi đã mất. Tệp đã bị mất 5 phút trước, Windows 10, SQL Server Management Studio 17.
dmoney

52

Đến bữa tiệc muộn một chút, nhưng không có địa điểm nào được đề cập trước đây làm việc cho tôi - vì một số lý do, các tệp sao lưu / tự động phát hiện đã được lưu trong thư mục VS15 trên PC của tôi (đây là cho SQL Server 2016 Management Studio)

C: \ Users \ YourUSERNAME \ Documents \ Visual Studio 2015 \ Sao lưu tệp \ Solution1

Bạn có thể muốn kiểm tra Cài đặt Công cụ-Tùy chọn-Môi trường-Nhập và Xuất, vị trí của tệp cài đặt có thể chỉ bạn đến thư mục sao lưu của bạn - Tôi sẽ không bao giờ nhìn vào thư mục VS15 này.


7
Điều này đúng với SSMS 2017, thay vào đó tôi đã tìm thấy các tệp bị mất của mình trong thư mục VS15 này
irgnosis

1
Đừng kiểm tra thư mục này; Của tôi cũng đã trốn ở đây.
Radderz

1
CẢM ƠN BẠN, CẢM ƠN BẠN, CẢM ƠN BẠN!!!! Có một kịch bản khá lớn bị mất do sự cố bất ngờ, và đây là thư mục mà nó đã kết thúc !!!
Unfallener

1
Cảm ơn bạn - Tôi không thể tìm thấy kịch bản của mình ở bất cứ đâu!
keithm

2
Bạn sẽ nhận được một huy hiệu anh hùng cho cái này
Joe Schmucker

32

Sử dụng vị trí sau nơi bạn có thể tìm thấy tất cả ~AutoRecover.~vs*.sql( tệp khám phá tự động ):

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

4
"thư mục này trống"
adolf tỏi

Đây là cái mà tôi không thể nhớ. Tôi đã không giới hạn nó vào thư mục được đăng và tìm thấy những gì tôi đã mất cho một cái chết SSMS.
Jeff Moden

1
Hoặc bạn có thể thử: C: \ Users \ YourUserName \ My Documents \ SQL Server Management Studio \ Backup Files \ Solution1
Mandar

11

Có thể bạn không tìm thấy các thư mục được đề xuất hoặc tệp khôi phục của bạn bị thiếu, cảm ơn chúa tôi đã sao chép sự cố với một tập lệnh chưa được lưu và dẫn tôi đến thư mục này:

C: \ Users \ user \ OneDrive \ Documents \ Visual Studio 2015 \ Sao lưu tệp \ Solution1

Vì vậy, có lẽ điều này tiết kiệm ngày của bạn :)


9

Tôi biết đây là một chủ đề cũ nhưng đối với bất cứ ai đang tìm cách lấy một tập lệnh sau khi các sự cố ssms làm như sau

  1. Mở đĩa cục bộ (C):
  2. Mở thư mục người dùng
  3. Tìm thư mục có liên quan cho tên người dùng của bạn và mở nó
  4. Nhấp vào tệp Tài liệu
  5. Nhấp vào thư mục Visual Studio hoặc nhấp vào Thư mục tệp sao lưu nếu hiển thị
  6. Nhấp vào Thư mục tệp sao lưu
  7. Mở thư mục Solution1
  8. Bất kỳ tập tin tạm thời được phục hồi sẽ ở đây. Các tệp sẽ kết thúc bằng vs theo sau là một số như vs9E61
  9. Mở các tập tin và kiểm tra mã bị mất của bạn. Mong rằng sẽ giúp. Những bước chính xác vừa làm việc cho tôi. tôi đang sử dụng máy chủ Sql Express 2017

7

Tôi đang sử dụng Windows 8 và tìm thấy các tập lệnh bị thiếu trong đường dẫn bên dưới:

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

7

Truy cập SSMS >> Công cụ >> Tùy chọn >> Môi trường >> Tự động khôi phục

Có hai cài đặt khác nhau:

1) Lưu thông tin tự động phục hồi mỗi phút

Tùy chọn này sẽ lưu tệp Truy vấn SQL theo khoảng thời gian nhất định. Đặt tùy chọn này thành giá trị tối thiểu có thể để tránh mất mát. Nếu bạn đã đặt giá trị này thành 5, trong trường hợp xấu nhất có thể, bạn có thể mất 5 phút cuối của công việc.

2) Giữ thông tin tự động phục hồi trong nhiều ngày

Tùy chọn này sẽ lưu giữ thông tin AutoRecovery cho những ngày được chỉ định. Mặc dù vậy, tôi đề nghị trong trường hợp vô tình mở SQL Server Management Studio ngay lập tức và khôi phục tệp của bạn. Đừng trì hoãn nhiệm vụ quan trọng này cho những ngày trong tương lai.


11
Cài đặt tự động của công ty đã khởi động lại máy của tôi khi tôi vắng mặt - điều này sẽ buộc đóng tất cả các ứng dụng. Có tab mở, một số lưu không. Tôi có cả hai tùy chọn này được chọn và không có tùy chọn khôi phục cũng như tài liệu 'temp' ở các vị trí khác được nêu bởi những người phản hồi khác
adolf tỏi

Tôi có cả hai lựa chọn nhưng không có gì được phục hồi sau khi SSMS thất bại.
Kate

6

Bổ trợ SSMSBoost (hiện miễn phí)

  • theo dõi tất cả các câu lệnh đã thực hiện (lưu chúng vào đĩa)
  • quy định lưu ảnh chụp nhanh nội dung SQL Editor. Bạn giữ lịch sử sửa đổi tập lệnh của bạn. Đôi khi phiên bản "tốt nhất" không phải là phiên bản cuối cùng và bạn muốn khôi phục trạng thái trung gian.
  • theo dõi các tab đã mở và cho phép khôi phục chúng sau khi khởi động lại. Các tab chưa lưu cũng được khôi phục.

+ tấn các tính năng khác. (Tôi là nhà phát triển của bổ trợ)


1
Đây là một bổ trợ tuyệt vời. Nó vừa tiết kiệm cho tôi hai giờ làm việc mà tôi nghĩ tôi đã cứu, nhưng không. (Tôi không có liên kết với Andrei)
Jonathan

Chúc tôi có thể bình chọn nhiều hơn. SSMSBoost đã "cứu thịt xông khói của tôi" hơn một lần.
Andrew Steitz

4

Bạn có thể tìm thấy các tệp ở đây, khi bạn vô tình đóng cửa sổ SSMS

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

HĐH Windows 8.1?
Kiquenet

4

Tôi đã có thể khôi phục các tập tin của mình từ vị trí sau:

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

Cần có các tệp phục hồi khác nhau trên mỗi tab. Tôi muốn nói tìm các tập tin cho ngày bạn mất chúng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.