none
Erro - Geração Script - Data RRS feed

  • Pergunta

  • Pessoal, estou tentando gerar script só dos dados de um database, mas ta dando o erro:

    Microsoft.SqlServer.Management.SqlScriptingEngine.CyclicalForeignKeyException: The selected database contains foreign keys that create a cycle. Publishing data only is not supported for databases with cyclical foreign key relationships. at Microsoft.SqlServer.Management.SqlScriptPublish.GeneratePublishPage.worker_DoWork(Object sender, DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

    O que eu faço pra solucionar isso? Eu já tentei deixar false na maioria das opções em Advanced, mas tb nao adiantou..

    obrigado

    terça-feira, 18 de dezembro de 2012 00:44

Respostas

  • .NET,

    O problema está ocorrendo por causa da referencia cíclica das suas chaves estrangeiras, o preenchimento das tabelas deve estar seguindo uma ordem, definida no seu design, para que não gere erros de inserção de chaves, porém quando o SQL Server gera o script dos dados ele não reconhece essa ordem na qual os dados foram inseridos.

    É mais ou menos assim: Você insere um registro com uma FK nula e depois atualiza ela, a sua regra de negócio permite que seja feito apenas dessa forma, quando o SQL Server for gerar o script dos dados ele irá gerar com a FK já preenchida com o valor (inserido no segundo momento), pois ele gera os dados no estado em que estão, logo você não irá conseguir utilizar o script dessa forma a menos que faça uma remodelagem nessas tabelas.

    Sugiro que você reveja sua modelagem, em seguida tente aplicar o script novamente.


    Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    terça-feira, 18 de dezembro de 2012 10:52
  • Devel,

    Você está selecionando apenas algumas tabelas ou "all database objects"? Caso seja a primeira, tente escolher a segunda. É o que está sendo sugerido neste post http://social.msdn.microsoft.com/Forums/en/databasedesign/thread/641533c4-6c18-4ff1-80b6-3ef525b6784f . Caso já esteja usando a opção "all database objects", você terá que mexer na sua FK/Constraints.

    • Marcado como Resposta Ricardo Russo quarta-feira, 2 de janeiro de 2013 15:45
    terça-feira, 18 de dezembro de 2012 11:41

Todas as Respostas

  • Alguma idéia pessoal ?
    terça-feira, 18 de dezembro de 2012 10:21
  • .NET,

    O problema está ocorrendo por causa da referencia cíclica das suas chaves estrangeiras, o preenchimento das tabelas deve estar seguindo uma ordem, definida no seu design, para que não gere erros de inserção de chaves, porém quando o SQL Server gera o script dos dados ele não reconhece essa ordem na qual os dados foram inseridos.

    É mais ou menos assim: Você insere um registro com uma FK nula e depois atualiza ela, a sua regra de negócio permite que seja feito apenas dessa forma, quando o SQL Server for gerar o script dos dados ele irá gerar com a FK já preenchida com o valor (inserido no segundo momento), pois ele gera os dados no estado em que estão, logo você não irá conseguir utilizar o script dessa forma a menos que faça uma remodelagem nessas tabelas.

    Sugiro que você reveja sua modelagem, em seguida tente aplicar o script novamente.


    Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    terça-feira, 18 de dezembro de 2012 10:52
  • Devel,

    Você está selecionando apenas algumas tabelas ou "all database objects"? Caso seja a primeira, tente escolher a segunda. É o que está sendo sugerido neste post http://social.msdn.microsoft.com/Forums/en/databasedesign/thread/641533c4-6c18-4ff1-80b6-3ef525b6784f . Caso já esteja usando a opção "all database objects", você terá que mexer na sua FK/Constraints.

    • Marcado como Resposta Ricardo Russo quarta-feira, 2 de janeiro de 2013 15:45
    terça-feira, 18 de dezembro de 2012 11:41