AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 34979
Accepted
Techie Joe
Techie Joe
Asked: 2013-02-19 16:10:49 +0800 CST2013-02-19 16:10:49 +0800 CST 2013-02-19 16:10:49 +0800 CST

Redefinindo uma sequência do SQL Server 2012

  • 772

Estou no processo de teste e preenchimento de uma tabela específica que aproveita o SEQUENCEobjeto. Neste processo, estou testando o preenchimento da tabela com dezenas de milhares de linhas de inserção (já que não estou familiarizado com como programar isso). O problema que estou vendo com essa tabela específica é que quando inicio outro teste de população, o SEQUENCEvalor não volta para o primeiro número que eu quero (que é 1).

Quando desejo reexecutar um novo teste, excluo a tabela em questão e executo o seguinte:

DROP SEQUENCE foo.fee;
GO

DROP SCHEMA foo;
GO

Quando quero executar novamente o teste, executo os seguintes comandos SCHEMA& SEQUENCE, que são acionados na ordem abaixo:

CREATE SCHEMA foo;
GO

CREATE SEQUENCE foo.fee
START WITH 1
INCREMENT BY 1
NO CYCLE
NO CACHE;

GO

Eu então crio a tabela:

CREATE TABLE foo.sample_table_with_data
(order_number bigint PRIMARY KEY NOT NULL,
sample_column_one nvarchar(max) NULL,
sample_column_two nvarchar(max) NULL,
sample_column_three nvarchar(max) NULL)

GO

Uma vez concluído, executo o seguinte comando de inserção 50.000 vezes:

INSERT INTO [foo].[sample_table_with_data] 
(
    [order_number],
    [sample_column_one], 
    [sample_column_two], 
    [sample_column_three]
) 
VALUES 
(
    NEXT VALUE FOR foo.fee, 
    'Blah', 
    'Blah Blah', 
    'Blah Blah Blah'
)

Agora não há absolutamente nenhum problema com os dados entrando na tabela. O desafio que estou encontrando é que, quando eu excluo a tabela, elimino o esquema e a sequência e, em seguida, recrio a tabela, a sequência e o esquema a SEQUENCEpartir do último número na encarnação anterior do banco de dados e não redefinir para um.

Por exemplo, se o último número na sequência for 634.534, o próximo número de sequência na nova tabela será 634.535.

Depois de excluir a tabela e descartar o esquema e a sequência, executo o seguinte para verificar a remoção da sequência e do esquema:

SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
GO

SELECT * FROM sys.sequences
GO

Estou perplexo por que isso está acontecendo. Existe outro comando que estou perdendo aqui que me ajudaria a localizar exatamente o que está acontecendo aqui?

Devo observar que esta tabela pertence a um banco de dados com 7 outras tabelas, todas executando o SEQUENCEcomando corretamente.

Esta é uma instalação do SQL 2012 SP1 Enterprise Edition.

sql-server sql-server-2012
  • 2 2 respostas
  • 36980 Views

2 respostas

  • Voted
  1. Best Answer
    Bacon Bits
    2013-02-19T19:50:37+08:002013-02-19T19:50:37+08:00

    Tentar

    ALTER SEQUENCE foo.fee
    RESTART
    

    Ou:

    ALTER SEQUENCE foo.fee
    RESTART WITH 1
    

    http://msdn.microsoft.com/en-us/library/ff878572.aspx

    • 20
  2. Paul White
    2013-02-19T20:19:58+08:002013-02-19T20:19:58+08:00

    Usando seu script com algumas pequenas alterações:

    CREATE SCHEMA foo;
    GO
    CREATE SEQUENCE foo.fee
    START WITH 1
    INCREMENT BY 1
    NO CYCLE
    NO CACHE;
    GO
    CREATE TABLE foo.sample_table_with_data
    (order_number bigint PRIMARY KEY NOT NULL,
    sample_column_one nvarchar(max) NULL,
    sample_column_two nvarchar(max) NULL,
    sample_column_three nvarchar(max) NULL)
    GO
    SET NOCOUNT ON
    GO
    INSERT INTO [foo].[sample_table_with_data]
        ([order_number],[sample_column_one],[sample_column_two],[sample_column_three]) 
    VALUES
        (NEXT VALUE FOR foo.fee,'Blah','Blah Blah','Blah Blah Blah')
    GO 50000
    SELECT
        MIN(order_number), 
        MAX(order_number)
    FROM foo.sample_table_with_data AS stwd
    GO
    DROP SEQUENCE foo.fee;
    GO
    DROP TABLE foo.sample_table_with_data
    GO
    DROP SCHEMA foo;
    

    ...Não consigo reproduzir o problema no SQL Server 2012 SP1 (build 3000) ou superior.

    Também não consigo encontrar um item do Connect ou um artigo da KB mencionando esse cenário específico (e houve muitos outros SEQUENCEproblemas). Isso não quer dizer que não existia antes do SP1 porque nem todas as correções acabam sendo documentadas.

    • 5

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve