Aracılığıyla paylaş


Veritabanı nesnelerini clr hata ayıklama

SQL Serverhata ayıklama için destek sağlayan Transact-SQL ve ortak dil çalışma zamanı (clr) nesneleri veritabanı.Hata ayıklamayı ait anahtar noktaları SQL Server olan Kurulum ve kullanım kolaylığı ve sql Server hata ayıklayıcısının ile tümleştirmeMicrosoft Visual Studio debugger. Üstelik, works diller arasında hata ayıklama.Kullanıcılar adım sorunsuz clr nesneleri içine Transact-SQLve tam tersi. sql Server Management Studio'da sql Server Transact-sql hata ayıklayıcı, yönetilen veritabanı nesnelerini hata ayıklamak için kullanılamaz, ancak nesneleri kullanarak hata Visual Studio. debuggersVisual Studio destekler tüm yaygın hata ayıklama özellikleri, "adım atın" gibi hata ayıklama veritabanına nesne yönetilen. ve "üzerinde adım" deyimleri içinde sunucuda çalıştırma yordamları.Hata ayıklayıcıları olabilir küme kesme noktaları, çağrı yığını incelemek, değişkenleri incelemek ve hata ayıklama sırasında değişken değerlerini değiştirin.Note that Visual Studio .NET 2003 cannot be used for CLR integration programming or debugging.SQL Server includes the .NET Framework pre-installed, and Visual Studio .NET 2003 cannot use the .NET Framework 2.0 assemblies.

Visual Studio kullanarak yönetilen kod hata ayıklama hakkında daha fazla bilgi için bkz: "Yönetilen kod hata ayıklama" Visual Studio belgelerinde konu.

Hata ayıklama izinleri ve kısıtlamaları

Hata ayıklama, son derece ayrıcalıklı bir işlem ve bu nedenle yalnızca üyeleri sysadmin sabit sunucu rolü Bunu yapmak için izin verilen SQL Server.

Hata ayıklama çalışırken aşağıdaki kısıtlamalar geçerlidir:

  • clr yordamları hata ayıklama sırasında bir hata ayıklayıcı örneği için kısıtlı bir saat.Bu kısıtlama, tüm clr kod yürütülmesine bir kesme noktası isabet ve hata ayıklayıcı kesme noktasından ilerletir kadar yürütülmesine devam donuyor için geçerlidir.Ancak, hata ayıklama devam Transact-SQL diğer bağlantıları.Ancak Transact-SQL hata ayıklama değil dondurma sunucudaki diğer yürütmeler, diğer bağlantılar bekleyin basılı tutarak nedenkilit.

  • Varolan bağlantılar olarak hata ayıklaması yapılmış, yalnızca yeni bağlantıları olamaz SQL Server bağlantısı yapılmadan önce istemci ve hata ayıklayıcı ortamı hakkında bilgi gerektirir.

Yukarıdaki sınırlamaları nedeniyle, öneririz Transact-SQL ve clr kodu ayıklanırsa, bir sınama sunucusunda ve üzerinde bir üretim sunucusu.

Hata ayıklama genel bakış yönetilen veritabanı nesnelerini

Hata ayıklamayı SQL Server izleyen bir bağlantı modeli.Bir hata ayıklayıcısı kullanabilirsiniz algılamak ve faaliyetleri, bağlı istemci bağlantısı için hata ayıklama.Hata ayıklama hata ayıklayıcı işlevselliğini bağlantı türüne göre sınırlı olması nedeniyle, tablo verisi akışı (tds) hem http bağlantıları işlemi.Ancak, SQL Server izin vermez hata ayıklama varolan bağlantıları.Hata ayıklama ortak tüm hata ayıklama özellikleri içinde sunucuda çalıştırma yordamları destekler.Bir hata ayıklayıcı arasındaki etkileşim ve SQL Server Dağıtılmış Bileşen Nesne Modeli (com) aracılığıyla olmuyor.

Daha fazla bilgi ve yönetilen saklı yordamları, işlevleri, tetikleyiciler, kullanıcı tanımlı türler ve toplamları hata ayıklama hakkında senaryolar için bkz: "sql Server clr tümleştirme veritabanı hata" Visual Studio belgelerinde konu.

