Muszę zachować i rozszerzyć stary system, który zawiera metody usług sieciowych i tabele bazy danych, które nie są już używane. Ponieważ nie jestem do końca pewien, czy stoły są naprawdę zbędne, boję się je upuścić.
Czy istnieje inny sposób na osiągnięcie tego samego efektu (nie można już używać tabel) bez ich upuszczania? Mój pomysł był aby przenieść je do innego schematu (na przykład Deleted
) z obecnego domyślnie dbo
.
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'Deleted')
BEGIN
EXEC('CREATE SCHEMA Deleted')
END
ALTER SCHEMA Deleted TRANSFER dbo.TableName;
Czy jest jakaś inna opcja lub czy są jakieś wady podejścia do schematu?
źródło
Kilka innych opcji to po prostu zmiana nazwy tabel lub, jeśli mają indeksy klastrowe, możesz wyłączyć indeks klastrowany.
źródło
Usuń uprawnienia w tabeli z Roli / Grup / Kont / Kont, które mogą z niego korzystać.
Jeśli coś wybuchnie, odłóż je z powrotem [szybko].
Wskazówka: użycie skryptu do wprowadzenia tych zmian byłoby naprawdę dobrym pomysłem.
źródło
Usunięcie uprawnień na ogół nie zadziała, ponieważ nie możesz BYĆ PEWNY, że ktoś nie ma uprawnień. Być może poprzez grupę, rolę, a nawet dlatego, że są administratorami (choć miejmy nadzieję, że nie).
W przypadku tabel możesz je wyłączyć. I to jest szybki proces. Jednak aby je włączyć, musisz je odbudować i mieć duży stół, co może zająć sporo czasu.
Najlepszym rozwiązaniem będzie przeniesienie obiektu do nowego schematu (zgodnie z sugestią) lub zmiana nazwy obiektu. Obie te operacje są szybkie i łatwe zarówno do wykonania, jak i cofnięcia. Uprawnienia będą również obowiązywać w obu kierunkach.
Dodatkowym krokiem, jaki możesz zrobić, jest dodanie „notatki TBD” w rozszerzonych właściwościach obiektu. Możesz zanotować datę wprowadzenia zmiany i / lub wszelkie uwagi na temat tego, dlaczego uważasz, że można się go bezpiecznie pozbyć.
Wszystko to powiedziało, że przez kilka dni prowadzę sesję zdarzeń rozszerzonych (lub śledzenie profilera), aby mieć pewność, że wszystkie obiekty są używane. Możesz mocno ograniczyć sesję do samej nazwy obiektu i kiedy go dotknięto, aby zmniejszyć narzut. Upewnij się również, że prowadzisz tę sesję przez kilka dni po obu stronach końca miesiąca, a być może nawet pod koniec kwartału, aby mieć pewność, że masz wszystko.
źródło
Usuń uprawnienia, jak sugeruje Phil W.
Usuń także uprawnienia z procedur przechowywanych korzystających z tabel. W SQL Server (nie wiem o innych) uprawnienia są łączone z obiektu wywołującego (np. Procedura składowana) do obiektu wywoływanego (np. Tabela).
źródło