插入和提交后行从 SQL Server 表中消失

Posted

技术标签:

【中文标题】插入和提交后行从 SQL Server 表中消失【英文标题】:Rows disappears from SQL Server Table after Insert and Commit 【发布时间】:2018-11-27 15:07:35 【问题描述】:

我有一个只有一列的 SQL Server 表,下面是我用来插入数据的查询。我总是在插入行后“COMMIT TRAN”,但新添加的行在我插入/提交 tran 几天后消失了。我从来没有在任何其他表上遇到过这个问题,而且我经常使用这些事务语句。任何人都可以帮助解释为什么这张桌子会一直发生这种情况?

这是我运行的查询:

Begin tran
    insert into ur77_licensee ([licensee name])
    values ('8210 - J.Crew')

    select * 
    from ur77_licensee
    where [licensee name] like '%8210%'

commit tran

【问题讨论】:

已删除。就那么简单。我会检查:1)触发器 2)作业 3)应用程序 4)询问有权访问该表的其他用户 也许您从另一个表中进行了级联删除。也许有工作删除它。也许有人删除了它。 没有其他用户对此表进行更改。如何检查触发器、作业、应用程序?你能帮忙澄清一下吗?我对 SQL 有点陌生,所以任何帮助都将不胜感激! 【参考方案1】:

您必须建立某种审计系统,这将是一个相当大的挑战。您的代码不会导致删除。我的猜测是有某种维护工作在做,但谁知道呢?我会:

将表的权限更改为仅允许特定用户进行更改 让您的代码使用该用户 等着有人来抱怨他们怎么不能再删除

如果每个人都以管理员身份运行,那么......这就是为什么你不让每个人都以管理员身份运行!

您也可以:

创建删除触发器。当一个项目被删除时,将其插入到删除表中,这至少会让你看到它发生的时间。

【讨论】:

以上是关于插入和提交后行从 SQL Server 表中消失的主要内容,如果未能解决你的问题,请参考以下文章

如何弄清楚为啥行从我的 SQL 服务器中消失了?

通过需要很长时间的访问将记录插入到 SQL Server 链接表中[重复]

将行从一个表插入到另一个表中,哪个 sql 更有效(外连接 vs 顺序扫描)

将行从一个链接表插入到另一个链接表

sql 显示如何选择某些列内容的COUNT和SUM。第1行从Customers表中选择列,以及COUNT

sql server如何如何从一个表中提取部分资讯插入到另一表中