none
problema com indice autoincremento RRS feed

  • Pergunta

  • Senhores,

    Estou tendo um problema estranho com os campos identity do meu banco. Precisei remover esta propriedade para poder inserir registros vindos de outro banco e quando aitvei novamente começou o problema. Inseri registros e as sequencias 1,2,3,4... foram adicionadas. De repente mudou para 1001, 1002.

    O que pode ser isso e como corrigir ?

    Obrigado!

    quarta-feira, 20 de março de 2013 14:33

Respostas

  • Olá,

    A seed deve estar setada em 1000.

    Para mais informações clique aqui


    • Editado Israel Vilela quarta-feira, 20 de março de 2013 14:48
    • Sugerido como Resposta Alexandre Matayosi quarta-feira, 20 de março de 2013 15:17
    • Marcado como Resposta Silmar Sanches quarta-feira, 20 de março de 2013 17:10
    quarta-feira, 20 de março de 2013 14:46
  • Para verificar a informação da seed execute:

    DBCC CHECKIDENT(TesteIdentity, NORESEED)


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    • Marcado como Resposta Silmar Sanches quarta-feira, 20 de março de 2013 17:09
    quarta-feira, 20 de março de 2013 17:00
    Moderador
  • Silmar,

    O que voce quer é basicamente acabar com os espaços? Se Sim, por que? qual o problema de ter os espaços? Normalmente o pessoal não gosta disso "por que é feio" ou algo do tipo, mas entenda que não ha diferença nenhuma! Todo caso, se precisa realmente meu conselho é que seja construida uma nova tabela, um insert com select depois um rename das tabelas.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    • Marcado como Resposta Silmar Sanches quarta-feira, 20 de março de 2013 17:18
    quarta-feira, 20 de março de 2013 17:15
    Moderador

Todas as Respostas

  • Olá,

    A seed deve estar setada em 1000.

    Para mais informações clique aqui


    • Editado Israel Vilela quarta-feira, 20 de março de 2013 14:48
    • Sugerido como Resposta Alexandre Matayosi quarta-feira, 20 de março de 2013 15:17
    • Marcado como Resposta Silmar Sanches quarta-feira, 20 de março de 2013 17:10
    quarta-feira, 20 de março de 2013 14:46
  • Israel,

    O script gerado pelo mangement é este:

    CREATE TABLE [dbo].[tbRecebimentosFuturosItens](
    	[recitens_id] [int] IDENTITY(1,1) NOT NULL,
    	[rec_id] [int] NOT NULL,
    	[recitens_numeroParcela] [int] NOT NULL,
    	[recitens_pago] [bit] NOT NULL,
    	[recitens_dtVencimento] [datetime] NOT NULL,
    	[recitems_dtPagamento] [datetime] NOT NULL,
    	[recitens_valor] [decimal](18, 2) NOT NULL,
    	[recitens_descricao] [varchar](200) NOT NULL,
     CONSTRAINT [PK_tbRecebimentosFuturosItens] PRIMARY KEY CLUSTERED 
    (
    	[recitens_id] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]

    e mesmo assim i índice pulou de 56 para 1012.

    No management studio também aparece identity 1,1. Existe algum outro lugar onde eu possa verificar isso ?

    quarta-feira, 20 de março de 2013 16:52
  • Silmar,

    O fato do create da tabela estar 1,1 não quer dizer que a seed nao foi alterada, veja:

    --Criação da tabela
    CREATE TABLE TesteIdentity
    (
    	Id	INT	IDENTITY(1,1)
    )
    GO
    
    INSERT INTO TesteIdentity
    DEFAULT VALUES
    GO 2
    
    SELECT *
    FROM TesteIdentity
    /*
    Id
    1
    2
    */
    
    SET IDENTITY_INSERT TesteIdentity ON
    
    INSERT INTO TesteIdentity(Id)
    VALUES (5), (6)
    
    SET IDENTITY_INSERT TesteIdentity OFF
    
    SELECT *
    FROM TesteIdentity
    /*
    Id
    1
    2
    5
    6
    */
    
    DBCC CHECKIDENT(TesteIdentity, RESEED, 1000)
    
    INSERT INTO TesteIdentity
    DEFAULT VALUES
    GO 2
    
    SELECT *
    FROM TesteIdentity
    /*
    Id
    1
    2
    5
    6
    1001
    1002
    */
    
    --CREATE DA TABELA
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE TABLE [dbo].[TesteIdentity](
    	[Id] [int] IDENTITY(1,1) NOT NULL
    ) ON [PRIMARY]
    
    GO

    Uma coisa não tem relação com a outra!


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    quarta-feira, 20 de março de 2013 16:57
    Moderador
  • Para verificar a informação da seed execute:

    DBCC CHECKIDENT(TesteIdentity, NORESEED)


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    • Marcado como Resposta Silmar Sanches quarta-feira, 20 de março de 2013 17:09
    quarta-feira, 20 de março de 2013 17:00
    Moderador
  • Fabrizzio

    Obrigado, realmente o índice da tabela está em 1042 já.

    Como posso resolver isso ? Eu gostaria de excluir a chave estrangeira que faz referencia a este campo e fazer uma espécie de re-build neste índice, é possível ?

    quarta-feira, 20 de março de 2013 17:12
  • Silmar,

    O que voce quer é basicamente acabar com os espaços? Se Sim, por que? qual o problema de ter os espaços? Normalmente o pessoal não gosta disso "por que é feio" ou algo do tipo, mas entenda que não ha diferença nenhuma! Todo caso, se precisa realmente meu conselho é que seja construida uma nova tabela, um insert com select depois um rename das tabelas.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    • Marcado como Resposta Silmar Sanches quarta-feira, 20 de março de 2013 17:18
    quarta-feira, 20 de março de 2013 17:15
    Moderador