【问题标题】:Recover Deleted Rows in OUTPUT clause恢复 OUTPUT 子句中的已删除行
【发布时间】:2021-04-05 09:41:07
【问题描述】:

我在 SSMS 中运行了以下查询,但没有在表变量中捕获结果。有什么方法可以使用临时创建的 DELETED 表获取已删除的行?我还没有关闭 SQL 会话。我在运行以下查询的同一会话中。

delete from [AdventureWorksDW2014].[dbo].[FactCallCenter]
output deleted.*
where FactCallCenterID = 119

【问题讨论】:

  • 是否 SSMS 已将输出的行捕获到其结果网格中(请注意,鉴于它是删除查询,可能会显示文本结果流。如果您看到“10000 行受影响”,请按 Ctrl-D 到切换到数据网格视图)?这里没有 OUTPUT INTO,因此这些行没有放入 SQLServer 知道的任何内容中
  • 如果您打开了结果窗口,您可以将该数据复制到某个东西中,然后将它们转换为 DDL 和 DML 语句,否则不,它们消失了。您需要将RESTORE 数据库置于DELETE 之前的位置。
  • Caius - 是的,我能够在网格中看到结果。
  • Larnu - 是的,窗口是打开的。你能按照你说的给我SQL来复制数据吗?

标签: sql sql-server-2012 output recover


【解决方案1】:

不,来自OUTPUT 的结果集没有INTO 像任何其他SELECT 一样直接发送给客户端。因此,如果此后您没有运行其他查询,您应该能够在 SSMS 中看到。

如果您需要取消删除行,请从备份中恢复。如果做不到这一点,请找到可以重放事务日志的软件。确保临时备份软件不会截断事务日志。

【讨论】:

    猜你喜欢
    • 2015-12-18
    • 1970-01-01
    • 2016-02-20
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多