Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
tarafından Scott Mitchell
Visual Studio Professional ve Team System sürümleri kesme noktaları ayarlamanıza ve SQL Server içindeki saklı yordamlara adım atarak saklı yordamlarda hata ayıklamayı uygulama kodunda hata ayıklama kadar kolay hale getirmenize olanak sağlar. Bu öğreticide, saklı yordamların doğrudan veritabanı hata ayıklaması ve uygulama hata ayıklaması gösterilmektedir.
Giriş
Visual Studio zengin bir hata ayıklama deneyimi sağlar. Farenin birkaç tuş vuruşu veya tıklamasıyla, bir programın yürütülmesini durdurmak ve durumunu ve denetim akışını incelemek için kesme noktalarını kullanmak mümkündür. Visual Studio, uygulama kodunda hata ayıklamanın yanı sıra SQL Server'ın içinden saklı yordamlarda hata ayıklama desteği sunar. Kesme noktalarının bir ASP.NET code-behind sınıfı veya İş Mantığı Katmanı sınıfının kodu içinde ayarlanabildiği gibi, kesme noktaları saklı prosedürlere de yerleştirilebilir.
Bu öğreticide, Visual Studio içindeki Sunucu Gezgini'nden saklı yordamlara adım atmayı ve saklı yordam çalışan ASP.NET uygulamasından çağrıldığında isabet alan kesme noktalarını ayarlamayı inceleyeceğiz.
Uyarı
Ne yazık ki saklı yordamlara yalnızca Visual Studio'nun Professional ve Takım Sistemleri sürümleri aracılığıyla adım adım incelenebilir ve hata ayıklanabilir. Visual Web Developer'ı veya Visual Studio'nun standart sürümünü kullanıyorsanız, saklı yordamlarda hata ayıklamak için gerekli adımları incelediğimizde okumaya devam edebilirsiniz, ancak bu adımları makinenizde çoğaltamazsınız.
SQL Server Hata Ayıklama Kavramları
Microsoft SQL Server 2005, tüm .NET derlemeleri tarafından kullanılan çalışma zamanı olan Common Language Runtime (CLR) ile tümleştirme sağlamak üzere tasarlanmıştır. Sonuç olarak, SQL Server 2005 yönetilen veritabanı nesnelerini destekler. Başka bir ifadeyle, C# sınıfında yöntemler olarak saklı yordamlar ve User-Defined İşlevleri (UDF) gibi veritabanı nesneleri oluşturabilirsiniz. Bu, bu saklı yordamların ve UDF'lerin .NET Framework'te ve kendi özel sınıflarınızdan işlevselliği kullanmasına olanak tanır. Elbette SQL Server 2005, T-SQL veritabanı nesneleri için de destek sağlar.
SQL Server 2005, hem T-SQL hem de yönetilen veritabanı nesneleri için hata ayıklama desteği sunar. Ancak bu nesneler yalnızca Visual Studio 2005 Professional ve Team Systems sürümleri aracılığıyla hata ayıklanabilir. Bu öğreticide T-SQL veritabanı nesnelerinde hata ayıklamayı inceleyeceğiz. Sonraki öğretici yönetilen veritabanı nesnelerinde hata ayıklamayı ele alır.
SQL Server 2005'te T-SQL ve CLR Hata Ayıklamaya Genel Bakış blog girdisi, SQL Server 2005 CLR Tümleştirme ekibinden, Visual Studio'dan SQL Server 2005 nesnelerinde hata ayıklamanın üç yolunu açıklar:
- Doğrudan Veritabanı Hata Ayıklama (DDD) - Sunucu Gezgini'nden saklı yordamlar ve UDF'ler gibi herhangi bir T-SQL veritabanı nesnesine adım atabiliriz. 1. Adımda DDD'i inceleyeceğiz.
- Uygulama Hata Ayıklama - Veritabanı nesnesi içinde kesme noktaları ayarlayabilir ve ardından ASP.NET uygulamamızı çalıştırabiliriz. Veritabanı nesnesi yürütüldüğünde, kesme noktasına ulaşıldığında denetim hata ayıklayıcıya devredilecektir. Uygulama hata ayıklama ile uygulama kodundan bir veritabanı nesnesine adım atamayacağımızı unutmayın. Hata ayıklama aracının durmasını istediğimiz saklı yordamlarda veya UDF'lerde durma noktalarını açıkça ayarlamalıyız. Uygulama hata ayıklaması 2. Adım'dan başlayarak incelendi.
- SQL Server Projesinden hata ayıklama - Visual Studio Professional ve Team Systems sürümleri, yönetilen veritabanı nesneleri oluşturmak için yaygın olarak kullanılan bir SQL Server Project türü içerir. Sonraki öğreticide SQL Server Projelerini kullanmayı ve içeriklerinde hata ayıklamayı inceleyeceğiz.
Visual Studio, yerel ve uzak SQL Server örneklerinde saklı yordamların hatalarını ayıklayabilir. Yerel SQL Server örneği, Visual Studio ile aynı makineye yüklenen örnektir. Kullandığınız SQL Server veritabanı geliştirme makinenizde yoksa, uzak örnek olarak kabul edilir. Bu öğreticiler için yerel SQL Server örneklerini kullanıyoruz. Uzak SQL sunucusu örneğinde saklı yordamlarda hata ayıklamak, yerel örnekteki saklı yordamlarda hata ayıklamaya kıyasla daha fazla yapılandırma adımı gerektirir.
Yerel bir SQL Server örneği kullanıyorsanız, 1. Adım ile başlayabilir ve bu öğreticiyi sonuna kadar çalışabilirsiniz. Öte yandan uzak bir SQL Server örneği kullanıyorsanız, ilk olarak hata ayıklarken uzak örnekte SQL Server oturum açma bilgisi olan bir Windows kullanıcı hesabıyla geliştirme makinenizde oturum açtığınızdan emin olmanız gerekir. Ayrıca, hem bu veritabanı oturum açma bilgileri hem de çalışan ASP.NET uygulamasından veritabanına bağlanmak için kullanılan veritabanı oturum açma bilgileri rolün sysadmin
üyesi olmalıdır. Uzak örnekte hata ayıklamak için Visual Studio ve SQL Server'ı yapılandırma hakkında daha fazla bilgi için bu öğreticinin sonundaki Uzak Örneklerde T-SQL Veritabanı Nesnelerinde Hata Ayıklama bölümüne bakın.
Son olarak, T-SQL veritabanı nesneleri için hata ayıklama desteğinin .NET uygulamaları için hata ayıklama desteği kadar zengin bir özellik olmadığını anlayın. Örneğin, kesme noktası koşulları ve filtreleri desteklenmez, hata ayıklama pencerelerinin yalnızca bir alt kümesi kullanılabilir, Düzenle ve Devam Et'i kullanamazsınız, Anında penceresi kullanılamaz hale gelir ve bu şekilde devam eder. Daha fazla bilgi için bkz. Hata Ayıklayıcı Komutları ve Özellikleriyle İlgili Sınırlamalar .
1. Adım: Saklı Yordamaya Doğrudan Girmek
Visual Studio, veritabanı nesnesinde doğrudan hata ayıklamayı kolaylaştırır. Northwind veritabanındaki Products_SelectByCategoryID
saklı yordamında adım adım ilerlemek için Doğrudan Veritabanı Hata Ayıklama (DDD) özelliğinin nasıl kullanılacağına bakalım. Adından da anlaşılacağı gibi, Products_SelectByCategoryID
belirli bir kategoriye ait ürün bilgilerini döndürür; Typed DataSet'in TableAdapters öğreticisi için Mevcut Saklı Yordamları Kullanma öğreticisinde oluşturulmuştur. Sunucu Gezgini'ne giderek başlayın ve Northwind veritabanı düğümünü genişletin. Ardından Saklı İşlemler klasörüne gidin, saklı işleme Products_SelectByCategoryID
sağ tıklayın ve bağlam menüsünden Saklı İşlemlere Gir seçeneğini belirleyin. Bu işlem hata ayıklayıcıyı başlatır.
Products_SelectByCategoryID
Saklı yordam bir @CategoryID
giriş parametresi beklediğinden bu değeri sağlamamız istenir. 1 girin, bu içecekler hakkındaki bilgileri döndürecektir.
/> için Değer 1'i kullanın
Şekil 1: Parametre için Değer 1'i @CategoryID
kullanma
@CategoryID
parametresi için değer sağlandıktan sonra saklı yordam yürütülür. Ancak hata ayıklayıcısı, tamamlanmaya çalışmak yerine ilk deyimde yürütmeyi durdurur. Saklanan prosedürdeki geçerli konumu gösteren kenar boşluğundaki sarı oku not edin. Parametre değerlerini İzleme penceresinden veya saklı yordamdaki parametre adının üzerine gelerek görüntüleyebilir ve düzenleyebilirsiniz.
Şekil 2: Hata Ayıklayıcı Saklı Yordamın İlk Deyiminde Durduruldu (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Saklı yordamda her seferinde bir ifadede adım adım ilerleyebilmek için Araç Çubuğu'ndaki Adım Adım İlerle düğmesine tıklayın veya F10 tuşuna basın. Saklı Products_SelectByCategoryID
yordam, tek bir SELECT
ifade içerir; bu nedenle, F10'a basmak, tek ifadenin üzerinden atlayarak saklı yordamın yürütülmesini tamamlar. Saklı yordam tamamlandıktan sonra çıktısı, çıktı penceresinde görüntülenir ve hata ayıklayıcı sonlandırılır.
Uyarı
T-SQL hata ayıklama, deyim düzeyinde gerçekleşir; bir SELECT
deyimine adım atamazsınız.
2. Adım: Web Sitesini Uygulama Hata Ayıklama için Yapılandırma
Bir saklı yordamın hatasını doğrudan Sunucu Gezgini'nden ayıklamak kullanışlı olsa da, çoğu senaryoda saklı yordam ASP.NET uygulamamızdan çağrıldığında hata ayıklamayla daha çok ilgileniyoruz. Visual Studio'dan saklı bir yordamda kesme noktaları ekleyebilir ve ardından ASP.NET uygulamasını hata ayıklamaya başlayabiliriz. Uygulamadan kesme noktaları içeren bir saklı yordam çağrıldığında yürütme kesme noktasında durur ve 1. Adımda yaptığımız gibi saklı yordamın parametre değerlerini görüntüleyebilir ve değiştirebilir ve deyimlerinde adım adım ilerleyebiliriz.
Uygulamadan çağrılan saklı yordamlarda hata ayıklamaya başlayabilmeniz için önce ASP.NET web uygulamasına SQL Server hata ayıklayıcısıyla tümleştirmesi talimatını vermemiz gerekir. Çözüm Gezgini'nde (ASPNET_Data_Tutorial_74_CS
) web sitesi adına sağ tıklayarak başlayın. Bağlam menüsünden Özellik Sayfaları seçeneğini belirleyin, soldaki Başlangıç Seçenekleri öğesini seçin ve Hata Ayıklayıcılar bölümündeki SQL Server onay kutusunu işaretleyin (bkz. Şekil 3).
Şekil 3: Uygulamanın Özellik Sayfalarında SQL Server Onay Kutusunu işaretleyin (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Ayrıca, bağlantı havuzunun devre dışı bırakılması için uygulama tarafından kullanılan veritabanı bağlantı dizesini güncelleştirmemiz gerekir. Bir veritabanına bağlantı kapatıldığında, ilgili SqlConnection
nesne kullanılabilir bağlantılardan oluşan bir havuza yerleştirilir. Bir veritabanına bağlantı kurarken, yeni bir bağlantı oluşturup kurmak yerine, bu havuzdan kullanılabilir bir bağlantı nesnesi alınabilir. Bu bağlantı nesneleri havuzu bir performans geliştirmesidir ve varsayılan olarak etkindir. Ancak hata ayıklama sırasında, hata ayıklama altyapısı havuzdan alınan bir bağlantıyla çalışırken doğru şekilde tekrar kurulmadığı için bağlantı havuzunu kapatmak istiyoruz.
Bağlantı havuzunu devre dışı bırakmak için, NORTHWNDConnectionString
içindeki Web.config
'yı Pooling=false
ayarını ekleyecek şekilde güncelleyin.
<connectionStrings>
<add name="NORTHWNDConnectionString" connectionString=
"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\NORTHWND.MDF;
Integrated Security=True;User Instance=True;Pooling=false"
providerName="System.Data.SqlClient" />
</connectionStrings>
Uyarı
ASP.NET uygulaması aracılığıyla SQL Server'da hata ayıklamayı tamamladıktan sonra, bağlantı dizesinden ayarı kaldırarak Pooling
(veya olarak ayarlayarak Pooling=true
) bağlantı havuzunu yeniden devreye aldığınızdan emin olun.
Bu noktada ASP.NET uygulaması, Web uygulaması aracılığıyla çağrıldığında Visual Studio'nun SQL Server veritabanı nesnelerinde hata ayıklamasına izin verecek şekilde yapılandırılmıştır. Geriye kalan tek şey saklı yordama bir kesme noktası ekleyip hata ayıklamaya başlamaktır!
Adım 3: Bir Kesme Noktası Ekleme ve Hata Ayıklama
Products_SelectByCategoryID
Saklı yordamı açın ve uygun yerdeki kenar boşluğuna tıklayarak veya imlecinizi deyimin SELECT
başına getirip F9 tuşuna basarak deyimin SELECT
başında bir kesme noktası ayarlayın. Şekil 4'te gösterildiği gibi kesme noktası kenar boşluğunda kırmızı bir daire olarak görünür.
Şekil 4: Saklı Yordamda Bir Kesme Noktası Ayarlayın (Products_SelectByCategoryID
)
SQL veritabanı nesnesinin bir istemci uygulaması aracılığıyla hata ayıklaması için, veritabanının uygulama hata ayıklamasını destekleyecek şekilde yapılandırılması zorunludur. Kesme noktasını ilk kez ayarladığınızda, bu ayar otomatik olarak açılmalıdır, ancak iki kez kontrol etmek akıllıca olur. Sunucu Gezgini'nde düğüme NORTHWND.MDF
sağ tıklayın. Bağlam menüsü, Uygulama Hata Ayıklama adlı işaretli bir menü öğesi içermelidir.
Şekil 5: Uygulama Hata Ayıklama Seçeneğinin Etkinleştirildiğinden Emin Olun
Kesme noktası ayarlandığında ve Uygulama Hata Ayıklama seçeneği etkinleştirildiğinde, ASP.NET uygulamasından çağrıldığında saklı yordamın hatalarını ayıklamaya hazırız. Hata Ayıkla menüsüne gidip Hata Ayıklamayı Başlat'ı seçerek, F5'e basarak veya Araç Çubuğu'ndaki yeşil yürütme simgesine tıklayarak hata ayıklayıcıyı başlatın. Bu işlem hata ayıklayıcıyı başlatır ve web sitesini başlatır.
Saklı yordam, Products_SelectByCategoryID
Typed DataSet'in TableAdapter'ları için Mevcut Saklı Yordamları Kullanma öğreticisinde oluşturulmuştur. İlgili web sayfası (~/AdvancedDAL/ExistingSprocs.aspx
), bu saklı yordam tarafından döndürülen sonuçları gösteren bir GridView içerir. Bu sayfayı tarayıcı üzerinden ziyaret edin. Sayfaya ulaşılırken saklı yordamdaki Products_SelectByCategoryID
kesme noktasına ulaşılır ve denetim Visual Studio'ya döndürülür. 1. Adımda olduğu gibi saklı yordam deyimlerinde adım adım ilerleyebilir ve parametre değerlerini görüntüleyebilir ve değiştirebilirsiniz.
Şekil 6: Sayfa ilk olarak ExistingSprocs.aspx
içecekleri gösterir (Tam boyutlu görüntü için tıklayın)
Şekil 7: Saklı Yordam Kesme Noktasına Ulaşıldı (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Şekil 7'deki gözcü penceresinde gösterildiği gibi parametrenin @CategoryID
değeri 1'dir. Bunun nedeni ExistingSprocs.aspx
, sayfanın başlangıçta 1 değerine sahip CategoryID
içecekler kategorisindeki ürünleri görüntülemesidir. Açılan listeden farklı bir kategori seçin. Bu işlem bir postback gerçekleştirir ve saklı yordamı Products_SelectByCategoryID
yeniden yürütür. Kesme noktasına yeniden vurulur, ancak bu kez @CategoryID
parametresinin değeri, seçili açılan liste öğesinin CategoryID
değerini yansıtır.
Şekil 8: Drop-Down Listesinden Farklı Bir Kategori Seçin (Tam boyutlu görüntüyü görüntülemek için tıklayın)
@CategoryID Parametresi, Web Sayfasından Seçilen Kategoriyi Yansıtır" />
Şekil 9: @CategoryID
Parametre, Web Sayfasından Seçilen Kategoriyi Yansıtır (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Uyarı
Sayfayı ziyaret ederken Products_SelectByCategoryID
saklı yordamdaki ExistingSprocs.aspx
kesme noktasına isabet edilmediyse, ASP.NET uygulamasının Özellikler Sayfası'nın Hata Ayıklayıcılar bölümünde SQL Server onay kutusunun işaretli olduğundan, bağlantı havuzunun devre dışı bırakıldığından ve veritabanının Uygulama Hata Ayıklama seçeneğinin etkinleştirildiğinden emin olun. Sorun yaşamaya devam ediyorsanız Visual Studio'yu yeniden başlatın ve yeniden deneyin.
Uzaktaki Sunucularda T-SQL Veritabanı Nesnelerinde Hata Ayıklama
SQL Server veritabanı örneği Visual Studio ile aynı makinede olduğunda Visual Studio aracılığıyla veritabanı nesnelerinde hata ayıklama oldukça basittir. Ancak, SQL Server ve Visual Studio farklı makinelerde bulunuyorsa, her şeyin düzgün çalışması için dikkatli bir yapılandırma gerekir. Karşılaştığımız iki temel görev vardır:
- ADO.NET aracılığıyla veritabanına bağlanmak için kullanılan oturum açma bilgilerinin role ait
sysadmin
olduğundan emin olun. - Geliştirme makinesinde Visual Studio tarafından kullanılan Windows kullanıcı hesabının role ait
sysadmin
geçerli bir SQL Server oturum açma hesabı olduğundan emin olun.
İlk adım oldukça basittir. İlk olarak, ASP.NET uygulamasından veritabanına bağlanmak için kullanılan kullanıcı hesabını belirleyin ve ardından SQL Server Management Studio'dan bu oturum açma hesabını sysadmin
role ekleyin.
İkinci görev, uygulamada hata ayıklamak için kullandığınız Windows kullanıcı hesabının uzak veritabanında geçerli bir oturum açma bilgisi olmasını gerektirir. Ancak, iş istasyonunuzda oturum açtığınız Windows hesabının SQL Server'da geçerli bir oturum açma işlemi olmaması olasılığı vardır. Belirli oturum açma hesabınızı SQL Server'a eklemek yerine, bazı Windows kullanıcı hesabını SQL Server hata ayıklama hesabı olarak belirlemek daha iyi bir seçenektir. Ardından, uzak bir SQL Server örneğinin veritabanı nesnelerinde hata ayıklamak için Bu Windows oturum açma hesabının kimlik bilgilerini kullanarak Visual Studio'yu çalıştırırsınız.
Bir örnek, olayları netleştirmeye yardımcı olmalıdır. Windows etki alanında SQLDebug
adında bir Windows hesabı olduğunu düşünün. Bu hesabın geçerli bir giriş olarak ve sysadmin
rolünün üyesi olarak uzak SQL Server örneğine eklenmesi gerekmektedir. Ardından, Visual Studio'dan uzak SQL Server örneğinde hata ayıklamak için kullanıcı olarak Visual Studio'yu SQLDebug
çalıştırmamız gerekir. Bu işlem, iş istasyonumuzun oturumunu kapatarak, olarak SQLDebug
yeniden oturum açarak ve sonra Visual Studio'yu başlatarak yapılabilir, ancak daha basit bir yaklaşım kendi kimlik bilgilerimizi kullanarak iş istasyonumuzda oturum açmak ve ardından kullanıcı olarak runas.exe
Visual Studio'yu başlatmak için kullanmaktırSQLDebug
.
runas.exe
belirli bir uygulamanın farklı bir kullanıcı hesabı kisvesi altında yürütülmesine izin verir. Visual Studio'yu olarak SQLDebug
başlatmak için komut satırına aşağıdaki deyimi girebilirsiniz:
runas.exe /user:SQLDebug "%PROGRAMFILES%\Microsoft Visual Studio 8\Common7\IDE\devenv.exe"
Bu işlem hakkında daha ayrıntılı bir açıklama için William R. Vaughn'unHitchhiker's Guide to Visual Studio ve SQL Server, Seventh Edition'a bakın.
Uyarı
Geliştirme makineniz Windows XP Service Pack 2 çalıştırıyorsa, uzaktan hata ayıklamaya izin vermek için İnternet Bağlantısı Güvenlik Duvarı'nı yapılandırmanız gerekir.
Nasıl Yapılır: SQL Server 2005 Hata Ayıklamayı Etkinleştirme makalesi, bunun iki adım içerdiğini belirtir: (a) Visual Studio konak makinesinde Özel Durumlar listesine eklemeli Devenv.exe
ve TCP 135 bağlantı noktasını açmanız gerekir; (b) Uzak (SQL) makinede TCP 135 bağlantı noktasını açmanız ve Özel Durumlar listesine eklemeniz sqlservr.exe
gerekir. Etki alanı ilkeniz IPSec üzerinden ağ iletişiminin yapılmasını gerektiriyorsa UDP 4500 ve UDP 500 bağlantı noktalarını açmanız gerekir.
Özet
Visual Studio, .NET uygulama kodu için hata ayıklama desteği sağlamanın yanı sıra SQL Server 2005 için çeşitli hata ayıklama seçenekleri de sağlar. Bu öğreticide bu seçeneklerden ikisini inceledik: Doğrudan Veritabanı Hata Ayıklama ve uygulama hata ayıklama. T-SQL veritabanı nesnesinde doğrudan hata ayıklamak için, Sunucu Gezgini aracılığıyla nesneyi bulun ve sağ tıklayın ve İçine Adımla'yı seçin. Bu, hata ayıklayıcıyı başlatır ve veritabanı nesnesinin ilk deyiminde durur; bu noktada nesnenin deyimlerinde adım adım ilerleyebilir ve parametre değerlerini görüntüleyebilir ve değiştirebilirsiniz. 1. Adımda, Products_SelectByCategoryID
saklı yordamına adım atmak için bu yaklaşımı kullandık.
Uygulama hata ayıklama, kesme noktalarının doğrudan veritabanı nesneleri içinde ayarlanmasına olanak tanır. Kesme noktalarına sahip bir veritabanı nesnesi bir istemci uygulamasından (ASP.NET web uygulaması gibi) çağrıldığında, hata ayıklayıcı devraldıkça program durur. Uygulama hata ayıklama, belirli bir veritabanı nesnesinin çağrılmaya neden olduğu uygulama eylemini daha net bir şekilde gösterdiği için yararlıdır. Ancak, Doğrudan Veritabanı Hata Ayıklama'dan biraz daha fazla yapılandırma ve kurulum gerektirir.
Veritabanı nesnelerinin hata ayıklaması SQL Server Projeleri aracılığıyla da yapılabilir. Sonraki öğreticide SQL Server Projelerini kullanmayı ve yönetilen veritabanı nesnelerini oluşturmak ve hatalarını ayıklamak için bunların nasıl kullanılacağını inceleyeceğiz.
Mutlu Programlama!
Yazar Hakkında
Yedi ASP/ASP.NET kitabının yazarı ve 4GuysFromRolla.com kurucusu Scott Mitchell, 1998'den beri Microsoft Web teknolojileriyle çalışmaktadır. Scott bağımsız bir danışman, eğitmen ve yazar olarak çalışır. Son kitabı Sams Teach Yourself ASP.NET 24 Hours 2.0'dır. Ona adresinden mitchell@4GuysFromRolla.comulaşabilirsiniz.