Tak więc tytuł podsumowuje.
Mam bazę danych SQL Server z 28 tabelami i 86 procedurami składowanymi, które muszą być poddane inżynierii wstecznej. Jestem prawie pewien, że niektóre tabele nigdy nie są używane i że nie wszystkie procesy są również używane.
Największym problemem jest to, że wszystkie Usługi Windows, które zostały utworzone do użycia z tą bazą danych oraz cała dokumentacja oprogramowania i bazy danych zostały utracone, a osoby, która zaprojektowała cały system, nie ma nigdzie.
Udało mi się już stworzyć diagram ER, aby pomóc mi zrozumieć relacje, ale ponieważ nie mam doświadczenia w administrowaniu bazami danych, nie mam pojęcia, od czego powinienem zacząć.
Przepraszam również, jeśli nie ma tu zadawać tego rodzaju pytania.
sql-server
documentation
Human_AfterAll
źródło
źródło
Odpowiedzi:
Trzy bardzo szybkie kroki na początek:
1)
Informuje o ostatnim użyciu każdego indeksu, w tym indeksu klastrowego. Więc przynajmniej daj smak, do którego tabele są otwierane (a które nie).
2) Włącz sesję zdarzeń rozszerzonych (lub śledzenie Profiler po stronie serwera, jeśli korzystasz z wersji wcześniejszej niż SQL 2012) na około godzinę, gdy aplikacja jest używana. Możesz także poprosić użytkownika o wykonanie różnych działań w aplikacji w określonej kolejności, abyś mógł skorelować go ze śledzeniem / sesją.
Pomocna sugestia: jeśli możesz zmodyfikować ciąg połączenia, którego aplikacja używa w ogóle, dołącz „; Nazwa aplikacji = AppNameGoesHere”, abyś mógł uruchomić filtrowanie śledzenia dla tej konkretnej nazwy aplikacji. W każdym razie dobra praktyka.
3) Pobierz wersję aplikacji działającą na serwerze nieprodukcyjnym. Opracuj listę testów opartych na zachowaniu dla aplikacji („Gdy użytkownik kliknie przycisk Nowy element, tworzy nowy element dla tego użytkownika” itp.) Rozpocznij łagodne usuwanie obiektów, które według ciebie nie mają wpływu na testy, zmieniając ich nazwy (Używam formatu typu objectName_DEPRECATED_YYYYMMDD - przy czym data jest dniem, w którym planuję go faktycznie usunąć.) Ponownie zweryfikuj wszystkie testy.
Dzięki połączeniu sesji Extended Events, użycia indeksu DMV i miękkiego usuwania, powinieneś być w stanie zidentyfikować główne obiekty używane przez aplikację i mieć dobrą ogólną zgodność co do tego, który obiekt robi co.
Powodzenia!
źródło
Najlepiej zacząć od udokumentowania bazy danych za pomocą SQL Power Doc
Uwaga: Korzystałem z niego, dzięki czemu naprawdę dobrze zaczniesz dokumentować i rozumieć instancję serwera bazy danych.
źródło
New-Item -type directory -path "$([Environment]::GetFolderPath([Environment+SpecialFolder]::MyDocuments))\WindowsPowerShell\Modules"
kroku wSqlServerInventory ReadMe.txt
pliku. Nie wiem, gdzie mam wstawić ścieżkę do nowo utworzonego folderu i gdzie mam wstawić nazwę nowo utworzonego folderu.Ponieważ byłem kiedyś w podobnej sytuacji, mogę powiedzieć, że będzie to trudna do niemożliwej praca. Miałem tylko kod źródłowy (> 100 tys. Wierszy kodu), działającą usługę, działającą bazę danych (~ 50 tabel) oraz brak dokumentacji i nikogo, kto mógłby o nią zapytać oprócz użytkownika tej aplikacji oraz kopii bazy danych i usług działających w środowisko testowe (które było kilka numerów wersji, ale bez kodu źródłowego). Kolejnym wymogiem było to, że usługi musiały działać 24 godziny na dobę, 7 dni w tygodniu, ponieważ były zewnętrzne dla klientów. Sytuacja powstała, ponieważ większość pracowników odeszła mniej więcej w tym samym czasie, w tym programiści i dokumentacja zniknęła w chaosie. Zrozumienie / dokumentacja zajęło mi ponad 6 miesięcy. Było wiele tabel i funkcji, które nie przyniosły żadnego efektu, ponieważ były przeznaczone do wykorzystania w przyszłości lub nigdy nie zostały w pełni wdrożone, wadliwe lub przestarzałe lub niepublikowane funkcje. Po 6 miesiącach musiałem przepisać dokumentację, ponieważ odkryłem nowe rzeczy lub relacje między nimi i wcześniej miałem błędne założenia.
Dlaczego to mówię? Ponieważ czasami w takiej sytuacji łatwiej i taniej jest zacząć od zera i napisać nową aplikację spełniającą wymagania starej (lub nowej, jeśli zmieniły się one z czasem lub chcesz wydać nową wersję główną). Lub powiedzieć ci, czego będziesz się spodziewać.
Jeśli naprawdę chcesz to odtworzyć, polecam następujące kroki:
Życzę Ci szczęścia ;)
źródło
Nie mam wystarczającej liczby przedstawicieli, aby opublikować komentarz, ale chciałem pomóc w twoim pytaniu dotyczącym
getting the SQL Power Doc to work
.Jeśli wykonasz kroki na stronie z dokumentacją, będzie to działać dość łatwo. Po prostu zacznij od góry.
https://sqlpowerdoc.codeplex.com/wikipage?title=Guide%20For%20PowerShell%20Beginners
źródło