Erro 'Salvar alterações não é permitido' do Sql Server ► Impedir salvar alterações que exigem recriação de tabela

749

Quando crio uma tabela no SQL Server e a salvo, se tentar editar o design da tabela, como alterar um tipo de coluna de int para real, recebo este erro:

Salvar alterações não é permitido. A alteração feita exige que a tabela a seguir seja descartada e recriada. Você fez alterações em uma tabela que não pode ser recriada ou ativou a opção para evitar salvar alterações que exijam a recriação da tabela.

Por que tenho que recriar a tabela? Eu só quero mudar um tipo de dados de smallintpara real.

A mesa está vazia e eu não a usei até agora.

Arash
fonte

Respostas:

1466

De Save (não permitido) Caixa de diálogo no MSDN :

A caixa de diálogo Salvar (não permitido) avisa que salvar alterações não é permitido porque as alterações feitas exigem que as tabelas listadas sejam eliminadas e recriadas.

As ações a seguir podem exigir que uma tabela seja recriada:

  • Adicionando uma nova coluna ao meio da tabela
  • Soltando uma coluna
  • Alterando a nulidade da coluna
  • Alterando a ordem das colunas
  • Alterando o tipo de dados de uma coluna <<<<

Para alterar essa opção, no menu Ferramentas , clique em Opções , expanda Designers e clique em Designers de Tabela e Banco de Dados . Marque ou desmarque a caixa de seleção Impedir salvar alterações que exigem a recriação da tabela .

Consulte também Colt Kwong Blog Entry:
Salvar alterações não é permitido no SQL 2008 Management Studio

Robert Harvey
fonte
7
O SSMS não deve permitir que você faça algo inseguro sem avisar primeiro. Mas tenha um backup disponível, apenas por precaução.
Robert Harvey
40
Essa opção informa ao SSMS que ele pode prosseguir e criar uma tabela temporária no novo esquema, copiar dados para isso, excluir a tabela antiga e renomear a tabela temporária para o nome original. Tudo bem em fazer o que deve estar na transação, no entanto, os relacionamentos serão interrompidos e recriados; portanto, se não for 100%, isso poderá fazer algo inesperado.
Justin King
13
Não sei por que não consigo me lembrar dessas etapas simples para soltar essa opção e sempre tenho que procurar a solução. Hehehehehe. Valeu cara!
Desenvolvedor
8
Vaca sagrada - você pode simplesmente desativar isso para superar esse erro ?? Eu não sabia disso e, nos últimos 3 anos, tenho medo de criar inadvertidamente uma tabela sem uma Especificação de Identidade e ter que criar uma nova tabela. Ótima dica!
nocarrier
4
Aqui está o CAVEAT da Microsoft para desativar a opção 'Impedir salvar alterações ...': support.microsoft.com/en-us/kb/956176 . Basicamente, você pode perder metadados como o acompanhamento de alterações, se esse é um recurso que você usa.
Baodad 7/10/2015
205

Você usa SSMS?

Se sim, vá para o menu Ferramentas >> Opções >> Designers e desmarque a opção "Impedir salvar alterações que exigem a recriação da tabela"

