.net SQL表标识种子属性更改没有明显原因

.net SQL表标识种子属性更改没有明显原因,.net,database,sql-server-2012,identity,.net,Database,Sql Server 2012,Identity,我有一个程序,我在两个不同的地方有同一个数据库的两个副本。在这两个数据库中,用户可以向某些表添加新条目,并且在一天结束时,使用执行同步的自定义应用程序同步数据库。为了确保ID不会相互交叉,第一个数据库ID从1开始,另一个数据库从1000000开始 由于某些原因,ID从1开始的数据库似乎有时会移动到1000000,因此当用户在同步后创建新条目时,会发送主键冲突,程序停止工作 由于许多原因,我无法进行简单的同步 为了防止出现问题,我尝试在每次同步后使用下面的代码重新设置表的种子,但即使这样似乎也会发

我有一个程序,我在两个不同的地方有同一个数据库的两个副本。在这两个数据库中,用户可以向某些表添加新条目,并且在一天结束时,使用执行同步的自定义应用程序同步数据库。为了确保ID不会相互交叉,第一个数据库ID从1开始,另一个数据库从1000000开始

由于某些原因,ID从1开始的数据库似乎有时会移动到1000000,因此当用户在同步后创建新条目时,会发送主键冲突,程序停止工作

由于许多原因,我无法进行简单的同步

为了防止出现问题,我尝试在每次同步后使用下面的代码重新设置表的种子,但即使这样似乎也会发生

DECLARE @MaxIdSuivi bigint
SELECT @MaxIDSuivi = max(id) from t_Suivis  where id < 1000000
SET @MaxIDSuivi = ISNULL(@MaxIDSuivi,0)
DBCC CHECKIDENT (t_Suivis, reseed, @MaxIDSuivi)
我在之后就开始了,但是,这可能是原因吗

编辑:在一些测试之后,我发现如果我在一个表中插入一个高于当前种子的ID,那么种子会自动修改,以适应我刚刚插入的ID之后的下一个ID。例如,如果我输入eed 1000 002,种子将更改为1000002,因此下一个id将是1000003,这在我的情况下是完全错误的。有没有任何方法可以防止这种情况发生,或者是从服务器中的某些配置,或者是从TSQL中的选项


这是目前我们系统中的主要问题。

问题可能出现在您的自定义应用程序中,而不是数据库中。DBCC CHECKIDENT T_Suivis,NORESEED在重新设定种子后会报告什么?要回答您的编辑,为什么不在每次插入1000000以上后使用重新设定的代码。我以为你就是这么做的。除了最基本的情况外,SQL Server中的身份系统在所有情况下都设计得极为错误。期待问题。用顺序来代替。@Bob:你是对的,但有时情况并非如此,这就解释了问题所在。我会把它修好,让它每次都这样做。至于Usr,我不知道序列。我会在以后的项目中检查
SET IDENTITY_INSERT T_Suivis ON