我在两个不同的服务器上有两个相同的数据库:一个主服务器和一个备份服务器用户目前在两个服务器中。我们在db中的tblOrder中有一个OrderId列作为自动递增主键。现在,当我将orderid发布到我们的amazon服务器时,它有时会显示错误,因为两个数据库上的orderid是相同的数字,并且系统不接受重复的orderid。
我想从服务器获取最大orderid,然后将新的orderid提供给当前工作的数据库。我将从中删除自动递增种子,以便在插入命令时我将手动插入orderid。
答案 0 :(得分:4)
解决方案:
如前所述,您可以将每个标识字段的增量更改为2,并使一个服务器的种子为1,另一个服务器的种子为2.
假设您没有预见到在每台服务器上处理超过10亿个订单,只需将第二台服务器上的种子设置为1,000,000,000。无需更改增量。
使用uniqueidentifier
(GUID)作为主键而不是整数。对于SQL Server 2005及更高版本,您可以将默认约束设置为NEWSEQUENTIALID(),以防止插入不断创建页面拆分。
答案 1 :(得分:1)
在MS-SQL中,您可以为自动编号字段指定种子和增量。 使种子不同并设置Increment = 2