Załóżmy, że nasz szef chciałby abyśmy ("migusiem") odnaleźli informację na temat klienta, a przed nos dostaliśmy jego adres e-mail... i do roboty. Ok, tylko że to jest nasz pierwszy dzień w pracy, a baza liczy kilka tysięcy tabel....
Na podstawie zadania wiemy, że powinniśmy znaleźć tabelę, która posiada kolumnę z adresem e-mail. Ale przecież SQL Management Studio sam w sobie umożliwia wyszukiwanie TABEL, a instalowanie czegokolwiek na komputerze jest monitorowane, poza tym i tak nie posiadamy uprawnień...
...Ale posiadamy fajny skrypt, który przeszuka strukturę w tabelach systemowych naszej bazy:
SELECT
sysobjects.name as [tabela],
syscolumns.name as [nazwa kolumny],
systypes.name as [typ]
FROM sysobjects
JOIN syscolumns ON sysobjects.id = syscolumns.id
JOIN systypes ON syscolumns.xtype=systypes.xtype
WHERE sysobjects.xtype='U'
and syscolumns.name like '%mail%'
ORDER BY sysobjects.name,syscolumns.colid
Czemu '%mail%'?
Ponieważ powinniśmy założyć, że element którego szukamy może nazywać się:E_mail
contactemail
ContactEMail
EmailAddress
etc...
A czasami po prostu "mail".Różne szkoły.
Gotowiec wyszukuje tabele, które zawierają kolumnę o wybranej nazwie.
Później wystarczy już sprawdzić w bardziej sensownych tabelach, czy znajdujemy to czego szukamy i w optymalnym (z reguły) przypadku, przesłać maila z wynikami. Oczywiście wszystko zależy od struktury bazy; jeśli np parametry rozwijane są "w dół" (wierszami), albo przechowywany jest XML, wynalazek nie zadziała (chyba że poszukamy po XML, Param, Value, etc).
...Nie ma za co... :]
X3
Brak komentarzy:
Prześlij komentarz