none
Existe algum perigo em considerar apenas SELECT abs(checksum(newid())) RRS feed

  • Discussão Geral

  • Existe algum perigo em considerar apenas o valores absolutos para identificação exclusiva de ocorrências em sistema distribuídos ou replicados?
    sexta-feira, 25 de maio de 2018 08:37

Todas as Respostas

  • Bom dia, vc fala isso como gerador de chaves ??

    não entendi, explique mais seu contexto 

    Wesley Neves - Brasilia-DF     

    https://wesleyneves.wordpress.com/

    SELECT Tab.[that's me:]

    FROM

    (

        VALUES

            ('Wesley Neves'),

            ('Analista.NET'),

            ('Pós Graduando em Banco de Dados com ênfase em BI'),

            ('MTA -SQL Server'),

            ('MTA -Web Developed')

    ) AS Tab ("that's me:");


    "Se a resposta for útil ou ajudar ,não esqueça de marcar"





    Wesley Neves

    sexta-feira, 25 de maio de 2018 12:00
  • Orlando,

    Quando você se referi a perigo esta querendo dizer o que?

    Qual ou quem é o seu campo chave primária?

    Ou você pretende utilizar o NewID() como um outro elenco para unicidade e controle de dados?


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 25 de maio de 2018 12:57
  • Estou a considerar apenas os valores absolutos como chaves primarias da minha tabela utilizando o NEWID() em ambiente replicado que funcionam em modo offline e online. 
    sexta-feira, 25 de maio de 2018 15:18
  • Estou a considerar apenas os valores absolutos como chaves primarias da minha tabela utilizando o NEWID() em ambiente replicado que funcionam em modo offline e online. 
    sexta-feira, 25 de maio de 2018 15:18
  • Orlando,

    Por padrão ao configurar e aplicar uma replicação o próprio SQL Server adiciona nas tabelas envolvidas neste tipo de ambiente uma coluna única e específica justamente para fazer este tipo de controle, normalmente esta coluna se chama ms_repl....

    Não recomendo para o seu cenário fazer uso de uma chave primária através do uso das funções ABS() e NewID(), ao meu ver isso acaba gerando um pequeno custo de processamento que poderia ser facilmente contornado pelo uso de campos do tipo Int.

    Talvez uma possibilidade que não seja a mais indicado, mas que poderia te ajudar seria o uso de chaves primárias artificiais através da auto numeração, ou seja, fazer uso da propriedade Identity() na sua chave primária, sabendo que o SQL Server em alguns momentos ou situações pode aplicar um salto na numeração sequência.

    Analise se isso pode ser útil para você.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 29 de maio de 2018 11:44
  • Bom dia Galvão,

    Com o uso do Identity todas as maquinas envolvidas no processo de  negócio vão gerar um identificador igual. Como posso contornar isto?

    No ambiente que desenvolvi as máquinas clientes envia os dados para o servidor. Estes dados são colocados na tabela geral. E no lado do servidor existe um método que é chamado a pois a recepção dos dados que os inseri em tabelas primarias do servidor. 

    agradecia vosso apoio 

    Orlando 

    quarta-feira, 30 de maio de 2018 08:49
  • Orlando,

    Tudo bem? Então neste caso, você pode fazer o seguinte, deixar uma coluna sendo gerado de forma sequência, e adicionar uma outra coluna que guarda o nome da máquina ou algum outro dado, e fazer justamente a concatenação entre estas duas colunas, forma assim a sua "respectiva" chave primária.

    Na verdade você terá uma chave artificial sendo gerada somente como um controle interno, mas para sua regra de negócio poderia utilizar a junção destas duas colunas.

    Ou então criar um chave primária composta justamente com estas duas colunas, sendo a uma coluna numerada automaticamente e a outra com um valor padrão que poderia ser o nome da máquina, código, ou qualquer outra sigla para diferenciar as estações.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 30 de maio de 2018 11:55