Preambuła
Modyfikowałem dziś kolumnę w SQL Server 2008, zmieniając typ danych z czegoś w rodzaju waluty (18,0) na (19,2).
Wystąpił błąd „Wprowadzone zmiany wymagają usunięcia i ponownego utworzenia poniższych tabel” z SQL Server.
Zanim spróbujesz odpowiedzieć, przeczytaj następujące informacje:
Wiem już, że istnieje opcja w Narzędzia ► Opcje ► Projektant ► Projektanci tabel i baz danych ► Odznacz pole „Zapobiegaj zapisywaniu zmian wymagających ponownego utworzenia tabeli”. ... więc nie odpowiadaj na to!
Rzeczywiste pytanie
Moje aktualne pytanie dotyczy czegoś innego, jak następuje:
Czy są jakieś negatywne skutki / możliwe wady tego działania?
Czy tabela faktycznie jest upuszczana i odtwarzana automatycznie, gdy to pole nie jest zaznaczone?
Jeśli tak, to czy kopia tabeli jest w 100% dokładną repliką tabeli źródłowej?
źródło
Odpowiedzi:
Tabela jest usuwana i ponownie tworzona tylko w przypadkach, gdy jest to jedyny sposób, w jaki SQL Server Management Studio został zaprogramowany, aby wiedzieć, jak to zrobić.
Z pewnością istnieją przypadki, w których będzie to robić, gdy nie będzie to konieczne, ale będą też przypadki, w których zmiany wprowadzone w Management Studio nie zostaną upuszczone i ponownie utworzone, ponieważ nie musi.
Problem polega na tym, że wyliczenie wszystkich przypadków i określenie, po której stronie linii spadają, będzie dość nużące.
Właśnie dlatego lubię używać
ALTER TABLE
w oknie zapytania, zamiast projektantów wizualnych, którzy ukrywają to, co robią (i szczerze mówiąc, mają błędy) - wiem dokładnie, co się wydarzy i mogę przygotować się na przypadki, w których jedyna możliwość polega na upuszczeniu i ponownym utworzeniu tabeli (która jest o kilka liczb mniejsza niż częstotliwość, z jaką SSMS to robi).źródło
Narzędzia -> Opcje -> Węzeł projektantów -> Odznacz „ Zapobiegaj zapisywaniu zmian wymagających odtworzenia tabeli ”.
źródło
Odwołanie - wyłączenie tej opcji może pomóc uniknąć ponownego tworzenia tabeli, a także może doprowadzić do utraty zmian. Załóżmy na przykład, że włączono funkcję śledzenia zmian w SQL Server 2008, aby śledzić zmiany w tabeli. Podczas wykonywania operacji powodującej ponowne utworzenie tabeli pojawia się komunikat o błędzie wymieniony w sekcji „Symptomy”. Jeśli jednak wyłączysz tę opcję, istniejące informacje o śledzeniu zmian zostaną usunięte po ponownym utworzeniu tabeli. Dlatego firma Microsoft zaleca, aby nie obejść tego problemu, wyłączając tę opcję.
źródło
SQL Server upuszcza i odtwarza tabele tylko wtedy, gdy:
Korzystanie z ALTER jest bezpieczniejsze, ponieważ w przypadku utraty metadanych podczas ponownego tworzenia tabeli dane zostaną utracone.
źródło
IDENTITY
właściwość na przykład na kolumnie.Tak, są z tego negatywne skutki:
Jeśli wypiszesz zmianę zablokowaną przez tę flagę, otrzymasz coś w rodzaju skryptu poniżej (wszystko zmieniam kolumnę ID w Contact w automatycznie obciążoną kolumnę TOŻSAMOŚCI, ale tabela ma zależności). Zwróć uwagę na potencjalne błędy, które mogą wystąpić podczas działania następujących programów:
-
źródło