【问题标题】:Migration issue with SQL AzureSQL Azure 的迁移问题
【发布时间】:2013-11-10 23:57:45
【问题描述】:

早些时候,我们在 SQL Server 2008 中拥有一个数据库,上个月我们将其移至 SQL Azure。

在表中,其中一列设置为标识,并设置了自动增量。此列也是主键,在许多其他表中作为外键引用。

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

将我们的数据库迁移到 SQL Azure 后,生成的值突然跳跃为

1687 1688 1689 10001 10002 10003 . . 20100 20101

在搜索时,我发现在 SQL Server 2012 和 SQL Azure 中“身份增量”无法保证。 SQL Azure 中也没有 SEQUENCE 功能(参考:http://connect.microsoft.com/SQLServer/feedback/details/723601/support-native-sequences-in-sql-azure)。

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

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

【问题讨论】:

    标签: azure-sql-database


    【解决方案1】:

    http://msdn.microsoft.com/zh-tw/library/ms176057.aspx

    尝试使用 DBCC CHECKIDENT 来处理您的列:

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

    【讨论】:

      【解决方案2】:

      如果您尝试导入数据,则应在批量加载数据时使用身份插入以保持完整性。

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

      【讨论】:

        猜你喜欢
        • 2013-02-15
        • 1970-01-01
        • 2016-04-14
        • 2021-09-20
        • 2018-10-18
        • 1970-01-01
        • 2014-10-05
        • 2019-09-25
        • 2014-10-13
        相关资源
        最近更新 更多