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 ASP.NET arka planda kod sınıfı veya İş Mantığı Katmanı sınıfının kodu içinde ayarlanabildiği gibi, bunlar da saklı yordamlara 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 Team System sürümleri aracılığıyla adım adım girilebilir 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, Visual Basic 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ıklama işlemini ele alıyor.
SQL Server 2005 CLR Entegrasyon Ekibinden SQL Server 2005'te T-SQL ve CLR Hata Ayıklamaya Genel Bakış blog girdisi, Visual Studio'dan SQL Server 2005 nesnelerinde hata ayıklama yöntemlerinden üçünü vurgular:
- 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 gelinir ve denetim hata ayıklayıcıya devredilir. Uygulama hata ayıklama ile uygulama kodundan bir veritabanı nesnesine adım atamayacağımızı unutmayın. Hata ayıklayıcıyı durdurmak istediğimiz saklı yordamlarda veya UDF'lerde kesme noktalarını açıkça belirlemeliyiz. 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 Giriş
Visual Studio, veritabanı nesnesinde doğrudan hata ayıklamayı kolaylaştırır. Northwind veritabanındaki Products_SelectByCategoryID
saklı yordamına adım adım ilerlemek için Doğrudan Veritabanı Hata Ayıklama (DDD) özelliğini nasıl kullanacağımıza 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ı Yordamlar klasörünün içine dalın, Products_SelectByCategoryID
saklı yordamına sağ tıklayın ve bağlam menüsünden Saklı Yordama Adımla 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 girildiğinde, içecekler hakkındaki bilgileri döndürecek.
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. Kenar boşluğunda, saklı işlemdeki geçerli yeri gösteren sarı oka dikkat 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 beyana adım adım ilerleyebilmek için Araç Çubuğu'ndaki Geçiş Yap düğmesine tıklayın veya F10 tuşuna basın. Saklı Products_SelectByCategoryID
yordam tek bir ifade içerir, bu nedenle F10'a basmak, tek ifadeyi adım adım geçer ve saklı yordamın yürütülmesinin tamamlanmasına neden olur. 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; SELECT
deyimine giremezsiniz.
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 bir saklı yordama kesme noktaları ekleyebilir ve ardından ASP.NET uygulamasında 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_VB
) 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ı kurulduğunda, yeni bir bağlantı oluşturmak ve kurmak yerine bu havuzdan mevcut bir bağlantı nesnesi alınabilir. Bu bağlantı nesneleri havuzu bir performans geliştirmesidir ve varsayılan olarak etkindir. Ancak, hata ayıklama yaparken, hata ayıklama altyapısı havuzdan alınan bir bağlantıyla çalışırken doğru şekilde yeniden kurulmadığı için bağlantı havuzunu devre dışı bırakmak istiyoruz.
Bağlantı havuzunu devre dışı bırakmak için, NORTHWNDConnectionString
içindeki Web.config
güncelleyin ve Pooling=false
ayarını ekleyin.
<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. Şimdi geriye kalan tek şey saklı yordama kesme noktası eklemek ve hata ayıklamaya başlamaktır!
3. Adım: 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 Products_SelectByCategoryID
Kesme Noktası Ayarlama (Tam boyutlu görüntüyü görüntülemek için tıklayın)
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ının ayarlanması ve uygulama için hata ayıklamanın etkinleştirilmesiyle, ASP.NET uygulamasından çağrı yapı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 s TableAdapters öğreticisi için Mevcut Saklı Yordamları Kullanma öğreticisinde oluşturulmuştur. Buna karşılık gelen web sayfası (~/AdvancedDAL/ExistingSprocs.aspx
), bu saklı yordam tarafından döndürülen sonuçları görüntüleyen 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 Başlangıçta ExistingSprocs.aspx
İçecekleri Görüntüler (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Şekil 7: Saklı yordamın 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. Bunun yapılması geri gönderime neden olur ve Products_SelectByCategoryID
saklı yordamın yeniden yürütülmesine yol açar. Kesme noktasına yine isabet edilir, ama bu sefer @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ı
Products_SelectByCategoryID
sayfasını ziyaret ettiğinizde ExistingSprocs.aspx
saklı yordamındaki kesme noktasına ulaşılamıyorsa, ASP.NET uygulamasının Özellikler Sayfasındaki 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.
Uzak Örneklerde 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
adlı bir Windows hesabı olduğunu hayal edin. Bu hesabın, uzak SQL Server örneğine geçerli bir giriş kimliği ve sysadmin
rolünün üyesi olarak eklenmesi gerekir. 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 kitabına 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. Birinci Adımda, saklı yordamın içine girmek için Products_SelectByCategoryID
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.