clr veritabanı nesnelerini hata ayıklama
SQL Serverhata ayıklama için destek sağlayan Transact-SQLve ortak dil çalışma zamanı (clr) nesneleri veritabanında. Hata ayıklamayı önemli yönlerini SQL ServerKurulum ve kullanım kolaylığı ve Microsoft Visual Studio hata SQL Server hata ayıklayıcısı entegrasyonu. Ayrıca, inşaat, diller arasında hata ayıklama. Kullanıcılar adım sorunsuz clr nesneleri içine Transact-SQLve tersi. SQL Server Management Studio'yu Transact-sql hata ayıklayıcı yönetilen veritabanı nesnelerini hata ayıklamak için kullanılamaz, ancak kullanarak nesneleri hata ayıklamak Visual Studio ile debuggers. "Adım" gibi tüm ortak hata ayıklama özelliklerini Visual Studio destekler hata ayıklama veritabanına nesne yönetilen ve "üzerinden adım" deyimleri sunucuda yürütmeden rutinleri içinde. Hata ayıklayıcıları kesme noktası ayarlamak, çağrı yığını incelemek, değişkenleri incelemek ve hata ayıklama sırasında değişken değerlerini değiştirin. Not Bu Visual Studio.2003 net clr tümleştirme programlama veya hata ayıklama için kullanılamaz. SQL Serveriçerir.net Framework yüklü ve Visual Studio.net 2003 kullanamaz.net Framework 2.0 derlemeler.
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 ise son derece ayrıcalıklı bir işlem ve bu nedenle yalnızca üyeleri sysadmin sabit sunucu rolü içinde yapmak için izin verilen SQL Server.
Hata ayıklama sırasında aşağıdaki kısıtlamalar geçerlidir:
clr yordamları hata ayıklama bir anda bir hata ayıklayıcı örneği ile sınırlıdır. Çünkü tüm clr kod yürütülmesine bir kesme noktası vurmak ve hata ayıklayıcı kesme noktasından gelişmeler kadar yürütülmesine devam etmez donuyor bu sınırlama uygular. Ancak, hata ayıklama devam Transact-SQLdiğer bağlantıları'nda. Her ne kadar Transact-SQLhata ayıklama değil sunucu üzerindeki diğer infazlar, freeze kilit tutarak gözlemek diğer bağlantılar neden olabilir.
Varolan bağlantıları debugged, yalnızca yeni bağlantıları gibi olamaz SQL Serverbağlantısı yapılmadan önce istemci ve hata ayıklayıcı ortamı hakkında bilgi gerektirir.
Öneririz yukarıdaki kısıtlamalar nedeniyle, Transact-SQLve clr kodu ayıklanan bir test sunucusu ve bir üretim sunucusunda değil.
Genel hata ayıklama veritabanına nesneleri yönetilen
Hata ayıklamayı SQL Serverbir bağlantı modeli izler. Hata ayıklayıcı algılayabilir ve faaliyetleri yalnızca, bağlı olduğu istemci bağlantısı için hata ayıklama. Hata ayıklayıcı işlevselliği bağlantı türüne göre sınırlı değildir çünkü, sekmeli veri akışı (tds) ve http bağlantıları ayıklanırsa. Ancak, SQL Serverhata ayıklama varolan bağlantıları izin vermez. Hata ayıklama sunucuda yürütmeden rutinleri içinde tüm yaygın hata ayıklama özelliklerini destekler. Hata ayıklayıcı arasındaki etkileşim ve SQL ServerDağıtılmış Bileşen Nesne modeli (com) aracılığıyla olur.
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ı Debugging" Visual Studio belgelerinde konu.
TCP/IP ağ protokolü etkinleştirilmesi gerekir SQL ServerVisual Studio uzaktan geliştirme, hata ayıklama ve kalkınma için kullanmak için örneği. TCP/IP Protokolü sunucu etkinleştirme hakkında daha fazla bilgi için bkz: Configuring Client Network Protocols.
Yönetilen veritabanı nesnesi hata ayıklamak için
Açık Microsoft Visual Studio, yeni oluşturmak SQL ServerProje ve bir veritabanı örneği bağlantı kurmak SQL Server.
Yeni bir türü oluşturun. İçinde Solution Explorer, proje sağ tıklatın, Seç Ekle ve Yeni Item… Dan Add New Item pencere, seçme Saklı yordam, Kullanıcı tanımlı işlev, Kullanıcı tanımlı türü, tetikleyici, Toplam, veya sınıfı. Yeni tip kaynak dosyasının adını belirtir ve Ekle.
Kodu yeni türü için Metin Düzenleyicisi'ne ekleyin. Bir örnek saklı yordam için örnek kod için bu konunun ilerleyen bölümlerinde bölümüne bakın.
Türü sınayan komut dosyası ekleyin. İçinde Solution Explorer, genişletme TestScripts dizini çift tıklatın Test.sql varsayılan sınama komut dosyası kaynak dosyasını açın. Sınama komut dosyasını bir metin düzenleyici ayıklanırsa kodu çağıran ekleyin. Aşağıda örnek bir komut dosyası için bkz.
Bir veya daha fazla kesme, kaynak kodu yerleştirin. Bir metin düzenleyicisinde, içinde işlev veya yordam hata ayıklamak 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.
İçinde Debug Seç menüsünden Start Debugging komutunu derlemek, dağıtmak ve proje sınayın. Test.sql sınama komut çalıştırılır ve yönetilen veritabanı nesnelerini çağrılacak.
Kesme noktası kod yürütülmesine yönerge işaretçisini belirlenmesinden sarı bir ok göründüğünde duraklar ve yönetilen veritabanı nesne hata ayıklama başlayabilirsiniz. Sen-ebilmek Step Over dan Debug yönerge işaretçisini bir sonraki satıra kodunun ilerlemek için menü. Halk pencere şu anda yönerge işaretçisini tarafından vurgulanan nesnelerin durumunu izlemek için kullanılır. Değişkenleri eklenebilir İzle pencere. İzlenen değişkenleri devlet, tüm hata ayıklama oturumu, değişken şu anda yönerge işaretçisi tarafından vurgulanan kod satırı olduğunda değil boyunca görülebilmektedir. Devam Eğer var hayır daha fazla kesme sonraki kesme veya rutin tam olarak yürütülmesini yönerge işaretçisini ilerlemek için Debug menüsünden seçin.
Örnek
Aşağıdaki örnek SQL Serversürüm çağırana.
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);
}
}
}
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
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
Aşağıdaki saklı yordam yukarıda tanımlanan GetVersion çağırır sınama yazısıdır.
EXEC GetVersion
EXEC GetVersion
Ayrıca bkz.
Diğer Kaynaklar
Ortak dil çalışma zamanı (clr) tümleştirme programlama kavramları