Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
SQL Server menyediakan dukungan untuk penelusuran kesalahan objek Transact-SQL dan common language runtime (CLR) dalam database. Aspek utama penelusuran kesalahan di SQL Server adalah kemudahan penyiapan dan penggunaan, dan integrasi debugger SQL Server dengan debugger Microsoft Visual Studio. Selain itu, penelusuran kesalahan berfungsi di seluruh bahasa. Pengguna dapat melangkah dengan mulus ke objek CLR dari Transact-SQL, dan sebaliknya. Debugger Transact-SQL di SQL Server Management Studio tidak dapat digunakan untuk men-debug objek database terkelola, tetapi Anda dapat men-debug objek dengan menggunakan debugger di Visual Studio. Penelusuran kesalahan objek database terkelola di Visual Studio mendukung semua fitur penelusuran kesalahan umum, seperti pernyataan "langkah ke" dan "langkah di atas" dalam rutinitas yang dijalankan di server. Debugger dapat mengatur titik henti, memeriksa tumpukan panggilan, memeriksa variabel, dan mengubah nilai variabel saat penelusuran kesalahan. Perhatikan bahwa Visual Studio .NET 2003 tidak dapat digunakan untuk pemrograman atau penelusuran kesalahan integrasi CLR. SQL Server menyertakan .NET Framework yang telah diinstal sebelumnya, dan Visual Studio .NET 2003 tidak dapat menggunakan rakitan .NET Framework 2.0.
Untuk informasi selengkapnya tentang penelusuran kesalahan kode terkelola menggunakan Visual Studio, lihat topik "Debugging Managed Code" dalam dokumentasi Visual Studio.
Izin dan Pembatasan Debugging
Penelusuran kesalahan adalah operasi yang sangat istimewa, dan oleh karena itu hanya anggota peran server tetap sysadmin yang diizinkan untuk melakukannya di SQL Server.
Pembatasan berikut berlaku saat penelusuran kesalahan:
Debugging rutinitas CLR dibatasi untuk satu instans debugger pada satu waktu. Batasan ini berlaku karena semua eksekusi kode CLR membeku ketika titik henti dipukul dan eksekusi tidak berlanjut sampai debugger maju dari titik henti. Namun, Anda dapat melanjutkan penelusuran kesalahan Transact-SQL di koneksi lain. Meskipun Transact-SQL penelusuran kesalahan tidak membekukan eksekusi lain di server, itu dapat menyebabkan koneksi lain menunggu dengan menahan kunci.
Koneksi yang ada tidak dapat di-debug, hanya koneksi baru, karena SQL Server memerlukan informasi tentang klien dan lingkungan debugger sebelum koneksi dapat dibuat.
Karena pembatasan di atas, sebaiknya kode Transact-SQL dan CLR di-debug di server pengujian, dan bukan di server produksi.
Gambaran Umum Penelusuran Kesalahan Objek Database Terkelola
Penelusuran kesalahan di SQL Server mengikuti model per koneksi. Debugger dapat mendeteksi dan men-debug aktivitas hanya ke koneksi klien yang terpasang. Karena fungsionalitas debugger tidak dibatasi oleh jenis koneksi, koneksi aliran data tabular (TDS) dan HTTP dapat di-debug. Namun, SQL Server tidak mengizinkan penelusuran kesalahan koneksi yang ada. Penelusuran kesalahan mendukung semua fitur penelusuran kesalahan umum dalam rutinitas yang dijalankan di server. Interaksi antara debugger dan SQL Server terjadi melalui Model Objek Komponen terdistribusi (COM).
Untuk informasi dan skenario selengkapnya tentang penelusuran kesalahan prosedur tersimpan terkelola, fungsi, pemicu, jenis yang ditentukan pengguna, dan agregat, lihat topik "Penelusuran Kesalahan Database Integrasi CLR SQL Server" dalam dokumentasi Visual Studio.
Protokol jaringan TCP/IP harus diaktifkan pada instans SQL Server untuk menggunakan Visual Studio untuk pengembangan, penelusuran kesalahan, dan pengembangan jarak jauh. Untuk informasi selengkapnya tentang mengaktifkan protokol TCP/IP di server, lihat Mengonfigurasi Protokol Klien.
Untuk men-debug objek database terkelola
Buka Microsoft Visual Studio, buat proyek SQL Server baru, dan buat koneksi ke database pada instans SQL Server.
Buat jenis baru. Di Penjelajah Solusi, klik kanan proyek, pilih Tambahkan dan Item Baru... Dari jendela Tambahkan Item Baru , pilih Prosedur Tersimpan, FungsiUser-Defined, JenisUser-Defined, Pemicu, Agregat, atau Kelas. Tentukan nama untuk file sumber dari tipe baru dan klik Tambahkan.
Tambahkan kode untuk jenis baru ke editor teks. Untuk contoh kode untuk contoh prosedur tersimpan, lihat bagian nanti dalam topik ini.
Tambahkan skrip yang menguji jenisnya. Di Penjelajah Solusi, perluas direktori TestScripts klik dua kali Test.sql untuk membuka file sumber skrip pengujian default. Tambahkan skrip pengujian, yang memanggil kode yang akan di-debug, ke editor teks. Lihat di bawah ini untuk contoh skrip.
Tempatkan satu atau beberapa titik henti dalam kode sumber. Klik kanan pada baris kode di editor teks, dalam fungsi atau rutinitas yang ingin Anda debug, dan pilih Titik Henti dan Sisipkan Titik Henti. Titik henti ditambahkan, menyoroti baris kode berwarna merah.
Di menu Debug , pilih Mulai Penelusuran Kesalahan untuk mengkompilasi, menyebarkan, dan menguji proyek. Skrip pengujian di Test.sql akan dijalankan dan objek database terkelola akan dipanggil.
Saat panah kuning yang menunjuk penunjuk instruksi muncul pada jeda eksekusi kode titik henti dan Anda dapat mulai menelusuri kesalahan objek database terkelola Anda. Anda dapat Melangkahi dari menu Debug untuk memajukan penunjuk instruksi ke baris kode berikutnya. Jendela Lokal digunakan untuk mengamati status objek yang saat ini disorot oleh penunjuk instruksi. Variabel dapat ditambahkan ke jendela Watch . Status variabel yang diawasi dapat diamati di seluruh sesi debugging, tidak hanya ketika variabel berada di baris kode yang saat ini disorot oleh penunjuk instruksi. Pilih Lanjutkan dari menu Debug untuk memajukan penunjuk instruksi ke titik henti berikutnya atau untuk menyelesaikan eksekusi rutinitas jika tidak ada lagi titik henti.
Contoh
Contoh berikut mengembalikan versi SQL Server ke pemanggil.
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
Berikut ini adalah skrip pengujian yang memanggil prosedur tersimpan GetVersion yang ditentukan di atas.
EXEC GetVersion