none
Merger Replication RRS feed

  • Pergunta

  • Boa tarde Pessoal,

    Tenho um ambiente com um banco de dados, que utiliza merge replication para três Bases de dados Subscriptios.

    Após a execução do TSQL "ALTER TABLE [dbo].[Mensagens] ALTER COLUMN SISTEMA VARCHAR(8) not NULL"

    Ao executar o merge agent, recebo a mensagem de erro abaixo.

    --------------------------------------

    Error messages:
    The schema script ' if exists (select * from syscolumns where name = N'SISTEMA' and id = object_id(N'[dbo].[Mensagens]')) if object_id(N'[dbo].[Mensagens]') is not null exec('ALTER TABLE [dbo].[Mensagens] ALTER COLUMN SISTEMA VARCHAR(8) not NULL
    ')' could not be propagated to the subscriber. (Source: MSSQL_REPL, Error number: MSSQL_REPL-2147201001)
    Get help: http://help/MSSQL_REPL-2147201001
    Cannot insert the value NULL into column 'Sistema', table 'Blumenau.dbo.Mensagens'; column does not allow nulls. UPDATE fails. (Source: MSSQLServer, Error number: 515)
    Get help: http://help/515

    --------------------------------------

    Análizando esses dois Subscriptions que apresentam o problema de replicação, verifiquei na mesma tabela "MENSAGENS", duas outras colunas perderam suas propriedades de PK (Primary Key). 

    Se alguem pode me auxíliar, eu agradeço.

     


    Marcos Vinícius Oliveira Schardong MCTS – SQL Server 2008 / Forefront / Virtualization

    terça-feira, 26 de julho de 2011 18:17

Respostas

  • Boa tarde Marcos,

    Por acaso antes da alteração já existia valores nulos nas tabelas? Você fez essa alteração em todas as tabelas?

    Acho que caso já existisse valores nulos para essa coluna antes da alteração, você deverá colocar um valor DEFAULT para que na hora do merge não dê este erro.

    Rafael Godoi Sabadin
    http://www.linkedin.com/pub/rafael-godoi-sabadin/30/b20/a0b


    Classifique as respostas. O seu feedback é essencial.

    terça-feira, 26 de julho de 2011 19:16
  • Olá Marcos, a resposta é SIM.

    Ele vai ignorar a primeira e fazer a segunda alteração.

    Alteração de tabela é um comando DDL, no final dele mesmo que tu esteja em uma transação ele vai dar commit ou rollback.

     

    segunda-feira, 19 de dezembro de 2011 10:46

Todas as Respostas

  • Boa tarde Marcos,

    Por acaso antes da alteração já existia valores nulos nas tabelas? Você fez essa alteração em todas as tabelas?

    Acho que caso já existisse valores nulos para essa coluna antes da alteração, você deverá colocar um valor DEFAULT para que na hora do merge não dê este erro.

    Rafael Godoi Sabadin
    http://www.linkedin.com/pub/rafael-godoi-sabadin/30/b20/a0b


    Classifique as respostas. O seu feedback é essencial.

    terça-feira, 26 de julho de 2011 19:16
  •  

     

    Bom dia Rafael,

     

    Verifiquei se essa coluna "Sistema" já possuia campos NULL. Pois esse alter table já havia sido executado anteriormente.

     

    Tenho uma dúvida, em relação a esse ALTER TABLE que está tentando ser executado. Após eu executar un novo ALTER TABLE na tabela "Mensagens" a primeira alteração de Schema (que está acontecendo erro) será ignorada?

     



    Marcos Vinícius Oliveira Schardong MCTS – SQL Server 2008 / Forefront / Virtualization
    sexta-feira, 5 de agosto de 2011 12:31
  • Olá Marcos, a resposta é SIM.

    Ele vai ignorar a primeira e fazer a segunda alteração.

    Alteração de tabela é um comando DDL, no final dele mesmo que tu esteja em uma transação ele vai dar commit ou rollback.

     

    segunda-feira, 19 de dezembro de 2011 10:46