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 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 dadostext/image
.
Causa
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:
Abra o SQL Server Management Studio.
No menu Ferramentas, clique em Opções.
No painel de navegação da janela Opções, clique em Designers.
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:
- No SQL Server Management Studio, localize a tabela no Pesquisador de Objetos.
- Clique com o botão direito do mouse na tabela e clique em Propriedades.
- 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
- No SQL Server Management Studio, crie uma tabela que contenha uma chave primária na ferramenta Designer de Tabela.
- Clique com o botão direito do mouse na banco de dados que contém essa tabela e, em seguida, clique em Propriedades.
- Na caixa de diálogo Propriedades do Banco de Dados, clique em Controle de Alterações.
- Defina o valor do item Controle de Alterações como True e clique em OK.
- Clique com o botão direito do mouse na tabela e clique em Propriedades.
- Na caixa de diálogo Propriedades da Tabela, clique em Controle de Alterações.
- Defina o valor do item Controle de Alterações como True e clique em OK.
- No menu Ferramentas, clique em Opções.
- Na caixa de diálogo Opções, clique em Designers.
- Clique para marcar a caixa de seleção Evitar salvar alterações que exijam recriação de tabela e, em seguida, clique em OK..
- Na ferramenta Designer de Tabela, altere a configuração Permitir Valores Nulos em uma coluna existente.
- Tente salvar a alteração na tabela.