1) Potrzebne byłyby więcej informacji na temat całej struktury tabeli + indeksy nieklastrowane, aby poprawnie zorientować się, co się dzieje, ale moje podejrzenie ma związek z bitmapą NULL.
2) Tak, pod warunkiem, że masz miejsce do przechowywania, utwórz nową tabelę z prawidłową zerowalnością i przenieś dane w wielu partiach, aby uniknąć nadmiernego wzrostu dzienników, i przełącz tabelę przy użyciu techniki wymienionej poniżej. Zrobiłem to kilka razy, bez żadnych przestojów lub wcale.
Utwórz nową tabelę z poprawną definicją dla Column1
INSERT INTO <NewTable> SELECT * FROM <OriginalTable>;
Zmień nazwę OriginalTable na OriginalTable_old; Zmień nazwę NewTable na OriginalTable
Sprawdź poprawność i upuść OriginalTable_old
Zaletą jest to, że nie przytrzymujesz blokady oryginalnego stołu na czas operacji. Tabela powinna być zablokowana tylko podczas fazy zmiany nazwy. (Zakłada się, że SQL Server obsługuje zmianę nazwy obiektu).
Podczas zmiany kolumny z NOT NULL na NULL należy dotknąć każdego wiersza, dlatego wypełnienie zajmuje tyle czasu. Nie ma sposobu, aby zajęło to mniej czasu.
Inną opcją jest utworzenie nowej kolumny z poprawną definicją do danej tabeli, zaktualizuj kolumnę danymi ze starej kolumny, a następnie upuść starą kolumnę.
Lub Możesz odnieść się do starszego postu z SE, który dotyczy podobnego problemu w kolumnie INT.
W moim przypadku moja kolumna jest po prostu pełna wartości NULL, więc myślę, że to byłaby właściwa droga, utworzenie nowej całkowicie NULL kolumny o właściwej nazwie nie powinno zająć wcale czasu ... a następnie usunięcie starej kolumny, zamiast zajmować się milionami wkładek ...
Jeśli otworzysz monitor aktywności SQL podczas działania polecenia, będziesz w stanie stwierdzić, czy faktycznie go przetwarza lub czy czeka na jakąś formę wyłącznej blokady tabeli.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.
sp_rename
.