测试环境:
OS: Windows Server 2008 R2 Enterprise
SQL: SQL Server 2012 Enterprise
测试场景:
有SERVER A上数据库 DB101 搭建了镜像,镜像服务器为SERVER B.
数据库DB1上有表TB1,表TB1上有自增主键
CREATE TABLE [dbo].[TB1](
[ID] [int] IDENTITY(1,1) NOT NULL,
[C1] [int] NULL
) ON [PRIMARY]
在对表TB1插入两条数据后,表中自增列当期值为 2 发生故障转移
USE [master]
GO
ALTER DATABASE DB101 SET PARTNER FAILOVER
GO
故障转移后,对表TB1插入一条数据,发现表中自增列当期值变成1002
结论:假设故障转移前自增列的当前值为 X ,
在故障转移后,自增列的初始值会变成:((X/1000)+1)*1000+1
扩展: 在SQL SERVER 2012 的 ALWAYSON 上依然存在此问题
参考链接: