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.
Berlaku untuk:SQL Server
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 menelusuri ke dalam dan melewati pernyataan dalam rutinitas yang dijalankan di server. Debugger dapat mengatur titik henti, memeriksa tumpukan panggilan, memeriksa variabel, dan mengubah nilai variabel saat penelusuran kesalahan.
Izin dan pembatasan debug
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 tercapai, dan eksekusi tidak berlanjut sampai debugger melanjutkan dari titik henti. Namun, Anda dapat melanjutkan penelusuran kesalahan Transact-SQL di koneksi lain. Meskipun debugging Transact-SQL 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.
Oleh karena itu, kami menyarankan agar kode Transact-SQL dan CLR di-debug pada server pengujian, dan bukan di server produksi.
Gambaran Umum
Penelusuran kesalahan di SQL Server mengikuti model per koneksi. Debugger hanya dapat mendeteksi dan men-debug aktivitas pada koneksi klien yang dilampirkan. Karena fungsionalitas debugger tidak dibatasi oleh jenis koneksi, koneksi aliran data tabular (TDS) dan HTTP dapat di-debug. Namun, SQL Server tidak mengizinkan debug koneksi aktif. 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 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.
Langkah-langkah debug
Gunakan langkah-langkah berikut untuk men-debug objek database CLR di Microsoft Visual Studio:
Buka Microsoft Visual Studio, dan buat proyek SQL Server baru. Anda dapat menggunakan instans SQL LocalDB yang dilengkapi dengan Visual Studio.
Buat jenis SQL CLR baru (C#):
- Di Penjelajah Solusi, klik kanan proyek, dan pilih Tambahkan, Item Baru....
- Dari jendela Tambahkan Item Baru, pilih Prosedur Tersimpan SQL CLR C#, Fungsi Yang Ditentukan Pengguna SQL CLR C#, Jenis yang Ditentukan Pengguna, Pemicu SQL CLR C#, Agregat C# SQL CLR, atau Kelas.
- Tentukan nama untuk file sumber dari jenis baru, lalu pilih Tambahkan.
Tambahkan kode untuk jenis baru ke editor teks. Untuk contoh kode untuk contoh prosedur tersimpan, lihat bagian Contoh berikut di artikel ini.
Tambahkan skrip yang menguji jenis:
- Di Penjelajah Solusi, klik kanan pada simpul proyek dan pilih Tambahkan, Skrip....
- Di jendela Tambahkan Item Baru, pilih Skrip (Tidak dalam build), dan tentukan nama, seperti
Test.sql. Pilih tombol Tambahkan. - Di Penjelajah Solusi, klik dua kali simpul
Test.sqluntuk membuka file sumber skrip pengujian default. - Tambahkan skrip pengujian (yang memanggil kode yang akan di-debug) ke editor teks. Lihat contoh di bagian berikutnya untuk contoh skrip.
Tempatkan satu atau beberapa titik henti dalam kode sumber. Klik kanan pada baris kode di editor teks pada fungsi atau rutinitas yang ingin Anda debug. Pilih Titik Henti, 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.sqldijalankan, dan objek database terkelola dipanggil.Saat panah kuning (menunjuk penunjuk instruksi) muncul di titik henti, eksekusi kode akan dijeda. Anda kemudian dapat men-debug objek database terkelola Anda:
- Gunakan Langkah Di Atas dari menu Debug untuk memajukan penunjuk instruksi ke baris kode berikutnya.
- Gunakan jendela Lokal untuk mengamati status objek yang saat ini disorot oleh penunjuk instruksi.
- Tambahkan variabel ke jendela Watch . Anda dapat mengamati status variabel yang diawasi di seluruh sesi debugging, bahkan ketika variabel tidak 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 kode
Contoh C# berikut mengembalikan versi SQL Server ke pemanggil.
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
public class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void GetVersion()
{
using (var connection = new SqlConnection("context connection=true"))
{
connection.Open();
var command = new SqlCommand("select @@version", connection);
SqlContext.Pipe.ExecuteAndSend(command);
}
}
}
Contoh skrip pengujian
Skrip pengujian berikut menunjukkan cara memanggil prosedur tersimpan yang GetVersion ditentukan dalam contoh sebelumnya.
EXECUTE GetVersion;
Konten terkait
- Penelusuran Kesalahan Kode Terkelola
- konsep pemrograman integrasi Common language runtime (CLR)