TCP/IP ağ protokol üzerinde etkinleştirilmiş olması gerekir SQL Server örnek için Uzak geliştirme, hata ayıklama ve geliştirme için Visual Studio kullanmaEtkinleştirme hakkında daha fazla bilgi için protokol sunucu üzerinde görmek İstemci ağ iletişim kurallarını yapılandırma.

Yönetilen veritabanı nesnesi hata ayıklamak için

  1. Microsoft Visual Studio açma, yeni bir SQL Server tasarlanması ve üzerinde bir veritabanına bağlantı kurmak bir örnek , SQL Server.

  2. Yeni bir türü oluşturun.De Solution Explorer, proje sağ tıklatın, seçmek Ekle ve New Item... seçeneğini Dan Add New Item pencere, seçme Saklı yordam, Programmability işlevi, Programmability türü, Tetikleyici, toplam, veya sınıfı.Yeni tür kaynak dosyası için bir ad belirleyin ve tıklatın Ekle.

  3. Metin Düzenleyicisi'ne yeni türünün kodunu ekleyin.Örnek saklı yordam için örnek kod için bu konunun ilerleyen bölümlerindeki bölümüne bakın.

  4. Tür sınayan komut dosyası ekleyin.De Solution Explorer, genişletme TestScripts dizini çift Test.sql varsayılan sınama komut dosyası kaynak dosyasını açmak için.Sınama komut dosyası, bir metin düzenleyicisi ayıklanacak kodlarını ekleyin.Aşağıdaki örnek komut dosyaları için konusuna bakın.

  5. Bir veya daha fazla kesme noktaları kaynak kodunda yerleştirin.Bir metin düzenleyicisinde, işlev veya yordam hata ayıklamak için istediğiniz kod satırını sağ tıklatın ve seçin kesme ve Kesme noktası ekleme.Kırmızı kod satırı vurgulama kesme noktası eklenir.

  6. De Debug Seç menüsünden Start Debugging komutunu derlemek, dağıtmak ve projeyi test.Test.sql sınama komut dosyası çalıştırma ve yönetilen veritabanı nesnesini çağrılacak.

  7. Kesme noktası kod yürütülmesine belirleme yönerge işaretçisini sarı ok göründüğünde duraklatır ve yönetilen veritabanı nesneniz hata ayıklama başlayabilirsiniz.Yapabilirsiniz Step Over dan Debug yönerge işaretçisi kodu bir sonraki satıra geçmek için menü.The Locals window is used to observe the state of the objects currently highlighted by the instruction pointer.Değişkenleri eklenebilir İzle pencere.İzlenen değişkenlerin durumunu tüm hata ayıklama oturum yalnızca değişken kod satırı, şu anda yönerge işaretçisi vurgulanmış olduğunda değil boyunca tutulması.Devam hiçbir daha fazla kesme noktalarý varsa yönerge işaretçisi sonraki kesme noktası veya yordam tam olarak yürütülmesini ilerlemek için Debug menüsünden seçin.

Örnek

Aşağıdaki örnek verir SQL Server sürüm için arayan.

C#

using System;
using System.Data;
using System.Data.SqlTypes;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server; 

public class StoredProcedures 
{
   [Microsoft.SqlServer.Server.SqlProcedure]
   public static void GetVersion()
   {
   using(SqlConnection connection = new SqlConnection("context connection=true")) 
   {
      connection.Open();
      SqlCommand command = new SqlCommand("select @@version",
                                           connection);
      SqlContext.Pipe.ExecuteAndSend(command);
      }
   }
}

Visual Basic

Imports System
Imports System.Data
Imports System.Data.Sql
Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server
Imports System.Data.SqlClient

Partial Public Class StoredProcedures 
    <Microsoft.SqlServer.Server.SqlProcedure> _
    Public Shared Sub GetVersion()
        Using connection As New SqlConnection("context connection=true")
            connection.Open()
            Dim command As New SqlCommand("SELECT @@VERSION", connection)
            SqlContext.Pipe.ExecuteAndSend(command)
        End Using
    End Sub
End Class

Saklı yordam yukarıda tanımlanan GetVersion çağırır sınama komut dosyası aşağıdadır.

EXEC GetVersion