Błąd serwera Sql „Zapisywanie zmian jest niedozwolone” ► Zapobiegaj zapisywaniu zmian wymagających ponownego utworzenia tabeli


748

Kiedy tworzę tabelę w SQL Server i zapisuję ją, jeśli spróbuję edytować projekt tabeli, na przykład zmień typ kolumny z int na real, otrzymuję ten błąd:

Zapisywanie zmian jest niedozwolone. Dokonana zmiana wymaga usunięcia i ponownego utworzenia poniższej tabeli. Dokonałeś zmian w tabeli, których nie można odtworzyć, lub włączyłeś opcję zapobiegania zapisywaniu zmian, które wymagają ponownego utworzenia tabeli.

Dlaczego muszę ponownie utworzyć tabelę? Chcę tylko zmienić typ danych z smallintna real.

Stół jest pusty i do tej pory z niego nie korzystałem.


Odpowiedzi:


1465

Z okna dialogowego Zapisz (niedozwolone) w MSDN :

Zapisz (niedozwolone) okno dialogowe ostrzega, że zapisywania zmian jest niedozwolone, ponieważ zmiany dokonane wymagają wymienione tabele być usunięty i ponownie utworzony.

Następujące działania mogą wymagać ponownego utworzenia tabeli:

  • Dodanie nowej kolumny na środku tabeli
  • Upuszczanie kolumny
  • Zmiana zerowalności kolumny
  • Zmiana kolejności kolumn
  • Zmiana typu danych kolumny <<<<

Aby zmienić tę opcję, w menu Narzędzia kliknij polecenie Opcje , rozwiń Projektanci , a następnie kliknij Projektanci tabel i baz danych . Zaznacz lub wyczyść pole wyboru Zapobiegaj zapisywaniu zmian, które wymagają ponownego utworzenia tabeli .

Zobacz także Wpis na blogu Colta Kwonga:
Zapisywanie zmian jest niedozwolone w SQL 2008 Management Studio


6
SSMS nie powinien pozwalać ci robić czegoś niebezpiecznego bez uprzedniego ostrzeżenia. Ale na wszelki wypadek miej pod ręką kopię zapasową.
Robert Harvey

39
Ta opcja mówi SSMS, że może iść naprzód i utworzyć tabelę temperatur w nowym schemacie, skopiować dane do tego, a następnie usunąć starą tabelę i zmienić nazwę tabeli temperatur z powrotem na pierwotną nazwę. Wszystko w porządku do zrobienia, jak powinno być w transakcji, jednak relacje zostaną zerwane i odtworzone, więc jeśli nie 100%, może zrobić coś nieoczekiwanego.
Justin King,

13
Nie wiem, dlaczego nie pamiętam tych prostych kroków, aby rozwinąć tę opcję i zawsze muszę szukać rozwiązania. Hehehehehe Dzięki stary!
Deweloper

8
Święta krowa - możesz to wyłączyć, aby ominąć ten błąd? Nie wiedziałem o tym i przez ostatnie 3 lata żyłem w strachu przed nieumyślnym zaprojektowaniem stołu bez specyfikacji tożsamości i koniecznością stworzenia nowego stołu. Świetna wskazówka!
nocarrier

4
Oto CAVEAT firmy Microsoft dotyczący wyłączenia opcji „Zapobiegaj zapisywaniu zmian ...”: support.microsoft.com/en-us/kb/956176 . Zasadniczo możesz stracić metadane, takie jak śledzenie zmian, jeśli korzystasz z tej funkcji.
Baodad

204

Czy korzystasz z SSMS?

Jeśli tak, przejdź do menu Narzędzia >> Opcje >> Projektanci i odznacz „Zapobiegaj zapisywaniu zmian wymagających ponownego utworzenia tabeli”


Narzędzia >> Opcje itp. Nie „Menu” (tylko z punktu widzenia ssms 2014, który moim zdaniem jest taki sam w starszych wersjach)
Tom Stickel

@TomStickel Chyba chodziło mi o przejście do menu: „Narzędzia”
ypercubeᵀᴹ

