Pitanje:
Pregled MSSQL transakcija između zatvorenog koda i poslužitelja
jg0
2013-03-23 11:43:39 UTC
view on stackexchange narkive permalink

Vraćam naslijeđenu aplikaciju zatvorenog koda koja koristi Microsoft SQL Server (2005) i želio bih točno otkriti koji se upiti izvršavaju u pozadini.

Razumijem da je Wireshark možda moguće koristiti za pregled mrežnog prometa, ali čini se prilično nespretnim pa tražim nešto specijaliziranije za tu svrhu.

Postoji li alat koji je sličan Firefoxovim Tamper Data, ali koji MSSQL može pregledavati i eventualno uređivati ​​upite?

Značajke koje tražim:

  • Sposoban pregledavati upite upravo onako kako ih izvodi aplikacija (uključujući blobs itd.)

Značajke koje bi bile vrlo korisne korisno:

  • Sposoban presresti izvršavanje upita i dopustiti uređivanje vrijednosti
Dva odgovori:
#1
+10
Peter Andersson
2013-03-23 12:40:57 UTC
view on stackexchange narkive permalink

Većina baza podataka vrlo je ugodna za praćenje i profiliranje dok je baza podataka pokrenuta. Morate napraviti vrlo malo stvarnog obrnutog inženjeringa. Postoji program pod nazivom SQL Server Profiler za koji vjerujem da može izbaciti svaki pojedini upit izveden prema bazi podataka. Ako nemate pristup poslužitelju, postaje malo kompliciranije.

Ako vaša aplikacija koristi ADO, možda ćete moći koristiti tragač za izjavama za ADO.

Složeniji način izvođenja onoga što želite ovisi o vrsti sloja baze podataka koji vaš program koristi. Ako se sloj temelji na COM-u (OLE DB je), tada imate dvije mogućnosti, ili ubušiti u COM sučelje ili stvoriti COM proxy. Vjerojatno bih jednostavno spojio objekte koji proizlaze iz različitih OLE DB ICommandXXX sučelja.

+1 (A) SQL Profiler je put kojim treba ići. Imajte na umu da MS SQL Server Profiler nije uključen u izdanja Express, u tom slučaju će vam možda trebati alat treće strane kao što je [ovaj] (http://www.datawizard.com/)
Ako se želite sami priključiti na SQL Server, koju biste izvezenu funkciju presreli da biste upite vidjeli kao nizove? Kao što jg0 kaže, možete njušiti upite kao dio cijelog protokola. SQLDK.dll, SQLLANG.dll i SQLMIN.DLL sadrže puno izvezenih funkcija, ali nije jasno možete li izvorni upit kao niz pronaći ako se priključite na određenu. Bilo bi zanimljivo imati ovu alternativu praćenja.
Ne znam detalje o tome koje funkcije SQL server zapravo izvozi niti njihove unutarnje dijelove. Obično sam previše lijen kada su u pitanju ovakva pitanja i slijedim put najmanjeg otpora.
#2
+3
0xC0000022L
2013-04-17 05:41:50 UTC
view on stackexchange narkive permalink

Nema ništa loše u korištenju dekodera TDS protokola koji dolazi s WireSharkom, pod pretpostavkom da je veza uspostavljena putem nečega što WireShark može njuškati. Ovo je specijalizirani dekoder protokola za TDS , pa nisam siguran na što mislite:

Razumijem da je možda moguće koristite Wireshark za prikaz mrežnog prometa, ali čini se prilično nespretnim pa tražim nešto specijaliziranije za tu svrhu.

Ako želite zaprljati ruke, možete napisati proxy na FreeTDS. Možda se čini najveći problem što je ili ovaj projekt sada zreo ili napušten. Program tdspool vjerojatno je najbolje započeti ako želite napisati proxy. Ali moguće je da biste prisilili jTDS da radi što želite (od slučajnog čitanja izvornog koda čini se da nije toliko dobra polazna točka kao program tdspool ).



Ova pitanja su automatski prevedena s engleskog jezika.Izvorni sadržaj dostupan je na stackexchange-u, što zahvaljujemo na cc by-sa 3.0 licenci pod kojom se distribuira.
Loading...