Mensagem de erro informando que não é permitido salvar alterações no SSMS

Este artigo ajuda você a solucionar o problema no qual você recebe uma mensagem de erro ao tentar salvar uma tabela no SSMS (SQL Server Management Studio).

Versão original do produto: SQL Server
Número original do KB: 956176

Sintomas

Ao tentar salvar uma tabela depois de fazer alterações na tabela usando o Designer no SQL Server management Studio, você poderá receber a seguinte mensagem de erro:

Não é permitido salvar alterações. As alterações feitas exigem que as tabelas a seguir sejam descartadas e criadas novamente. Você fez alterações em uma tabela que não pode ser criada novamente ou habilitou a opção Evitar salvar alterações que exijam recriação de tabela.

Esse problema ocorre quando você faz uma ou mais das seguintes alterações na tabela:

  • Você altera a configuração Permitir Valores Nulos para uma coluna.
  • Você reordena colunas na tabela.
  • Você altera o tipo de dados da coluna.
  • Você adiciona uma nova coluna.
  • Você altera o filegroup de uma tabela ou os dados text/image.

Motivo

Esse problema ocorre porque a opção Impedir salvar alterações que exijam recriação da tabela está habilitada por padrão no SQL Server Management Studio.

Quando você altera uma tabela para alterar a estrutura de metadados dela e, em seguida, salva a tabela, ela deve ser criada novamente com base nessas alterações. Isso pode resultar na perda de metadados e em uma perda direta de dados durante a recriação da tabela. Se você habilitar a opção Evitar salvar alterações que exijam recriação de tabela na seção Designer da janela Opções do SSMS (SQL Server Management Studio), receberá a mensagem de erro mencionada na seção "Sintomas".

Solução alternativa

Para contornar esse problema, use ALTER TABLE Instruções Transact-SQL para fazer as alterações na estrutura de metadados de uma tabela.

Por exemplo, para alterar a coluna MyDate do tipo datetime na tabela chamada MyTable para aceitar valores NULL, você pode usar:

alter table MyTable alter column MyDate7 datetime NULL

Importante

É altamente recomendável que você não solucione esse problema desativando a opção Evitar salvar alterações que exijam recriação de tabela. Para obter mais informações sobre os riscos de desativar essa opção, consulte a seção "Mais informações".

Mais informações

Para alterar a opção Evitar salvar alterações que exijam recriação de tabela, siga estas etapas:

  1. Abra o SQL Server Management Studio.

  2. No menu Ferramentas, clique em Opções.

  3. No painel de navegação da janela Opções, clique em Designers.

  4. Marque ou desmarque a caixa de seleção Evitar salvar alterações que exijam recriação de tabela e clique em OK.

Observação

Se você desabilitar essa opção, não será avisado quando salvar a tabela de que as alterações feitas alteraram a estrutura de metadados da tabela. Nesse caso, pode ocorrer perda de dados quando você salva a tabela.

Risco de desativar a opção "Evitar salvar alterações que exijam recriação de tabela"

Embora desativar essa opção possa ajudá-lo a evitar a recriação de uma tabela, isso também pode levar à perda de alterações. Por exemplo, suponha que você habilite o recurso Controle de Alterações no SQL Server para controlar as alterações na tabela. Quando você executa uma operação que faz com que a tabela seja recriada, você recebe a mensagem de erro mencionada na seção Sintomas. No entanto, se você desativar essa opção, as informações de controle de alterações existentes serão excluídas quando a tabela for criada novamente. Portanto, recomendamos que você não solucione esse problema desativando a opção.

Para determinar se o Controle de Alterações está habilitado para uma tabela, siga estas etapas:

  1. No SQL Server Management Studio, localize a tabela no Pesquisador de Objetos.
  2. Clique com o botão direito do mouse na tabela e clique em Propriedades.
  3. Na caixa de diálogo Propriedades da Tabela, clique em Controle de Alterações. Se o valor do item Controle de Alterações for True, essa opção será habilitada para a tabela. Se o valor for False, essa opção será desabilitada.

Quando o recurso Change Tracking estiver habilitado, use instruções Transact-SQL para alterar a estrutura de metadados da tabela.

Etapas para reproduzir o problema

  1. No SQL Server Management Studio, crie uma tabela que contenha uma chave primária na ferramenta Designer de Tabela.
  2. Clique com o botão direito do mouse na banco de dados que contém essa tabela e, em seguida, clique em Propriedades.
  3. Na caixa de diálogo Propriedades do Banco de Dados, clique em Controle de Alterações.
  4. Defina o valor do item Controle de Alterações como True e clique em OK.
  5. Clique com o botão direito do mouse na tabela e clique em Propriedades.
  6. Na caixa de diálogo Propriedades da Tabela, clique em Controle de Alterações.
  7. Defina o valor do item Controle de Alterações como True e clique em OK.
  8. No menu Ferramentas, clique em Opções.
  9. Na caixa de diálogo Opções, clique em Designers.
  10. Clique para marcar a caixa de seleção Evitar salvar alterações que exijam recriação de tabela e, em seguida, clique em OK..
  11. Na ferramenta Designer de Tabela, altere a configuração Permitir Valores Nulos em uma coluna existente.
  12. Tente salvar a alteração na tabela.