SQL Server'da yeni İzleme Bayrakları bulma yöntemleri


38

Dışarıda bir sürü İz Bayrakları var. Bazıları iyi belgelenmiştir, bazıları değildir ve diğerleri 2016 sürümünde varsayılan davranış durumuna giden yolu buldu. Resmi destek kanallarının yanı sıra, Microsoft çalışanları vb., Yeni izleme bayraklarını bulmanın yolları nelerdir?

Son zamanlarda Aaron Bertrand tarafından yazılan birkaç yazıyı burada ve burada okudum , ancak yeni Trace Bayrakları hakkında hiçbir şey bulamadım.

Mssqlsystemresource'un veri ve günlük dosyasını yeni bir yere kopyaladım ve sistem tablolarını ve görünümlerini dürtmek için düzenli bir veritabanı gibi ekledim, ancak hemen bir şey bulamadım. DBCC TRACEON'un hangilerine izin vereceğini görmek için ilk önce bilinen İz İşaretlerinin bir listesini almayı ve bu listede bulunmayan numaralar arasında dolaşmayı düşünmüştüm.

İzleyen Bayrağın geçerli olmasını sağlamak için DBCC komutunun bunları etkinleştirmek için bir kaynakla teslim alması gerektiğini varsayarsak, nereye ulaşır? Bir .dll veya bir listesini içeren başka bir sistem dosyası var mı?

Sorunun geniş bir ağ yayınladığını biliyorum, ancak bunun 2016'da açıklanan etkisinin olmadığı yeni bir özelliğin yanı sıra, özel amaçlı davranışları olan bir İz Bayrağı hakkında okuduğu neydi? İlk düşüncem, belki de rakamların 7129'un 7219 olması gibi bir şekilde aktarıldığıydı. 7000-7999 gibi bir aralıktaki geçerli iz bayraklarının bir listesini almayı umuyordum. Bunların hepsini test etmek, hem DBCC TRACEON bayrakları hem de başlangıç ​​parametreleri, sonuçları özellik davranışına karşı test etmekle bir araya geldiğinde oldukça sıkıntılı olacaktır.

Yanıtlar:


42

Listeyi bulmak için yapabileceğiniz hiçbir şey yok, sormak veya mesajlardan / slayt desteğinden / vb. Almaktan başka bir şey yok. Liste yalnızca kodda, geçerli izleme bayrağı numaralarının C ++ kodundaki büyük bir enumdaki adlarla eşleştirildiği bir başlık dosyasında bulunur ve ardından adlar kodun geri kalanında kullanılır.

Aaron'un dediği gibi, herhangi bir izleme bayrağı numarasını etkinleştirebilirsiniz ve herhangi bir şey yapmazsa veya izleme bayrağının alakalı olduğu işlevi kullanmazsanız, davranışta herhangi bir fark görmezsiniz.

DBCC TRACEON hiçbir şeyi kontrol etmiyor - sayıların geçerli olduğu ya da bulunmadığı bir çalışma zamanı listesi olmadığı için - sadece bu bayrak için hangi bayrakların belirlenmiş olduğunu gösteren bir bitmapte izleme bayrağı numarasını etkinleştiriyor.

Geçerlilik kontrolüne sahip olmanın sorunu, keşfedilmelerine izin veren hangi izleme bayraklarının geçerli olduğunu göstermesidir. Bu şekilde 'geçerli liste' etkili bir şekilde karıştırılır, bu da SQL ekibinin istediği şeydir.

Kin'in önerisine ilişkin olarak, SQL Server'ın sahip olması gereken bir yorumda select * from sys.available_trace_flags- Evet ve hayır. Performansa son derece zararlı olan birçok iz bayrağı vardır ve yalnızca Ürün Desteği rehberliğinde hata ayıklamak için gereklidir, ancak SQL Server 'güvenli' bayraklarını listeleyebilir.


