Soru:
Kapalı kaynaklı uygulama ile sunucu arasındaki MSSQL işlemlerini görüntüleme
jg0
2013-03-23 11:43:39 UTC
view on stackexchange narkive permalink

Microsoft SQL Server (2005) kullanan kapalı kaynaklı eski bir uygulamayı tersine çeviriyorum ve arka planda tam olarak hangi sorguların yürütüldüğünü öğrenmek istiyorum.

Ağ trafiğini görüntülemek için Wireshark'ı kullanmanın mümkün olabileceğini anlıyorum, ancak oldukça beceriksiz olduğu için bu amaç için daha özel bir şey arıyorum.

Firefox'un Kurcalama Verileri 'ne benzeyen ancak MSSQL'in sorguları görüntülemesi ve muhtemelen düzenlemesi için bir araç var mı?

Aradığım özellikler:

  • Uygulama tarafından yürütülen sorguları tam olarak görüntüleyebilme (bloblar vb. Dahil)

Çok yararlı:

  • Sorgu yürütmeyi durdurabilir ve değerde düzenlemelere izin verebilir
Iki yanıtlar:
#1
+10
Peter Andersson
2013-03-23 12:40:57 UTC
view on stackexchange narkive permalink

Çoğu veritabanı, veritabanı çalışırken izleme ve profil oluşturma için çok uygundur. Çok az gerçek tersine mühendislik yapmanız gerekir. SQL Server Profiler adında bir program var ve bu programın yürütülen her bir sorguyu veritabanına aktarabileceğine inanıyorum. Sunucuya erişiminiz yoksa, biraz daha karmaşık hale gelir.

Uygulamanız ADO kullanıyorsa, ADO için İfade izleyicisini kullanabilirsiniz.

İstediğiniz şeyi yapmanın daha karmaşık bir yolu, uygulamanızın ne tür bir veritabanı katmanı kullandığına bağlıdır. Katman COM tabanlıysa (OLE DB ise), iki seçeneğiniz vardır, ya COM arayüzünü derinlemesine inceleyin veya bir COM proxy'si oluşturun. Muhtemelen çeşitli OLE DB ICommandXXX arayüzlerinden türetilen nesneleri basitçe bağlardım.

+1 (A) SQL Profiler gitmenin yoludur. MS SQL Server Profiler'ın Express sürümlerine dahil olmadığını unutmayın; bu durumda [bu] (http://www.datawizard.com/) gibi bir 3. taraf araca ihtiyacınız olabilir.
SQL Server'a kendiniz bağlanmak isterseniz, sorguları dizeler olarak görmek için hangi dışa aktarılan işlevi yakalarsınız? Jg0'ın dediği gibi, sorguları tüm protokolün bir parçası olarak koklayabilirsiniz. SQLDK.dll, SQLLANG.dll ve SQLMIN.DLL birçok dışa aktarılan işlev içerir, ancak özgün sorguyu bir dize olarak bulabileceğiniz belirli bir tanesine bağlanıp bağlanmadığı açık değildir. Bu izleme alternatifine sahip olmak ilginç olurdu.
SQL sunucusunun gerçekte hangi işlevleri dışa aktardığını veya içlerini bilmiyorum. Bunun gibi konular söz konusu olduğunda çok tembel olma eğilimindeyim ve en az dirençli yolu takip ediyorum.
#2
+3
0xC0000022L
2013-04-17 05:41:50 UTC
view on stackexchange narkive permalink

WireShark ile birlikte gelen TDS protokol kod çözücüsünü kullanırken, bağlantının WireShark tarafından koklanabilen bir şey aracılığıyla kurulduğunu varsayarsak, yanlış bir şey yoktur. Bu, TDS için özel bir protokol kod çözücüsüdür , bu nedenle ne demek istediğinizden emin değilim:

Bunun mümkün olabileceğini anlıyorum ağ trafiğini görüntülemek için Wireshark'ı kullanın, ancak oldukça beceriksiz hissettiriyor, bu nedenle bu amaç için daha özel bir şey arıyorum.

Ellerinizi kirletmek istiyorsanız proxy tabanlı bir FreeTDS 'de. Belki de en büyük sorun, bu projenin artık olgunlaşmış veya terk edilmiş olması. Bir proxy yazmak istiyorsanız, tdspool programı muhtemelen başlamak için en iyi noktanızdır. Ancak jTDS'yi istediğiniz şeyi yapmaya zorlayabilirsiniz (kaynak kodunu rastgele bir şekilde okuduktan sonra tdspool programı kadar iyi bir başlangıç ​​noktası gibi görünmüyor).



Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...