如果SSMS崩溃/未保存选项卡意外关闭,如何恢复未保存的脚本?


您可以在这些位置之一找到它们(取决于您使用的Windows版本)。

Windows XP

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

Windows / 7/10角度来看

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

OR

%USERPROFILE%\AppData\Local\Temp

谷歌搜索了这个来源和这个来源。


把这个贴出来以防有人遇到同样的问题。

谷歌检索未保存的脚本,并找到了一个解决方案。

运行下面的选择脚本。它提供了一个脚本列表及其在过去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

使用下面的位置可以找到所有的~AutoRecover.~vs . *。SQL(自动恢复文件):

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

当您不小心关闭SSMS窗口时,您可以在这里找到文件

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

我能够从以下位置恢复我的文件:

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

每个选项卡应该有不同的恢复文件。我建议你找找你丢失文件的日期。


我使用的是Windows 8,在下面的路径中发现了缺失的脚本:

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

进入SSMS >> Tools >> Options >> Environment >> AutoRecover

有两种不同的设置:

1)每分钟保存一次自动恢复信息

该选项将在特定时间间隔保存SQL查询文件。将此选项设置为最小值以避免损失。如果您将这个值设置为5,在最坏的情况下,您可能会失去最后5分钟的工作。

2)保留自动恢复信息几天

此选项将自动恢复信息保留指定天数。不过,我建议万一发生意外,立即打开SQL Server Management Studio并恢复您的文件。不要把这项重要的任务拖到以后再做。


SSMSBoost插件(目前免费)

跟踪所有执行的语句(将它们保存在磁盘上) regular保存SQL Editor内容的快照。保留脚本修改的历史记录。有时“最好”的版本并不是最后的版本,您希望恢复中间状态。 跟踪打开的选项卡,并允许重新启动后恢复它们。未保存的选项卡也会恢复。

+大量其他功能。 (我是外接程序的开发者)


也许你没有找到建议的目录,或者你的恢复文件丢失了,感谢上帝,我用一个未保存的脚本复制了崩溃,并引导我到这个目录:

C:\Users\<用户名>\OneDrive\Documents\Visual Studio <version>\Backup Files\ solution

所以,也许这可以拯救你的一天:)


有点晚了,但之前提到的位置都不适合我-出于某种原因,备份/自动恢复文件保存在我PC上的VS15文件夹下(这是用于SQL Server 2016 Management Studio)

C:\Users\YOURUSERNAME\Documents\Visual Studio [version]\Backup Files\Solution1

ex:

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

你可能想要检查你的工具-选项-环境-导入和导出设置,设置文件的位置可以指向你的备份文件夹-我永远不会在VS15文件夹下寻找这个。


我知道这是一个旧线程,但对于任何希望在ssms崩溃后检索脚本的人来说,请执行以下操作

打开本地磁盘(C): 打开用户文件夹 找到与您的用户名相关的文件夹并打开它 点击Documents文件夹 单击Visual Studio文件夹或单击备份文件文件夹(如果可见) 单击备份文件文件夹 打开解决方案1文件夹 任何已恢复的临时 文件会在这里。文件将以vs结尾,后面跟着一个数字 例如vs9E61 打开文件并检查丢失的代码。 希望这能有所帮助。这些步骤对我很有效。我正在使用Sql 服务器Express 2017

ex:

C:\Users\[YourUsername]\Documents\Visual Studio [version]\Backup Files\Solution1

对于SSMS 18,我在以下位置找到了文件:

C:\Users\YourUserName\Documents\Visual Studio 2017\Backup Files\Solution1

对于SSMS 17,它被用于:

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

我使用免费的文件搜索程序Everything,搜索*。sql文件在我的C:驱动器,然后排序最后修改,然后浏览日期,我认为可能是最后执行。

它通常会从不同的位置调出大量的自动恢复文件。并且您不必担心最新版本的SSMS/VS将备份文件保存在该版本的哪里。


对于SSMS 18(特别是18.6),我在这里找到了我的备份C:\Windows\SysWOW64\Visual Studio 2017\备份文件\解决方案1。

向Matthew Lock致敬,他给了我在整个机器上搜索的想法!


上面的选项都没有帮助我恢复4天前在远程机器上执行的查询,该查询的脚本文件由于公司重新启动而没有保存并丢失。

我最终在系统视图sys的帮助下恢复了我的查询。Query_store_query和sys.query_store_query_text。

SELECT t.query_sql_text 
FROM sys.query_store_query_text t
INNER JOIN sys.query_store_query q 
    ON t.query_text_id = q.query_text_id
WHERE  q.last_execution_time between '2021-06-30' and '2021-07-03'

如果您仍然没有找到恢复文件夹,您可以尝试以下方法:

开放的地对地导弹。 在上面写一些查询。 等待一段时间,确保文件以静默方式保存。 打开任务管理器并终止SSMS应用程序。 重启地对地导弹。应该会提示您打开未保存的工作。 打开提议的文件并将鼠标悬停在文件选项卡上以查看其位置。


如果你碰巧有SSMS的RedGate工具,那么他们有一个非常有用的工具叫做标签历史,它会显示你所有打开和关闭的标签(甚至脚本,你写和关闭没有执行)。

在Toolkit工具栏上应该有一个按钮,看起来像这样,它会打开一个包含所有脚本列表的窗口(它也有一个搜索功能,所以你可以搜索你的脚本):

我知道这与大多数人无关,但它可能会帮助那些失去工作的人……