Komunikat o błędzie podczas próby zapisania tabeli w programie SQL Server: "Zapisanie zmian nie jest dozwolone"

Dotyczy: SQL Server 2008 ExpressSQL Server 2008 Express with Advanced ServicesSQL Server 2008 Standard

Objawy


Gdy używasz języka definicji danych (DDL), aby zmodyfikować tabelę i spróbuj zapisać tabelę programu Microsoft SQL Server 2008, może pojawić się następujący komunikat:

Zapisywanie zmian nie jest dozwolone. Zmiany, które wprowadzono wymagają następujące tabele, aby usunięty i utworzony ponownie. Masz jedną dokonane zmiany do tabeli, która nie może być ponownie utworzony lub włączona opcja zapobieganie zapisywania zmian, które wymagają tabela ma być odtworzony.

Przyczyna


Ten problem występuje, gdy jest włączona opcja Zapobieganie zapisywania zmian, które wymagają ponownego tworzenia tabeli i wprowadzić przynajmniej jedną z następujących zmian do tabeli:
  • Możesz zmienić ustawienie Zezwalaj na wartości null dla kolumny.
  • Możesz zmienić kolejność kolumn w tabeli.
  • Możesz zmienić typ danych kolumny.
  • Dodaj nową kolumnę.
Po zmianie tabeli tak, aby zmienić strukturę metadanych tabeli, a następnie zapisz tabelę, tabela musi być ponownie utworzony na podstawie tych zmian. Może to spowodować utratę metadanych i bezpośrednie utraty danych podczas ponownego tworzenia tabeli. Jeśli włączysz opcję Zapobieganie zapisywania zmian, które wymagają ponownego tworzenia tabeli w sekcji Projektanta w oknie Opcje programu SQL Server Management Studio (SSMS) , zostanie wyświetlony komunikat o błędzie wymieniony w sekcji "Symptomy".

Obejście problemu


Aby obejść ten problem, należy użyć instrukcji języka Transact-SQL Aby zmienić strukturę metadanych tabeli. Dodatkowe informacje można znaleźć w następujący temat w dokumentacji SQL Server Books Online:

http://msdn.microsoft.com/en-us/library/ms190273.aspx

Na przykład aby zmienić kolumnę MyDate typu DateTime w tabeli o nazwie Moja_tabela akceptuje wartości NULL, których można użyć:

alter table MyTable alter column MyDate7 datetime NULL

Ważne Zdecydowanie zaleca się, że nie obejść ten problem wyłączając opcję Zapobieganie zapisywania zmian, które wymagają ponownego tworzenia tabeli . Aby uzyskać więcej informacji o zagrożeniach związanych z wyłączenia tej opcji zobacz sekcję "Więcej informacji".

Stan


Firma Microsoft potwierdziła, że jest to usterka występująca w produktach firmy Microsoft wymienionych w sekcji "Dotyczy".

Więcej informacji


Aby zmienić opcję Zapobieganie zapisywania zmian, które wymagają ponownego tworzenia tabeli , wykonaj następujące kroki:
  1. Otwórz program SQL Server Management Studio (SSMS).
  2. W menu Narzędzia kliknij polecenie Opcje.
  3. W okienku nawigacji okna Opcje kliknij projektantów.
  4. Zaznacz lub wyczyść pole wyboru Zapobieganie zapisywania zmian, które wymagają ponownego tworzenia tabeli , a następnie kliknij przycisk OK.
Uwaga Jeśli ta opcja jest wyłączona, użytkownik nie zostanie wyświetlone ostrzeżenie podczas zapisywania tabeli zmiany, dokonane zmieniono strukturę metadanych tabeli. W takim przypadku może wystąpić utrata danych, podczas zapisywania tabeli.

Wyłączenie opcji "Zapobieganie zapisywania zmian, które wymagają ponownego tworzenia tabeli" ryzyko

Chociaż wyłączenie tej opcji może pomóc uniknąć ponownego tworzenia tabeli, może również prowadzić do utraty zmian. Na przykład załóżmy, że zostanie włączona funkcja śledzenia zmian programu SQL Server 2008 do śledzenia zmian w tabeli. Podczas wykonywania operacji, która powoduje, że tabela być ponownie utworzony, pojawi się komunikat o błędzie wymieniony w sekcji "Symptomy". Jednak po wyłączeniu tej opcji informacje o śledzeniu zmian istniejących jest usuwany po tabeli jest utworzony ponownie. Dlatego zaleca się, że nie obejść ten problem przez wyłączenie opcji.

Aby ustalić, czy funkcja śledzenia zmian jest włączona dla tabeli, wykonaj następujące kroki:
  1. W SQL Server Management Studio należy zlokalizować tabelę w Eksploratorze obiektów.
  2. Kliknij prawym przyciskiem myszy tabelę, a następnie kliknij polecenie Właściwości.
  3. W oknie dialogowym Właściwości tabeli kliknij opcję Śledzenia zmian.
Jeśli wartość elementu Śledzenie zmian jest True, ta opcja jest włączona dla tabeli. Jeśli wartością jest False, ta opcja jest wyłączona.

Po włączeniu funkcji Zmień śledzenia, umożliwia zmianę struktury metadanych tabeli w instrukcji języka Transact-SQL.

Kroki prowadzące do odtworzenia problemu

  1. W SQL Server Management Studio należy utworzyć tabelę, która zawiera klucz podstawowy za pomocą narzędzia Projektant tabel.
  2. Kliknij prawym przyciskiem myszy bazę danych, zawierającą w tej tabeli, a następnie kliknij polecenie Właściwości.
  3. W oknie dialogowym Właściwości bazy danych kliknij opcję Śledzenia zmian.
  4. Ustaw wartość elementu Śledzenie zmian na wartość True, a następnie kliknij przycisk OK.
  5. Kliknij prawym przyciskiem myszy tabelę, a następnie kliknij polecenie Właściwości.
  6. W oknie dialogowym Właściwości tabeli kliknij opcję Śledzenia zmian.
  7. Ustaw wartość elementu Śledzenie zmian na wartość True, a następnie kliknij przycisk OK.
  8. W menu Narzędzia kliknij polecenie Opcje.
  9. W oknie dialogowym Opcje kliknij przycisk projektantów.
  10. Kliknij, aby zaznaczyć pole wyboru Zapobieganie zapisywania zmian, które wymagają ponownego tworzenia tabeli , a następnie kliknij przycisk OK.
  11. W narzędziu projektanta tabel należy zmienić ustawienie Zezwalaj na wartości null w istniejącej kolumny.
  12. Spróbuj zapisać zmiany do tabeli.