Udostępnij za pośrednictwem


Komunikat o błędzie zapisywania zmian jest niedozwolony w SSMS

Ten artykuł ułatwia obejście problemu, gdy podczas próby zapisania tabeli w SQL Server Management Studio (SSMS) jest wyświetlany komunikat o błędzie.

Oryginalna wersja produktu: SQL Server
Oryginalny numer KB: 956176

Symptomy

Podczas próby zapisania tabeli po wprowadzeniu zmian w tabeli przy użyciu narzędzia Projektant w programie SQL Server Management Studio może zostać wyświetlony następujący komunikat o błędzie:

Zapisywanie zmian jest niedozwolone. Wprowadzone zmiany wymagają porzucenia i ponownego utworzenia następujących tabel. Wprowadzono zmiany w tabeli, której nie można ponownie utworzyć lub włączono opcję Zapobiegaj zapisywaniu zmian, co wymaga ponownego utworzenia tabeli.

Ten problem występuje, gdy wprowadzisz co najmniej jedną z następujących zmian w tabeli:

  • Należy zmienić ustawienie Zezwalaj na wartości null dla kolumny.
  • Zmieniasz kolejność kolumn w tabeli.
  • Zmieniasz typ danych kolumny.
  • Dodajesz nową kolumnę.
  • Zmieniaszfilegroup tabelę lub jej text/image dane.

Przyczyna

Ten problem występuje, ponieważ opcja Zapobiegaj zapisywaniu zmian, które wymagają ponownego tworzenia tabeli jest domyślnie włączona w SQL Server Management Studio.

Po zmianie tabeli tak, aby zmienić strukturę metadanych tabeli, a następnie zapisać tabelę, tabela musi zostać ponownie utworzona na podstawie tych zmian. Może to spowodować utratę metadanych i bezpośrednią utratę danych podczas ponownego tworzenia tabeli. Jeśli włączysz opcję Zapobiegaj zapisywaniu zmian, które wymagają ponownego utworzenia tabeli w sekcji Projektant okna Opcje SQL Server Management Studio (SSMS), zostanie wyświetlony komunikat o błędzie wymieniony w części „Objawy”.

Rozwiązanie

Aby obejść ten problem, użyj ALTER TABLE instrukcji Transact-SQL, aby wprowadzić zmiany w strukturze metadanych tabeli.

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

alter table MyTable alter column MyDate7 datetime NULL

Ważne

Zdecydowanie zalecamy, aby nie obejść tego problemu, wyłączając opcję Zapobiegaj zapisywaniu zmian, które wymagają ponownego utworzenia tabeli. Aby uzyskać więcej informacji na temat ryzyka związanego z wyłączeniem tej opcji, zobacz część „Więcej informacji”.

Więcej informacji

Aby zmienić opcję Zapobiegaj zapisywaniu zmian, które wymagają ponownego utworzenia tabeli, wykonaj następujące kroki:

  1. Otwórz SQL Server Management Studio.

  2. W menu Narzędzia kliknij polecenie Opcje.

  3. W panelu nawigacji w oknie Opcje kliknij pozycję Projektanci.

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

Uwaga 16.

Jeśli wyłączysz tę opcję, podczas zapisywania tabeli nie zostanie wyświetlone ostrzeżenie dotyczącego tego, że wprowadzone zmiany zmieniły strukturę metadanych tabeli. W takim przypadku utrata danych może wystąpić podczas zapisywania tabeli.

Ryzyko wyłączenia opcji „Zapobiegaj zapisywaniu zmian, które wymagają ponownego utworzenia tabeli”

Wyłączenie tej opcji może pomóc uniknąć ponownego tworzenia tabeli, ale może również prowadzić do utraty zmian. Załóżmy na przykład, że włączysz funkcję Śledzenie zmian w SQL Server, aby śledzić zmiany w tabeli. Podczas wykonywania operacji, która powoduje ponowne utworzenie tabeli, zostanie wyświetlony komunikat o błędzie wymieniony w sekcji Objawy. Jeśli jednak wyłączysz tę opcję, istniejące informacje o śledzeniu zmian zostaną usunięte po ponownym utworzeniu tabeli. W związku z tym zalecamy, aby nie obchodzić tego problemu, wyłączając tę opcję.

Aby ustalić, czy funkcja Śledzenia zmian jest włączona dla tabeli, wykonaj następujące kroki:

  1. W SQL Server Management Studio znajdź tabelę w Eksploratorze obiektów.
  2. Kliknij tabelę prawym przyciskiem myszy, a następnie kliknij polecenie Właściwości.
  3. W oknie dialogowym Właściwości tabeli kliknij Śledzenie zmian. Jeśli wartość pozycji Śledzenie zmian to Tak, ta opcja jest włączona dla tabeli. Jeśli wartość to Nie, ta opcja jest wyłączona.

Po włączeniu funkcji Change Tracking użyj instrukcji Transact-SQL, aby zmienić strukturę metadanych tabeli.

Kroki prowadzące do odtworzenia problemu

  1. W SQL Server Management Studio utwórz tabelę zawierającą klucz podstawowy w narzędziu Projektant tabel.
  2. Kliknij prawym przyciskiem myszy bazę danych, która zawiera tabelę, a następnie kliknij polecenie Właściwości.
  3. W oknie dialogowym Właściwości bazy danych kliknij pozycję Śledzenie zmian.
  4. Ustaw wartość elementu Śledzenie zmian na Prawda, a następnie kliknij przycisk OK.
  5. Kliknij tabelę prawym przyciskiem myszy, a następnie kliknij polecenie Właściwości.
  6. W oknie dialogowym Właściwości tabeli kliknij kartę Śledzenie zmian.
  7. Ustaw wartość elementu Śledzenie zmian na Prawda, a następnie kliknij przycisk OK.
  8. W menu Narzędzia kliknij polecenie Opcje.
  9. W oknie dialogowym Opcje kliknij pozycję Projektanci.
  10. Kliknij, aby zaznaczyć pole wyboru Zapobiegaj zapisywaniu zmian, które wymagają ponownego utworzenia tabeli, a następnie kliknij przycisk OK.
  11. W narzędziu Projektant tabel zmień ustawienie Zezwalaj na wartości null w istniejącej kolumnie.
  12. Spróbuj zapisać zmianę w tabeli.