0

我的 SQL Server 上有一个非常奇怪的问题。

每天晚上,我最近创建的 2 个表都会被自动截断......

我很确定它会被截断,因为我的 ON DELETE 触发器不会记录任何删除事务。此外,使用一些日志记录程序,我发现这发生在晚上 01:50 到 01:52 之间。所以我检查了服务器上的预定作业,没有发现任何东西。我只在我们的生产服务器上遇到这个问题。这就是为什么它非常关键。在克隆的测试服务器上一切正常。

我检查了事务日志条目(fn_dblog),但没有在那里找到任何截断日志。

如果有任何帮助或提示可以帮助我找出截断表格的进程/作业/用户,我将不胜感激。

谢谢

4

4 回答 4

1

根据个人经验,作为第一步,我将确定这是由于 DROP 语句还是 TRUNCATE 语句而发生的。要提供可能的答案,请使用 SSMS,右键单击对象资源管理器中的数据库名称,将鼠标悬停在 Reports >> Standard Reports 上,然后单击 Schema Changes History。

这将打开一个包含对象名称和类型列的简单报告。找到表的名称,单击 + 号展开,它将为您提供该表在对象级别发生的历史记录。如果你在那里找到了 DROP 语句,那么至少你知道你在寻找什么,同样如果没有 DROP 语句,你可能正在寻找一个 TRUNCATE。

于 2015-09-09T11:39:59.930 回答
0

检查以下查询,

将@var 声明为 varchar(max)='tblname' EXEC sp_depends @objname =@var;

它将返回正在使用您的表的存储过程名称的数量,如果您写错了,请尝试搜索任何截断查询。

于 2015-09-09T09:50:40.547 回答
0

非常感谢所有帮助过的人!

我找到了截断的原因。这是一个外部应用程序。

因此,如果您遇到同样的问题,我的提示是检查您可以访问数据的应用程序。

于 2015-09-10T09:15:40.300 回答
-3

不知道能不能帮你解决问题。我经常遇到以下情况。

看这个例子:

declare @t varchar(5)
    set @t='123456'
    select @t as output
    output:12345
于 2015-09-09T10:22:37.740 回答