jak znaleźć dane jeśli nie wiadomo w której tabeli się znajdują

0

Witam, mam następujący problem.
Pewna firma dostarczyła nam oprogramowanie bazujące na bazie mssql. Okres wsparcia oczywiście już się skończył, więc ewentualne poprawki są już wyłącznie płatne i to sporo. Oczywiście user's są bardzo ostrożni i coś spaprali, tzn. wiem co i jak, bo znalazłem błąd za pomocą aplikacji desktopowej, tyle że ona nie pozwala na poprawienie tego błędu, trzeba to zrobić od strony bazy. Znam id błędnego wpisu, bo znalazłem go w tabelach typu view, rzecz w tym, że potrzebuję w całej bazie, we wszystkich tabelach znaleźć wszystkie wpisy dotyczące właśnie tego id. Czy jest to w ogóle możliwe? Czy muszę ręcznie przeszukiwać każdą tabelę z osobna, jeśli tak to jest to robota na jakiś rok czasu bo tabel jest od cholery :/

0

A nie możesz po prostu sprawdzić skąd dane widoki biorą dane?

0

Tu masz pełno przykładów: http://stackoverflow.com/questions/436351/how-do-i-find-a-value-anywhere-in-a-sql-server-database
Możesz też odpalić SQL Server Profiler i podglądać o co aplikacja odpytuje bazę.
@Shalom pewnie łatwiej przeszukać bazę danych niż dekompilować program.

0
Shalom napisał(a):

A nie możesz po prostu sprawdzić skąd dane widoki biorą dane?

Sprawdziłem oczywiście, rzecz w tym, że danych które potrzebuje zmienić nie ma w tej tabeli do której prowadzi odwołanie. Referencje muszą być bardziej skomplikowane w tej bazie. A potrzebuję tylko zmienić parametr "isdelete" z 1 na 0 i szukam gdzie to w bazie jest zakopane, bo że jest, to wiem. Warunkiem zamówienia programu była pełna integralność danych w tym brak możliwości wykasowania tych danych z bazy przez zwykłego usera przez aplikację desktopową. Na kopii bazy wygląda to tak, wprowadzam dane i pliki, baza rośnie, usuwam te dane i pliki z aplikacji, już ich tam nie widzę i nie mam do nich dostępu. Dopiero po zalogowaniu jako administrator jestem w stanie je odszukać i w jednym z wierszy widać "usunięty przez użytkownika". Tyle że tutaj nic nie da się zmienić. Nie da się tego przywrócić, jak np. w przypadku danych archiwalnych. Oczywiście baza po usunięciu w apce ma cały czas ten sam rozmiar, więc dane w niej nadal leżą tak jak powinny. Ból polega na tym, że baza jest tworzona od 10 lat i składa się z kilkuset tabel. Ich ręczne przeglądanie przy pomocy zwykłego select zabierze mnóstwo czasu.

Kolego DibbyDum, dzięki, ale w czym to jest napisane? MSQL Menagment Studio tego nie łapie.

0

@Marcin83stw tylko że to twoje isdelete może być jakimś złożonym parametrem a nie prostą wartością i nie da rady tego łatwo odszukać w ten sposób ;]

0

@Marcin83stw
Pewnie że działa nie wiem co prawda jaką masz wersję ale sprawdziłem pod SQL Server 2014 ten przykład http://stackoverflow.com/a/436676 przeszukuje wartości liczbowe jak i tekstowe.

  1. Najpierw zwykłe kopiuj wklej 1:1 i odpalasz. Jak się procedura poprawnie dodała to...
  2. Uruchamiasz procedurę na przykład szukając wartości "50": EXEC dbo.SearchAllTables @SearchStr = 50;
0

SELECT * FROM system_information.COLUMNS WHERE COLUMN_NAME='isdeleted'

1 użytkowników online, w tym zalogowanych: 0, gości: 1