ypercubeᵀᴹ
fonte
Ferramentas >> Opções etc .. não "Menu" (só a partir de SSMS 2014 ponto de vista que eu acredito é o mesmo em versões mais antigas)
Tom Stickel
@TomStickel Acho que significava ir para o menu: "Ferramentas"
ypercubeᵀᴹ
: P Sim, imaginei que gostaria de comentar sobre qualquer um que realmente ficasse "preso", assustador, eu sei, mas suponho que algumas pessoas possam rapidamente levantar as mãos para cima ... thx
Tom Stickel
2
@NeilMeyer tenha cuidado para que a caixa de seleção esteja marcada por um motivo. É uma medida de segurança para evitar operações que irá eliminar e recriar uma tabela (e, assim, perder todos os seus dados Então, use com cuidado!
ypercubeᵀᴹ
os relacionamentos entre tabelas serão perdidos se as tabelas forem recriadas dessa maneira?
Neil Meyer
78

Impedir salvar alterações que exigem recriação de tabela

Cinco cliques rápidos

Impedir salvar alterações que exigem recriação de tabela em cinco cliques

  1. Ferramentas
  2. Opções
  3. Designers
  4. Impedir salvar alterações que exigem recriação de tabela
  5. OK .

Após salvar, repita o procedimento para marcar novamente a caixa. Isso protege contra a perda acidental de dados.

Mais explicações

  • Por padrão, o SQL Server Management Studio impede a queda de tabelas, porque quando uma tabela é descartada, seu conteúdo de dados é perdido. *

  • Ao alterar o tipo de dados de uma coluna na visualização Design da tabela, ao salvar as alterações, o banco de dados descarta a tabela internamente e, em seguida, recria uma nova.

* Suas circunstâncias específicas não serão uma conseqüência, pois sua mesa está vazia. Eu forneço esta explicação inteiramente para melhorar sua compreensão do procedimento.

WonderWorker
fonte
27

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

Abra o SQL Server Management Studio (SSMS). 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 Impedir salvar alterações que exijam a recriação da tabela e clique em OK.

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

insira a descrição da imagem aqui

Tabish Usman
fonte
Designer de tabela é útil, mas você não pode conseguir tudo com ele
Sitecore Sam
22

É um problema de configuração muito fácil e simples que pode ser corrigido em 5 segundos seguindo estas etapas

Para permitir que você salve as alterações após alterar a tabela, siga estas etapas para a sua configuração sql:

  1. Abra o Microsoft SQL Server Management Studio 2008
  2. Clique em Opções do menu Ferramentas e, em seguida, clique em Opções.
  3. Selecionar Designers
  4. Desmarque a opção "impedir salvar alterações que exijam recriação de tabela"
  5. Clique OK
  6. Tente alterar sua mesa
  7. Suas alterações serão executadas conforme desejado
Rizwan Gill
fonte
8
como isso se soma à resposta aceita de alguma forma?
Azul imortal
17

Vá em Ferramenta localizada no menu superior.
Escolha as opções no menu suspenso. Agora você tem um pop-up, selecione a opção Designers localizada no bloco de menus à esquerda. Desmarque a opção Impedir salvar alterações que exijam a recriação da tabela . Clique no botão OK.

FIFO BIZSOL
fonte
12

Desmarque a Prevent saving changes that require table re-creationcaixa em Ferramentas ► Opções ► Designers guia .

Exemplo do SQL Server 2012:

insira a descrição da imagem aqui

pedram
fonte
12

Isso pode ser alterado facilmente no Microsoft SQL Server .

  1. Abra o Microsoft SQL Server Management Studio 2008
  2. Clique no menu Ferramentas
  3. Clique em Opções
  4. Selecionar Designers
  5. Desmarque a opção "Impedir salvar alterações que exigem recriação de tabela"
  6. Clique OK

insira a descrição da imagem aqui

Irshad Ahmed Akhonzada
fonte
7

Copiado deste link "... Importante Recomendamos enfaticamente que você não solucione esse problema desativando a opção Impedir salvar alterações que exijam a recriação de tabela. Para obter mais informações sobre os riscos de desativar essa opção, consulte o" Mais informações ". ''

"... Para contornar esse problema, use as instruções Transact-SQL para fazer as alterações na estrutura de metadados de uma tabela. Para obter informações adicionais, consulte o seguinte tópico nos Manuais Online do SQL Server

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

alterar tabela MyTable alterar coluna MyDate7 datetime NULL "

Panagiotis
fonte
2
Com tantas respostas dizendo a mesma coisa, essa era a resposta que eu estava procurando, pois tinha dados ativos na minha tabela que não queria perder. Eu precisava atualizar uma coluna decimal de 0 casas decimais para 2 casas decimais e a instrução alter simples funcionou perfeitamente!
Stitz 28/01/19
A tragédia aqui é que SSMS deveria estar fazendo exatamente isso sob o capô e, portanto, não requerem cair da mesa
m12lrpv
6

E caso alguém aqui também não esteja prestando atenção (como eu):

Para o Microsoft SQL Server 2012, na caixa de diálogo Opções, há uma pequena caixa de seleção sorrateira que APARENTEMENTE oculta todas as outras configurações. Embora eu tenha dito que senti falta daquele monstrinho todo esse tempo !!!

Depois disso, você pode prosseguir com as etapas, designer, desmarque evitar salvar blá blá blá ...

sneaky_check_box_in_option

Gellie Ann
fonte
5

Ferramentas >> Opções >> Designers e desmarque a opção "Impedir salvar alterações que exigem a recriação da tabela":

Descrição no formato Fotos

سیدرسول میرعظیمی
fonte
2

1) Abra a ferramenta que está no topo.
2) Escolha opções da lista de seleção.
3) Agora, aparece o pop-up e agora você pode selecionar a opção de designers na lista de menus no lado esquerdo.
4) Agora, para impedir que as alterações sejam salvas, é necessário desmarcar a necessidade de recriação da tabela. Agora clique em OK.

Rishabh Seth
fonte
1

No menu Ferramentas, clique em Opções, selecione Designers no menu lateral e desmarque a opção para impedir alterações que podem levar à recreação de uma tabela. Salve as alterações

Ogbonna Vitalis
fonte
0

Se você não conseguir ver a lista "Evitar salvar alterações que requeiram a recriação da tabela", A imagem

Você precisa ativar o rastreamento de alterações.

  • Clique com o botão direito do mouse no seu banco de dados e clique em Propriedades
  • Clique no acompanhamento de alterações e ative-o
  • Vá em Ferramentas -> Opções -> Designer novamente e desmarque-o.
Emre Karataşoğlu
fonte
0

Se você usa o sql server Management studio, vá para Ferramentas >> Opções >> Designers e desmarque a opção "Impedir salvar alterações que exigem a recriação de tabelas". Funciona comigo

Taher Chtaywi
fonte