Azure sql database SQL Azure的迁移问题

Azure sql database SQL Azure的迁移问题,azure-sql-database,Azure Sql Database,早些时候,我们在SQLServer2008中有一个数据库,上个月我们将其移动到了SQLAzure 在表中,其中一列设置为Identity,并设置了auto increment。此列也是主键,在许多其他表中作为外键引用 当我们的数据库位于SQL Server 2008中时,此列值已正确递增,并且生成值的顺序没有问题 在将数据库移动到SQLAzure之后,生成的值突然跳变为 1687年 1688 1689 10001 10002 10003 . . 20100 20101 在搜索时,我发现在SQL

早些时候,我们在SQLServer2008中有一个数据库,上个月我们将其移动到了SQLAzure

在表中,其中一列设置为Identity,并设置了auto increment。此列也是主键,在许多其他表中作为外键引用

当我们的数据库位于SQL Server 2008中时,此列值已正确递增,并且生成值的顺序没有问题

在将数据库移动到SQLAzure之后,生成的值突然跳变为

1687年 1688 1689 10001 10002 10003 . . 20100 20101

在搜索时,我发现在SQL Server 2012和SQL Azure中“标识增量”是不保证的。SQL Azure中也没有序列功能(referee:)

我试图添加一个新列并删除有问题的列,但由于它是主键,并且依赖于其他表,所以我无法删除此列


这个迁移的数据库是业务关键型数据库。请尽快告诉我解决此问题的有效方法。

如果您试图导入数据,则在批量加载数据时应使用identity insert以保持完整性

如果问题是在使用应用程序的过程中,您得到了较大的跳跃,那么这应该不是问题,标识是一个代理键,并且这些值没有业务用途。如果它们确实有商业用途,那么您就有一个数据库设计问题,可能应该使用不同的方法生成值(即密钥池)。

尝试使用DBCC CHECKIDENT对列进行压缩:

DBCC CHECKIDENT 
( 
table_name
  [, { NORESEED | { RESEED [, new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]