MS SQL在插入后立即自动删除新插入的行



我有一个奇怪的问题。在MSSQL数据库中,我在该数据库中有多个表,但其中只有两个这样做:

  1. 我插入新行
  2. 获取行计数(增加1(
  3. 在几秒钟内再次获取行计数(这次是减少的(,并且新行不再在表中

我用来插入行并获取计数的查询:

INSERT INTO [dbo].[CSMobileMessages]
([MessageSID],[IssueID],[UserSent])
VALUES
('213',0,'blabla')
SELECT count([IDx])
FROM [dbo].[CSMobileMessages]

SQL查询返回"0";1行受影响";我甚至从identity列中获取新行ID。没有任何错误。我签入了profiler,该profiler状态为成功插入了1行,没有发生其他任何事情。该表没有触发器。仅对标识字段(IDx(进行索引,用户使用的是";sa";具有完全访问权限。尝试使用不同的用户,但发生相同的情况。

该表被称为";CSMobileMessages";所以我创建了一个新表:

CREATE TABLE [dbo].[CSMobileMessages2](
[IDx] [int] IDENTITY(1,1) NOT NULL,
[MessageSID] [varchar](50) NULL,
[IssueID] [int] NOT NULL,
[UserSent] [varchar](50) NULL,
CONSTRAINT [PK_CSMobileMessages2] PRIMARY KEY CLUSTERED 
(
[IDx] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CSMobileMessages2] ADD  CONSTRAINT [DF_CSMobileMessages2_IssueID]  DEFAULT ((0)) FOR [IssueID]
GO

我在新表中插入了1000行,结果就成功了。因此,我删除了旧表(CSMobileMessages(,并将新表从CSMobileMmessages2重命名为CSMobileMMessages。一旦我这样做,插入的行就会被删除,我将获得与旧表完全相同的新表的行数。而且我不能再插入行了。没有任何服务或任何其他软件触及此表。但是,如果我重新启动服务器,我可以插入1个新行,然后再次开始。

编辑:我使用MSSMS并远程连接到数据库,但我也在服务器上进行了本地尝试,结果也是如此。一个服务使用了这个表,但几天前开始时我禁用了它。在此之前,该服务愉快地运行了1年,没有出现任何问题。我仔细检查了一下,以确保服务已关闭,除了我,没有人连接到那张桌子。

以前有人见过这个问题吗?知道是什么原因造成的吗?

我放弃了,作为最后一次尝试,整个数据库从几天前的备份中重置,现在它正常工作。我没有把这个问题设置为答案,因为即使它解决了问题,我仍然不知道发生了什么,因为在我20多年的编码生涯中,我从未见过这样的事情。感谢每一位试图帮助提出想法的人!

最新更新