none
Habilitar trace flag 272 RRS feed

  • Pergunta

  • Ola pessoal

    Tem como habilitar a trace flag 272 (para mudar o comportamento do SQL Server reservar 1.000 ou 10.000 identity) sem ser pela interface?

    Obrigado!


    Julio C.

    terça-feira, 18 de junho de 2019 12:38

Respostas

  • Tem como habilitar a trace flag 272 (para mudar o comportamento do SQL Server reservar 1.000 ou 10.000 identity) sem ser pela interface?

    Há várias formas de habilitar os sinalizadores de rastreamento (trace flag).  No caso da 272 há mais uma, que está disponível a partir da versão 2017 do SQL Server: IDENTITY_CACHE. Você pode utilizar ALTER DATABASE SCOPED CONFIGURATION para isso:

              ALTER DATABASE SCOPED CONFIGURATION IDENTITY_CACHE = OFF

    ---

    A respeito desse salto na numeração de IDENTITY, recomendo a leitura do artigo “Geração de sequências numéricas”.

    ---

    Outras formas de alterar os sinalizadores de rastreamento:

    • DBCC TRACEON       DBCC TRACEON (272, -1)
    • definição de parâmetro de inicialização do serviço SQL Server, através do SQL Server Configuration Manager
    • editar o Registry do sistema operacional.


    José Diz     Belo Horizonte, MG - Brasil     [T-SQL performance tuning: Porto SQL]   [e-mail]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    • Editado José DizModerator terça-feira, 18 de junho de 2019 13:19
    • Sugerido como Resposta IgorFKModerator terça-feira, 18 de junho de 2019 13:35
    • Não Sugerido como Resposta Julio Costi terça-feira, 18 de junho de 2019 13:50
    • Marcado como Resposta Julio Costi terça-feira, 18 de junho de 2019 13:50
    terça-feira, 18 de junho de 2019 12:56
    Moderador
  • O "DBCC TRACEON (272, -1)"  precisa ser executado apenas uma vez (para ligar/desligar) não necessitando executar cada vez que inicia o serviço, e vale para a instancia inteira, é isso?

    Isso mesmo, o último valor, -1, faz com que seja habilitado globalmente (no servidor).

    Se possível altere sempre no parâmetro de inicialização do serviço SQL Server.

    Para consultar, use o comando DBCC TRACESTATUS:  por exemplo, 
          DBCC TRACESTATUS (272, -1)


    José Diz     Belo Horizonte, MG - Brasil     [T-SQL performance tuning: Porto SQL]   [e-mail]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    • Marcado como Resposta Julio Costi terça-feira, 18 de junho de 2019 18:53
    terça-feira, 18 de junho de 2019 18:00
    Moderador
  • mas ele retorna a valer cada vez que inicializa o servidor então, caso não esteja nos parametros de inicialização?

    Se o flag 272 foi ativado por DBCC TRACEON, de forma global, caso ocorra reinício do serviço SQL Server é necessário novamente ativá-lo. Por isso que a forma confiável de configurar qualquer sinalizador de rastreamento (trace flag) é no parâmetro de inicialização do serviço. Isso pode ser feito no SQL Server Configuraton Manager.

    ---

    A respeito de "tem como colocar numa trigger ao inicializar o serviço", existe um procedimento armazenado que é executado toda vez que o serviço SQL Server é iniciado; o nome dele é sp_procoption.

    -- código #1
    USE master;

    -- desativa trace flag 272
    DBCC TRACEOFF (272, -1);
    go CREATE PROCEDURE dbo.ATIVA_TF as DBCC TRACEON (272, -1); go
    EXECUTE sp_procoption N'master.dbo.ATIVA_TF', 'startup', 'on';
    go

     

    Execute o código #1, reinicie o serviço e a seguir execute
        DBCC TRACESTATUS (272);

    E então?



    José Diz     Belo Horizonte, MG - Brasil     [T-SQL performance tuning: Porto SQL]   [e-mail]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    terça-feira, 18 de junho de 2019 19:57
    Moderador

