【问题标题】:Recover unsaved SQL query scripts恢复未保存的 SQL 查询脚本
【发布时间】:2013-02-08 16:47:31
【问题描述】:

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

【问题讨论】:

  • 我原则上同意约翰的观点;然而,这种情况时常发生在我们所有人身上:“我以为我救了它!”养成在开始编码之前先保存的习惯。 Ctrl+S 是你的朋友!
  • 试试 SSMSBOOST(免费社区模式)或 Redgate(不是免费的,但非常有用)
  • 不幸的是,SSMS 目前没有撤消关闭的选项卡功能。我创建了以下连接项,因此微软希望在未来的版本中添加它:connect.microsoft.com/SQLServer/Feedback/Details/1044403
  • Notepad++ 一直在宠我:(

标签: sql sql-server tsql sql-server-2012 ssms


【解决方案1】:

发布这个以防万一有人遇到同样的问题。

在 Google 上搜索 Retrieve unsaved Scripts 并找到了解决方案。

运行以下 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

【讨论】:

  • 这绝对是一种开箱即用的方式来查找您的查询,但只要查询保留在计划缓存中(或直到 SQL Server 重新启动,以先到者为准),它只会保存信息.您仍然应该养成保存工作的习惯。
  • 可能值得注意的是,您必须具有 VIEW SERVER STATE 权限才能运行此查询
  • 如果你在一个有很多查询的数据库上运行这个查询,我建议添加一个过滤条件是 where 子句,例如 where execsql.text like '%Some part of your script to按%'搜索
  • 感谢您的询问,当我不小心关闭了错误的选项卡时,这为我节省了大量时间。由于有很多垃圾执行(也就是你不想要的东西),我可以通过将它们全部转储到临时表中然后读取它来过滤掉多余的东西,然后过滤吗?
  • 这项工作非常适合我,我整个上午都在开发那个脚本,然后我没有保存就关闭了窗口并开始哭泣。
【解决方案2】:

可能可以在这些位置之一找到它们(取决于您使用的 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

Googled from this sourcethis source.

【讨论】:

  • 我正在使用的 Windows 版本是 Windows 7。此位置没有文件。它是空的。在 AppData\Local\Temp 下,Microsoft SQL Server 查询文件正常。
  • 这太棒了 - 在系统崩溃后为我节省了几个小时的工作时间!在Backup Files\Solution1中找到文件
  • 如果我可以为我节省的小时数投票这个答案,而不必重写丢失的查询。
  • 尝试在临时文件夹中查找.. 存在 ~vsA497.sql 之类的文件,但每个文件的大小为 0kb,即使打开后我也没有在文件中写入任何行。备份文件夹中没有文件。
  • C:\Users\YourUserName\AppData\Local\Temp 完全恢复了我丢失的内容。文件在 5 分钟前丢失,Windows 10,SQL Server Management Studio 17。
【解决方案3】:

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

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

例如:

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

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

【讨论】:

  • 这对于 SSMS 2017 是正确的,我在这个 VS15 文件夹中找到了我丢失的文件
  • 请检查此文件夹;我的也躲在这里。
  • 老兄。哇。我正要放弃而你救了我...很多...我的意思是很多工作。我正在做一个复杂的过渡,我在这个文件中有关于如何移动 prod 的所有注释。非常感谢。
  • 太棒了,远程机器随机重启,我花了几个小时为一个明天到期的客户编写一个非常重要/复杂的脚本,我要退出 lmao,谢谢大家
  • 谢谢!我在这台电脑 > 文档 > Visual Studio 2015 > 备份文件 > 解决方案 1 > 中找到了它们
【解决方案4】:

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

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

【讨论】:

  • "此文件夹为空"
  • 这是我想不起来的那个。我没有将其限制在发布的文件夹中,而是找到了我因 SSMS 死亡而丢失的内容。
  • 或者你可以试试:C:\Users\YourUserName\My Documents\SQL Server Management Studio\Backup Files\Solution1
【解决方案5】:

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

  1. 打开本地磁盘 (C):
  2. 打开用户文件夹
  3. 找到与您的用户名相关的文件夹并打开它
  4. 点击文档文件夹
  5. 单击 Visual Studio 文件夹或单击备份文件文件夹(如果可见)
  6. 单击备份文件文件夹
  7. 打开解决方案 1 文件夹
  8. 任何恢复的临时 文件将在这里。文件将以 vs 结尾,后跟一个数字 比如vs9E61
  9. 打开文件并检查丢失的代码。 希望有帮助。这些确切的步骤对我有用。我正在使用 Sql 服务器 Express 2017

例如:

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

【讨论】:

    【解决方案6】:

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

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

    所以,也许这可以节省你的时间:)

    【讨论】:

      【解决方案7】:

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

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

      对于 SSMS 17,它曾经位于:

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

      【讨论】:

      • 谢谢你!,你为我节省了很多时间。上述解决方案也适用于 Windows server 2012。
      【解决方案8】:

      我使用的是 Windows 8,并在以下路径中找到了缺少的脚本:

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

      【讨论】:

        【解决方案9】:

        转到 SSMS >> 工具 >> 选项 >> 环境 >> 自动恢复

        有两种不同的设置:

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

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

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

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

        【讨论】:

        • 公司自动安装在我不在的情况下重新启动了我的机器 - 这将强制关闭所有应用程序。有标签打开,有些保存了一些没有。我选择了这两个选项,并且在其他响应者所述的其他位置没有恢复选项或“临时”文档
        • 我有两个选项,但在 SSMS 失败后没有任何恢复。
        【解决方案10】:

        SSMSBoost 插件(目前免费)

        • 跟踪所有执行的语句(将它们保存到磁盘)
        • 定期保存 SQL 编辑器内容的快照。您保留脚本修改的历史记录。有时“最佳”版本不是最后一个,您希望恢复中间状态。
        • 跟踪打开的选项卡并允许在重新启动后恢复它们。未保存的标签页也会恢复。

        + 大量其他功能。 (我是插件的开发者)

        【讨论】:

        • 顺便说一句,这是一个了不起的插件。它刚刚为我节省了两个小时的工作,我以为我已经节省了,但没有。 (我与安德烈没有任何关系)
        • 希望我能投票更多。 SSMSBoost 不止一次“救了我的培根”。
        【解决方案11】:

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

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

        【讨论】:

        • 操作系统 Windows 8.1 ?
        【解决方案12】:

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

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

        每个选项卡应该有不同的恢复文件。我会说寻找丢失日期的文件。

        【讨论】:

          【解决方案13】:

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

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

          【讨论】:

          • 谢谢你!我最终使用了 Windows 10 上的内置搜索,并将其缩小到今天修改的文件,以查找我的存储位置。
          • 是的,这有帮助,上述解决方案无济于事,但我发现的一切。谢谢。
          【解决方案14】:

          对于 SSMS 18(特别是 18.6),我在这里找到了我的备份 C:\Windows\SysWOW64\Visual Studio 2017\Backup Files\Solution1

          感谢 Matthew Lock 给了我在我的整个机器上搜索的想法!

          【讨论】:

            【解决方案15】:

            以上选项均无法帮助我恢复 4 天前在远程计算机上执行的查询,该查询的脚本文件未保存并且由于公司重启而丢失。

            我最终在系统视图 sys.query_store_querysys.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'
            

            【讨论】:

            • 无效的对象名称'sys.query_store_query_text'。
            【解决方案16】:

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

            • 打开 SSMS。
            • 在上面写一些查询。
            • 稍等片刻,确保文件被静默保存。
            • 打开任务管理器并终止 SSMS 应用程序。
            • 重新打开 SSMS。系统会提示您打开未保存的工作。
            • 打开建议的文件并将鼠标悬停在文件选项卡上以查看其位置。

            【讨论】:

              猜你喜欢
              • 2015-01-07
              • 1970-01-01
              • 1970-01-01
              • 2012-03-18
              • 1970-01-01
              • 1970-01-01
              • 2017-09-25
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多