Sql server 2008 sql server for interger中的下一个序列跳转问题

Sql server 2008 sql server for interger中的下一个序列跳转问题,sql-server-2008,sql-server-2008-r2,sql-server-2012,Sql Server 2008,Sql Server 2008 R2,Sql Server 2012,将数据插入表时出现奇怪错误 CREATE TABLE [dbo].[Requests]( [RequestID] [int] IDENTITY(1,1) NOT NULL, [LRequestID] [nvarchar](max) NULL, ) 我有一个sp,它会将最后插入的值返回到这个表中 CREATE PROCEDURE [dbo].[GetSequenceValue] @name as nvarchar(100) AS BEGIN

将数据插入表时出现奇怪错误

CREATE TABLE [dbo].[Requests](
    [RequestID] [int] IDENTITY(1,1) NOT NULL,
    [LRequestID] [nvarchar](max) NULL,
)
我有一个sp,它会将最后插入的值返回到这个表中

    CREATE PROCEDURE [dbo].[GetSequenceValue]   
    @name as nvarchar(100)  
AS
BEGIN   
    SET NOCOUNT ON;

    IF @name=N'Request' SELECT NEXT VALUE FOR [dbo].[RequestNumber] AS [Value] 
END
现在,我使用此sp获取最后插入的记录,并将此值放入可访问此值的文件中。令人惊讶的是,它的价值正在跳跃

我在做下面的事情

   CREATE TABLE #tmpTableRequests
    (
        OutputValue VARCHAR(100)
    )
    INSERT INTO #tmpTableRequests (OutputValue)   
    declare @requestidjumpissue int
    EXEC GetSequenceValue'request'
    select @RequestIDForanothertable= OutputValue FROM #tmpTableRequests
        print @RequestIDForanothertable
但在这里,它是跳跃的值,这意味着当我插入临时表时,如果实际插入的值是10,则显示为12


请说明我在这里做错了什么。

下面是这个案例的解决方案

Sequence Generator提供了另一种创建标识列的方法。如果我想得到最后一个插入的Column,我们可以这样做,而且速度更快。多亏了SQL2008R2。 创建过程[dbo]。[GetSequenceValue] @名称为nvarchar100 像 开始 不计数

IF @name=N'Request' SELECT NEXT VALUE FOR [dbo].[RequestNumber] AS [Value] 

结束

我不知道你在这里想干什么。你似乎混淆了序列和标识栏——它们是不同的东西,而且序列在2008年的产品线中根本不存在。但也不清楚您想要达到什么目标,或者您的实际问题是什么。@Damien_不相信者:我正在使用2008 R2,我的意图是在插入大量数据时,我正在编写大量的标识语句来获取最后插入的值,发现sql server中有可用的序列来获取最后插入的行,我之所以使用它,是因为我使用了scope_标识;它对我来说工作得很好,但是从C开发人员中的应用程序genarating sequencer到genarate新id。当我从数据库提供数据时,如果他们使用应用程序id,则genaration过程将有所不同,因此尝试同步数据库代码和开发代码