2
Bir küçük ince ayar - DBCC TRACEON gerçekten bir şeyi kontrol ediyor. Bu özet, 1'den başlayan izleme bayraklarının arasından geçen kodu gösterir. SQL Server'ın tüm geçerli sürümleri ayrılır
Brent

41

Yeni izleme bayraklarını bulmanın yolları nelerdir?

Çoğunlukla, onları aramak için harcayacak zamana ve duygusal kaynaklara sahip olmaktan geliyor.

Kuşkusuz, olası iz bayrağı numaraları arasında dolaşmak ve etkileri analiz etmek için bir senaryo yazmak da mümkündür, ancak bu her zaman verimli değildir. Bunun birçok nedeni vardır, ancak yaygın sıkıntılamalar, bazı izleme bayraklarının yalnızca diğerleri ile birlikte etkili olduğunu, bazılarının sadece -Tbaşlangıçta çalıştığı veya DBCC TRACEONbazılarında yalnızca birlikte çalıştığı gerçeğini içerir OPTION (QUERYTRACEON). Bazıları belgelenmemiş komutları veya komut uzantılarını veya belirli bir özelliğin de etkinleştirilmesini gerektirir. Bazıları, bu etkilerin nereye bakılacağını biliyorsanız, etki yaratır. Ve böylece ve ... çok ... çok.

Bununla birlikte, belki de en etkili teknik, belirli bir sorgu ya da komutun uygulanması sırasında adım adım bir hata ayıklayıcı ya da eklenmiş diğer profil oluşturma aracı ile adım adım izlemektir. Bu zaman alıcı geliyorsa, çünkü öyle.

Benim için, bir şey potansiyel olarak çok ilginç olmalı ya da benim için düşünmeyi bile düşünecek daha iyi bir çözüm olmadan gerçek dünyadaki bir sorunla ilgili olmalı. Ayrıca, daha önce yüzlerce veya binlerce kez bu süreçten geçtiyseniz, aradığınız şeye ilişkin geniş bir his elde etmek, hangi izleme bayrağı aralığının etkili olabileceği ve hangi bölümün hangisi olacağına dair yararlıdır. Kod temeli ilginç olacak.

Bir kesme noktası ayarlamak CSessionTraceFlags::CheckSessionTraceInternalve yazıcının değerini kontrol etmek edx(hangi izleme bayrağının kontrol edildiğini görmek için) basit durumlarda faydalı olabilir, ancak ilginç durumlar genellikle basit değildir - ve tüm izleme bayrakları kontrol edildikleri noktada kontrol edilmez alınan kod yolunu etkiler.

Resmi iz bayrakları oldukça küçük bir listesi var . Bunlar, tamamen test edilmiş ve CSS ve nihayetinde ürün geliştiricileri tarafından desteklenen (ve desteklenecek) bayraklardır. Ayrıca belgelemeye değecek kadar yaygın bir kullanım durumu olan bayraklardır.

Bulduğunuz diğer herhangi bir iz bayrağı, çeşitli durumlarda (farklı yapılar, SKU'lar, güvenlik ayarları, farklı özellikler ... aklınıza gelebilecek veya yapamayacağınız herhangi bir şey) beklenmeyen etkileri olabilecek bir meraktır. Bunlar, yalnızca kendileri hakkında yazan kişi tarafından desteklenecektir.

Birkaç gayri resmi liste var, bildiğim en iyisi Aaron Morelli tarafından yayınlanan Topikal bir SQL Server Bayrakları Koleksiyonu (şu anda v6, Nisan 2016).

Bütün bunlar, Microsoft CSS’in (nihayetinde) tüm izleme bayraklarına erişebildiğinden, resmi listede olmasalar bile, karşılaştığınız herhangi bir konuda size tavsiyede bulunabilirler. Elbette bir şey söylememeyi seçebilirler ve bununla ilgili bir ücret olabilir; Gerçekten bilmiyorum, asla o rotayı kendim geçirmedim.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.