Saklı Yordamların Hatalarını Ayıklama (VB)

tarafından Scott Mitchell

PDF’yi İndir

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ıklamak 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. Birkaç tuş vuruşu veya fare tıklamasıyla, bir programın yürütülmesini durdurmak ve durumunu ve denetim akışını incelemek için kesme noktaları kullanabilirsiniz. Visual Studio, uygulama kodunda hata ayıklamanın yanı sıra SQL Server içinden saklı yordamlarda hata ayıklama desteği de sunar. Kesme noktalarının arka planda kod ASP.NET 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'daki 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.

Not

Ne yazık ki saklı yordamlara yalnızca Visual Studio'nun Professional ve Team Systems sürümleri aracılığıyla basılabilir 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.

hata ayıklama kavramlarını SQL Server

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 için tasarlanmıştır. Sonuç olarak, SQL Server 2005 yönetilen veritabanı nesnelerini destekler. Diğer 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 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 öğreticide yönetilen veritabanı nesnelerinde hata ayıklamaya bakabilirsiniz.

SQL Server 2005 CLR Tümleştirme ekibinden SQL Server2005'te T-SQL ve CLR Hata Ayıklamaya Genel Bakış blog girdisi, Visual Studio'dan SQL Server 2005 nesnelerinde hata ayıklamanın üç yolunu 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ürken kesme noktasına isabet edilir 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. Bu saklı yordamlarda veya UDF'lerde hata ayıklayıcının durmasını istediğimiz kesme noktalarını açıkça ayarlamalıyız. Uygulama hata ayıklaması 2. Adım'dan başlayarak incelendi.
  • bir 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 Proje 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 için yerel örnekteki saklı yordamlarda hata ayıklamaya kıyasla daha fazla yapılandırma adımı gerekir.

Yerel bir SQL Server örneği kullanıyorsanız, 1. Adım ile başlayabilir ve bu öğreticiyi sonuna kadar çalışabilirsiniz. Ancak uzak bir SQL Server örneği kullanıyorsanız, ilk olarak hata ayıklarken geliştirme makinenizde uzak örnekte SQL Server oturum açma bilgisi olan bir Windows kullanıcı hesabıyla 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. Visual Studio'yu yapılandırma ve uzak örnekte hata ayıklamayı SQL Server 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, Anlık penceresi kullanılamaz hale getirilir vb. Daha fazla bilgi için bkz. Hata Ayıklayıcı Komutları ve Özellikleriyle İlgili Sınırlamalar .

1. Adım: Saklı Yordama Doğrudan AdımLama

Visual Studio, veritabanı nesnesinde doğrudan hata ayıklamayı kolaylaştırır. Northwind veritabanındaki saklı yordama geçmek Products_SelectByCategoryID 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; Türlenmiş DataSet'in TableAdapers öğreticisi için Varolan 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ünde detaya gidin, saklı yordama Products_SelectByCategoryID 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. İçecekler hakkındaki bilgileri döndürecek olan 1 girin.

<span class=@CategoryID Parametresi için Değer 1'i kullanın" />

Şekil 1: Parametre için Değer 1'i @CategoryID kullanma

parametresi için değer sağlandıktan @CategoryID sonra saklı yordam yürütülür. Ancak hata ayıklayıcı, tamamlanmasını çalıştırmak yerine ilk deyimde yürütmeyi durdurur. Saklı yordamdaki geçerli konumu gösteren kenar boşluğundaki sarı oku not edin. Parametre değerlerini İzleme penceresi aracılığıyla veya saklı yordamda parametre adının üzerine gelerek görüntüleyebilir ve düzenleyebilirsiniz.

Saklı Yordamın İlk Deyiminde Hata Ayıklayıcı Durduruldu

Şekil 2: Saklı Yordamın İlk Deyiminde Hata Ayıklayıcı Durduruldu (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Saklı yordamda bir kerede bir deyimde adım adım ilerleyebilmek için Araç Çubuğu'ndaki Adımla düğmesine tıklayın veya F10 tuşuna basın. Saklı Products_SelectByCategoryID yordam tek SELECT bir deyim içerir, bu nedenle F10'a basmak tek deyimin üzerine gelir ve saklı yordamın yürütülmesini tamamlar. Saklı yordam tamamlandıktan sonra çıktısı Çıkış penceresinde görünür ve hata ayıklayıcı sonlandırılır.

Not

T-SQL hata ayıklama deyimi düzeyinde gerçekleşir; deyimine SELECT adım atamazsınız.

2. Adım: Web Sitesini Uygulama Hata Ayıklama için Yapılandırma

Saklı yordamda doğrudan Sunucu Gezgini'nden hata ayıklamak kullanışlı olsa da, birçok senaryoda saklı yordamın ASP.NET uygulamamızdan çağrıldığında hata ayıklamayla daha çok ilgileniyoruz. Visual Studio'dan 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 ilerleyebiliriz.

Uygulamadan çağrılan saklı yordamlarda hata ayıklamaya başlamadan önce, ASP.NET web uygulamasına SQL Server hata ayıklayıcısıyla tümleştirilmesi talimatını vermemiz gerekir. başlangıç olarak Çözüm Gezgini ()ASPNET_Data_Tutorial_74_VB web sitesi adına sağ tıklayı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).

Uygulamanın Özellik Sayfalarında SQL Server Onay Kutusunu işaretleyin