Todas as Respostas

  • Explicando melhor: preciso fazer isso em 800 usuários.

    ** tem um programa (que checa versão, atualiza o sistema etc), que roda em todos os usuários. poderia ser usado.

    mas não achei uma forma de habilitar o -t272


    Julio C.

    terça-feira, 18 de junho de 2019 12:46
  • Tem como habilitar a trace flag 272 (para mudar o comportamento do SQL Server reservar 1.000 ou 10.000 identity) sem ser pela interface?

    Há várias formas de habilitar os sinalizadores de rastreamento (trace flag).  No caso da 272 há mais uma, que está disponível a partir da versão 2017 do SQL Server: IDENTITY_CACHE. Você pode utilizar ALTER DATABASE SCOPED CONFIGURATION para isso:

              ALTER DATABASE SCOPED CONFIGURATION IDENTITY_CACHE = OFF

    ---

    A respeito desse salto na numeração de IDENTITY, recomendo a leitura do artigo “Geração de sequências numéricas”.

    ---

    Outras formas de alterar os sinalizadores de rastreamento:

    • DBCC TRACEON       DBCC TRACEON (272, -1)
    • definição de parâmetro de inicialização do serviço SQL Server, através do SQL Server Configuration Manager
    • editar o Registry do sistema operacional.


    José Diz     Belo Horizonte, MG - Brasil     [T-SQL performance tuning: Porto SQL]   [e-mail]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    • Editado José DizModerator terça-feira, 18 de junho de 2019 13:19
    • Sugerido como Resposta IgorFKModerator terça-feira, 18 de junho de 2019 13:35
    • Não Sugerido como Resposta Julio Costi terça-feira, 18 de junho de 2019 13:50
    • Marcado como Resposta Julio Costi terça-feira, 18 de junho de 2019 13:50
    terça-feira, 18 de junho de 2019 12:56
    Moderador
  • perfeito, muito obrigado!

    sim, o caso é estudar melhor sobre as sequences e utiliza-las ao inves de identity, mas no momento temos que resolver isso. 


    Julio C.

    terça-feira, 18 de junho de 2019 13:51
  • Já abusando, mas uma dúvida:

    O "DBCC TRACEON (272, -1)"  precisa ser executado apenas uma vez (para ligar/desligar) não necessitando executar cada vez que inicia o serviço, e vale para a instancia inteira, é isso?

    Tem como consultar qual o valor "atual"?

    Obrigadão!


    Julio C.

    terça-feira, 18 de junho de 2019 17:08
  • O "DBCC TRACEON (272, -1)"  precisa ser executado apenas uma vez (para ligar/desligar) não necessitando executar cada vez que inicia o serviço, e vale para a instancia inteira, é isso?

    Isso mesmo, o último valor, -1, faz com que seja habilitado globalmente (no servidor).

    Se possível altere sempre no parâmetro de inicialização do serviço SQL Server.

    Para consultar, use o comando DBCC TRACESTATUS:  por exemplo, 
          DBCC TRACESTATUS (272, -1)


    José Diz     Belo Horizonte, MG - Brasil     [T-SQL performance tuning: Porto SQL]   [e-mail]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    • Marcado como Resposta Julio Costi terça-feira, 18 de junho de 2019 18:53
    terça-feira, 18 de junho de 2019 18:00
    Moderador
  • Humm entendi

    mas ele retorna a valer cada vez que inicializa o servidor então, caso não esteja nos parametros de inicialização?


    Julio C.

    terça-feira, 18 de junho de 2019 19:04
  • sera que tem como colocar numa trigger ao inicializar o serviço? ou alguma forma semelhante?

    Julio C.

    terça-feira, 18 de junho de 2019 19:07
  • mas ele retorna a valer cada vez que inicializa o servidor então, caso não esteja nos parametros de inicialização?

    Se o flag 272 foi ativado por DBCC TRACEON, de forma global, caso ocorra reinício do serviço SQL Server é necessário novamente ativá-lo. Por isso que a forma confiável de configurar qualquer sinalizador de rastreamento (trace flag) é no parâmetro de inicialização do serviço. Isso pode ser feito no SQL Server Configuraton Manager.

    ---

    A respeito de "tem como colocar numa trigger ao inicializar o serviço", existe um procedimento armazenado que é executado toda vez que o serviço SQL Server é iniciado; o nome dele é sp_procoption.

    -- código #1
    USE master;

    -- desativa trace flag 272
    DBCC TRACEOFF (272, -1);
    go CREATE PROCEDURE dbo.ATIVA_TF as DBCC TRACEON (272, -1); go
    EXECUTE sp_procoption N'master.dbo.ATIVA_TF', 'startup', 'on';
    go

     

    Execute o código #1, reinicie o serviço e a seguir execute
        DBCC TRACESTATUS (272);

    E então?



    José Diz     Belo Horizonte, MG - Brasil     [T-SQL performance tuning: Porto SQL]   [e-mail]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    terça-feira, 18 de junho de 2019 19:57
    Moderador
  • Perfeito!

    Obrigado!


    Julio C.

    terça-feira, 18 de junho de 2019 21:16