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

Todas as Respostas

  • Deleted
    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