: P Tak, pomyślałem, po prostu pomyślałem, że skomentuję każdego, kto tak naprawdę „utknie”, strasznie wiem, ale przypuszczam, że niektórzy ludzie mogliby szybko podnieść ręce ... dzięki
Tom Stickel

2
@NeilMeyer strzeż się, że pole wyboru jest tam zaznaczone z jakiegoś powodu. Jest to środek bezpieczeństwa, aby zapobiec operacjom, które spowodują upuszczenie i ponowne utworzenie tabeli (a tym samym utratę wszystkich danych ! Używaj ostrożnie!
ypercubeᵀᴹ

czy relacje między tabelami zostaną utracone, jeśli tabele zostaną odtworzone w ten sposób?
Neil Meyer

78

Zapobiegaj zapisywaniu zmian, które wymagają ponownego utworzenia tabeli

Pięć szybkich kliknięć

Zapobiegaj zapisywaniu zmian wymagających ponownego utworzenia tabeli za pomocą pięciu kliknięć

  1. Przybory
  2. Opcje
  3. Projektanci
  4. Zapobiegaj zapisywaniu zmian, które wymagają ponownego utworzenia tabeli
  5. OK .

Po zapisaniu powtórz procedurę, aby ponownie zaznaczyć pole. To zabezpiecza przed przypadkową utratą danych.

Dalsze wyjaśnienia

  • Domyślnie SQL Server Management Studio zapobiega upuszczaniu tabel, ponieważ po upuszczeniu tabeli zawartość danych jest tracona. *

  • Podczas zmiany typu danych kolumny w widoku Projekt tabeli, podczas zapisywania zmian baza danych upuszcza tabelę wewnętrznie, a następnie ponownie tworzy nową.

* Twoje szczególne okoliczności nie będą stanowić konsekwencji, ponieważ twój stół jest pusty. Podaję to wyjaśnienie, aby lepiej zrozumieć procedurę.


27

Aby zmienić opcję Zapobiegaj zapisywaniu zmian wymagających opcji ponownego tworzenia tabeli, wykonaj następujące kroki:

Otwórz SQL Server Management Studio (SSMS). W menu Narzędzia kliknij polecenie Opcje.

W okienku nawigacji okna Opcje kliknij Projektanci.

Zaznacz lub wyczyść pole wyboru Zapobiegaj zapisywaniu zmian, które wymagają ponownego utworzenia tabeli, a następnie kliknij OK.

Uwaga : Jeśli wyłączysz tę opcję, podczas zapisywania tabeli nie będziesz ostrzegany, że wprowadzone zmiany spowodowały zmianę struktury metadanych tabeli. W takim przypadku może wystąpić utrata danych podczas zapisywania tabeli.

wprowadź opis zdjęcia tutaj


Projektant stołu jest przydatny, ale nie można z nim osiągnąć wszystkiego
Sitecore Sam

22

Jest to bardzo łatwy i prosty problem z ustawieniem, który można naprawić w 5 sekund, wykonując następujące kroki

Aby umożliwić zapisywanie zmian po zmianie tabeli, wykonaj następujące kroki dla ustawienia sql:

  1. Otwórz Microsoft SQL Server Management Studio 2008
  2. Kliknij Opcje menu Narzędzia, a następnie Opcje
  3. Wybierz Projektanci
  4. Odznacz opcję „zapobiegaj zapisywaniu zmian, które wymagają ponownego utworzenia tabeli”
  5. Kliknij OK
  6. Spróbuj zmienić swój stół
  7. Twoje zmiany zostaną wykonane zgodnie z oczekiwaniami

8
jak to w jakikolwiek sposób wpływa na zaakceptowaną odpowiedź?
Immortal Blue,

17

Przejdź do narzędzia znajdującego się w górnym menu.
Wybierz opcje z rozwijanego menu. Teraz masz wyskakujące okienko i wybierz opcję Projektanci znajdującą się w lewym bloku menu. Odznacz opcję Zapobiegaj zapisywaniu zmian, które wymagają ponownego utworzenia tabeli . Kliknij przycisk OK.


12

Usuń zaznaczenie z Prevent saving changes that require table re-creationpola z Opcje ► Projektanci narzędzia ► karcie.

Przykład programu SQL Server 2012:

wprowadź opis zdjęcia tutaj


12

Można to łatwo zmienić w Microsoft SQL Server .

  1. Otwórz Microsoft SQL Server Management Studio 2008
  2. Kliknij menu Narzędzia
  3. Kliknij Opcje
  4. Wybierz Projektanci
  5. Odznacz „Zapobiegaj zapisywaniu zmian wymagających ponownego utworzenia tabeli”
  6. Kliknij OK

wprowadź opis zdjęcia tutaj


7

Skopiowano z tego linku „... Ważne Zalecamy, aby nie omijać tego problemu, wyłączając opcję Zapobiegaj zapisywaniu zmian, które wymagają ponownego utworzenia tabeli. Aby uzyskać więcej informacji o ryzyku wyłączenia tej opcji, zobacz„ Więcej informacji „sekcja”.

„... Aby obejść ten problem, użyj instrukcji Transact-SQL, aby wprowadzić zmiany w strukturze metadanych tabeli. Aby uzyskać dodatkowe informacje, zobacz następujący temat w SQL Server Books Online

Na przykład, aby zmienić kolumnę MyDate typu datetime w tabeli o nazwie MyTable, aby zaakceptować wartości NULL, możesz użyć:

Zmień tabelę MyTable Zmień kolumnę MyDate7 datetime NULL ”


2
Przy tak wielu odpowiedziach mówiących to samo, to była odpowiedź, której szukałem, ponieważ miałem w tabeli dane na żywo, których nie chciałem stracić. Musiałem zaktualizować kolumnę dziesiętną z 0 miejsc po przecinku do 2 miejsc po przecinku, a prosta instrukcja alter działała idealnie!
stitz

Tragedia polega na tym, że SSMS powinien robić to dokładnie pod maską, a tym samym nie wymagać upuszczenia stołu
m12lrpv

6

I na wypadek, gdyby ktoś tutaj również nie zwracał uwagi (jak ja):

W przypadku Microsoft SQL Server 2012 w oknie dialogowym opcji znajduje się sprytne małe pole wyboru, które Jawnie ukrywa wszystkie inne ustawienia. Chociaż muszę powiedzieć, że cały czas tęskniłem za tym małym potworem !!!

Następnie możesz przystąpić do wykonania kroków projektanta, odznacz opcję zapobiegaj zapisywaniu bla bla bla ...

sneaky_check_box_in_option



2

1) Otwórz narzędzie, które jest na górze.
2) Wybierz opcje z listy wyboru.
3) Teraz pojawia się wyskakujące okienko i możesz teraz wybrać opcję projektantów z listy menu po lewej stronie.
4) Teraz zapobiegaj zapisywaniu zmian należy odznaczać, że potrzebne było odtworzenie tabeli. Teraz kliknij OK.


1

Z menu Narzędzia, kliknij Opcje, wybierz Projektanci z menu bocznego i odznacz zapobiegaj zmianom, które mogą prowadzić do odtworzenia tabeli. Następnie zapisz zmiany


0

Jeśli nie widzisz „Zapobiegaj zapisywaniu zmian, które wymagały ponownego utworzenia tabeli” na takiej liście Obraz

Musisz włączyć śledzenie zmian.

  • Kliknij prawym przyciskiem myszy bazę danych i kliknij Właściwości
  • Kliknij opcję Zmień śledzenie i włącz tę opcję
  • Idź Narzędzia -> Opcje -> Projektant ponownie i odznacz to.

0

Jeśli korzystasz z SQL Server Management Studio przejdź do Narzędzia >> Opcje >> Projektanci i odznacz „Zapobiegaj zapisywaniu zmian wymagających ponownego utworzenia tabeli” Działa to ze mną

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.