症状
假设你已在 Microsoft SQL Server 2012 或 SQL Server 2014 中定义了 sequence 对象。 当你在同一序列对象上并行执行 sp_sequence_get_range 系统存储过程和 下一个值 (例如,在不同的并发连接或多线程应用程序中)时,将生成重复序列值。
原因
出现此问题的原因是,并行在同一序列对象中执行函数时 sp_sequence_get_range 系统存储过程和 下一个值 的竞争条件。 这两个用户都可以读取和写入序列生成器的当前值。 但是,它们之间缺少正确的同步机制。
解决方案
服务包信息
若要解决此问题,请获取 SQL Server 2014 的 Service Pack 1。
有关 SQL Server 2014 Service Pack 1 (SP1)的详细信息,请参阅 在 SQL server 2014 Service Pack 1 中修复的 bug。此问题首先在 SQL Server 的以下累积更新中修复。
SQL Server 2014 累积更新6 /en-us/help/3031047
SQL Server 2012 SP2 的累积更新4 /en-us/help/3007556
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。