Ş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ı dizesi güncelleştirmemiz gerekir. Bir veritabanına bağlantı kapatıldığında, buna karşılık gelen SqlConnection nesne kullanılabilir bağlantı havuzuna yerleştirilir. Veritabanına bağlantı kurarken, yeni bir bağlantı oluşturmak ve 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 yeniden kurulmadığından bağlantı havuzunu kapatmak istiyoruz.

Bağlantı havuzunu devre dışı bırakabilmek için, ayarını içermesi için 'ı Web.config güncelleştirin.NORTHWNDConnectionStringPooling=false

<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>

Not

ASP.NET uygulaması aracılığıyla SQL Server hata ayıklamayı tamamladıktan sonra, ayarı bağlantı dizesi kaldırarak Pooling (veya olarak ayarlayarak Pooling=true ) bağlantı havuzunu yeniden devreye eklediğinizden 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şlamak!

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'a 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.

Products_SelectByCategoryID Saklı Yordamında Kesme Noktası Ayarlama

Şekil 4: Saklı Yordamda Products_SelectByCategoryID Kesme Noktası Ayarlama (Tam boyutlu görüntüyü görüntülemek için tıklayın)

BIR SQL veritabanı nesnesinin bir istemci uygulaması aracılığıyla hata ayıklanması 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 NORTHWND.MDF düğüme sağ tıklayın. Bağlam menüsünde Uygulama Hata Ayıklama adlı işaretli bir menü öğesi bulunmalıdır.

Uygulama Hata Ayıklama Seçeneğinin Etkin olduğundan emin olun

Şekil 5: Uygulama Hata Ayıklama Seçeneğinin Etkinleştirildiğinden Emin Olun

Kesme noktası kümesi 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 oynatma 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_SelectByCategoryIDTürü Yazılan DataSet'in TableAdapers öğreticisi için Varolan 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ö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.

ExistingSprocs.aspx Sayfası Başlangıçta İçecekleri Görüntüler

Şekil 6: ExistingSprocs.aspx Sayfa Başlangıçta İçecekleri Görüntüler (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Saklı Yordamın Kesme Noktasına Ulaşıldı

Ş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öndermeye neden olur ve saklı yordamı yeniden yürütür Products_SelectByCategoryID . Kesme noktasına yeniden isabet edilir, ancak bu kez parametrenin @CategoryID değeri seçili açılan liste öğesinin CategoryIDdeğerini yansıtır.

Drop-Down Listesinden Farklı Bir Kategori Seçin

Şekil 8: Drop-Down Listesinden Farklı Bir Kategori Seçin (Tam boyutlu resmi görüntülemek için tıklayın)

<span class=@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)

Not

Sayfayı ziyaret ederken ExistingSprocs.aspx saklı yordamdaki Products_SelectByCategoryID kesme noktasına isabet edilmediyse, ASP.NET uygulamanın Özellikler Sayfasının Hata Ayıklayıcılar bölümünde SQL Server onay kutusunun işaretlendiğinden, bağlantı havuzunun devre dışı bırakıldıktan 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şı karşıya olduğumuz 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 nispeten 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 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, büyük olasılıkla iş istasyonunuzda oturum açtığınız Windows hesabı SQL Server'da geçerli bir oturum açma işlemi değildir. Belirli oturum açma hesabınızı SQL Server 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 adlı SQLDebug bir Windows hesabı olduğunu düşünün. Bu hesabın uzak SQL Server örneğine geçerli bir oturum açma bilgisi ve rolün sysadmin üyesi olarak eklenmesi gerekir. Ardından, Visual Studio'dan uzak SQL Server örneğinde hata ayıklamak için Kullanıcı olarak SQLDebug Visual Studio'yu çalıştırmamız gerekir. Bu işlem iş istasyonumuzun oturumunu kapatarak, yeniden olarak SQLDebugoturum 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 SQLDebug Visual Studio'yu başlatmak için kullanmaktırrunas.exe. runas.exe belirli bir uygulamanın farklı bir kullanıcı hesabı kisvesi altında yürütülmesini sağlar. Visual Studio'yu olarak SQLDebugbaş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şlemle ilgili daha ayrıntılı bir açıklama için bkz. William R. Vaughn'unHitchhiker's Guide to Visual Studio and SQL Server, Seventh Edition.

Not

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çmalısınız; ve (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şimi 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ğlamaya ek olarak, 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 nesne deyimlerinde adım adım ilerleyebilir ve parametre değerlerini görüntüleyebilir ve değiştirebilirsiniz. 1. Adım'da saklı yordama geçmek Products_SelectByCategoryID için bu yaklaşımı kullandık.

Uygulama hata ayıklama, kesme noktalarının doğrudan veritabanı nesneleri içinde ayarlanmasını sağlar. Kesme noktaları olan 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. Belirli bir veritabanı nesnesinin çağrılmaya neden olduğu uygulama eylemini daha net bir şekilde gösterdiği için uygulama hata ayıklama yararlıdır. Ancak, Doğrudan Veritabanı Hata Ayıklama'dan biraz daha fazla yapılandırma ve kurulum gerektirir.

Veritabanı nesneleri SQL Server Projeleri aracılığıyla da hata ayıklanabilir. 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ışmaktadır. Son kitabı Sams Teach Yourself ASP.NET 24 Hours 2.0'dır. Adresine adresinden veya adresinden ulaşabileceğiniz http://ScottOnWriting.NETblogu aracılığıyla ulaşabilirsinizmitchell@4GuysFromRolla.com.