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.
oleh Scott Mitchell
Edisi Visual Studio Professional dan Team System memungkinkan Anda mengatur titik henti dan menelusuri prosedur tersimpan dalam SQL Server, membuat debugging prosedur tersimpan semudah men-debug kode aplikasi. Tutorial ini menunjukkan penelusuran kesalahan database langsung dan penelusuran kesalahan aplikasi prosedur tersimpan.
Pendahuluan
Visual Studio memberikan pengalaman debugging yang mendalam. Dengan beberapa penekanan tombol atau klik mouse, dimungkinkan untuk menggunakan titik henti untuk menghentikan eksekusi program dan memeriksa status dan alur kontrolnya. Selain debugging kode aplikasi, Visual Studio menawarkan dukungan untuk debugging prosedur tersimpan dari dalam SQL Server. Sama seperti titik henti dapat diatur dalam kelas kode-behind ASP.NET atau kelas Lapisan Logika Bisnis, begitu pula dapat ditempatkan dalam prosedur tersimpan.
Dalam tutorial ini, kita akan melihat cara memasuki prosedur tersimpan di dalam Server Explorer pada Visual Studio serta cara mengatur titik henti yang dijalankan ketika prosedur tersimpan dipanggil dari aplikasi ASP.NET yang sedang berjalan.
Nota
Sayangnya, prosedur tersimpan hanya dapat dijalankan langkah demi langkah dan di-debug melalui Visual Studio edisi Professional dan Team Systems. Jika Anda menggunakan Visual Web Developer atau versi standar Visual Studio, Anda dipersilakan untuk membaca bersama saat kami menelusuri langkah-langkah yang diperlukan untuk men-debug prosedur tersimpan, tetapi Anda tidak akan dapat mereplikasi langkah-langkah ini di komputer Anda.
Konsep Penelusuran Kesalahan SQL Server
Microsoft SQL Server 2005 dirancang untuk menyediakan integrasi dengan Common Language Runtime (CLR), yang merupakan runtime yang digunakan oleh semua rakitan .NET. Akibatnya, SQL Server 2005 mendukung objek database terkelola. Artinya, Anda dapat membuat objek database seperti prosedur tersimpan dan Fungsi User-Defined (UDF) sebagai metode dalam kelas C#. Ini memungkinkan prosedur tersimpan dan UDF ini untuk menggunakan fungsionalitas dalam .NET Framework dan dari kelas kustom Anda sendiri. Tentu saja, SQL Server 2005 juga menyediakan dukungan untuk objek database T-SQL.
SQL Server 2005 menawarkan dukungan debugging untuk T-SQL dan objek database terkelola. Namun, objek ini hanya dapat di-debug melalui edisi Visual Studio 2005 Professional dan Team Systems. Dalam tutorial ini kita akan memeriksa debugging objek database T-SQL. Tutorial berikutnya membahas debugging objek basis data yang terkelola.
Enti blog "Gambaran Umum T-SQL dan Debugging CLR di SQL Server 2005" dari tim Integrasi CLR SQL Server 2005 menyoroti tiga cara untuk melakukan debugging objek SQL Server 2005 melalui Visual Studio.
- Debugging Database Langsung (DDD) - dari Server Explorer kita dapat melangkah ke objek database T-SQL apa pun, seperti prosedur tersimpan dan UDF. Kami akan memeriksa DDD di Langkah 1.
- Penelusuran Kesalahan Aplikasi - kita dapat mengatur titik henti dalam objek database dan kemudian menjalankan aplikasi ASP.NET kita. Ketika objek database dijalankan, titik henti akan aktif dan pengendalian akan diserahkan ke debugger. Perhatikan bahwa dengan penelusuran kesalahan aplikasi, kami tidak dapat melangkah ke objek database melalui kode aplikasi. Kita harus secara eksplisit mengatur titik henti dalam prosedur tersimpan atau UDF di mana kita ingin debugger berhenti. Debugging aplikasi diperiksa dimulai di langkah 2.
- Penelusuran kesalahan dari Proyek SQL Server - Visual Studio Professional dan edisi Sistem Tim menyertakan jenis Proyek SQL Server yang umumnya digunakan untuk membuat objek database terkelola. Kami akan memeriksa menggunakan Proyek SQL Server dan men-debug kontennya dalam tutorial berikutnya.
Visual Studio dapat men-debug prosedur tersimpan pada instans SQL Server lokal dan jarak jauh. Instans SQL Server lokal adalah instans yang diinstal pada komputer yang sama dengan Visual Studio. Jika database SQL Server yang Anda gunakan tidak terletak di komputer pengembangan Anda, maka database tersebut dianggap sebagai instans jarak jauh. Untuk tutorial ini, kami telah menggunakan instans SQL Server lokal. Penelusuran kesalahan prosedur tersimpan pada instans server SQL jarak jauh memerlukan lebih banyak langkah konfigurasi daripada saat menelusuri kesalahan prosedur tersimpan pada instans lokal.
Jika Anda menggunakan instans SQL Server lokal, Anda dapat memulai dengan Langkah 1 dan bekerja melalui tutorial ini hingga akhir. Namun, jika Anda menggunakan instans SQL Server jarak jauh, Anda harus terlebih dahulu memastikan bahwa saat debugging, Anda masuk ke komputer pengembangan Anda dengan menggunakan akun pengguna Windows yang memiliki login SQL Server pada instans jarak jauh. Selain itu, login database ini dan login database yang digunakan untuk menyambungkan ke database dari aplikasi ASP.NET yang aktif harus menjadi anggota role sysadmin
. Lihat bagian Debugging Objek Database T-SQL di Instans Jarak Jauh di akhir tutorial ini untuk informasi selengkapnya tentang mengonfigurasi Visual Studio dan SQL Server untuk men-debug instans jarak jauh.
Terakhir, pahami bahwa dukungan debugging untuk objek database T-SQL tidak kaya fitur seperti dukungan debugging untuk aplikasi .NET. Misalnya, kondisi titik henti dan filter tidak didukung, hanya sebagian dari jendela pemecahan masalah yang tersedia, Anda tidak dapat menggunakan fitur Edit dan Lanjutkan, jendela Segera menjadi tidak berguna, dan sebagainya. Lihat Batasan Perintah dan Fitur Debugger untuk informasi selengkapnya.
Langkah 1: Langsung Masuk ke Prosedur Tersimpan
Visual Studio memudahkan untuk men-debug objek database secara langsung. Mari kita lihat bagaimana menggunakan fitur Debugging Database Langsung (DDD) untuk masuk ke prosedur tersimpan Products_SelectByCategoryID
yang ada di database Northwind. Seperti namanya, Products_SelectByCategoryID
mengembalikan informasi produk untuk kategori tertentu; itu dibuat dalam tutorial Menggunakan Prosedur Tersimpan yang Ada untuk TableAdapters. Mulailah dengan masuk ke Server Explorer dan perluas simpul database Northwind. Selanjutnya, buka folder Prosedur Tersimpan, klik kanan pada prosedur tersimpan Products_SelectByCategoryID
, dan pilih Langkah Ke Dalam Prosedur Tersimpan dari menu konteks. Ini akan memulai debugger.
Karena prosedur tersimpan Products_SelectByCategoryID
mengharapkan parameter input @CategoryID
, kami diminta untuk memberikan nilai ini. Masukkan 1, yang akan mengembalikan informasi tentang minuman.
@CategoryID Parameter" />
Gambar 1: Gunakan Nilai 1 untuk @CategoryID
Parameter
Setelah menyediakan nilai untuk @CategoryID
parameter, prosedur tersimpan dijalankan. Alih-alih menyelesaikan proses, debugger menghentikan eksekusi pada pernyataan pertama. Perhatikan panah kuning di margin, menunjukkan lokasi saat ini dalam prosedur tersimpan. Anda dapat melihat dan mengedit nilai parameter melalui jendela Watch atau dengan mengarahkan mouse ke atas nama parameter dalam prosedur tersimpan.
Gambar 2: Debugger terhenti pada Pernyataan Pertama Prosedur Tersimpan (Klik untuk melihat gambar dalam ukuran penuh)
Untuk menelusuri prosedur tersimpan satu pernyataan setiap kali, klik tombol Langkah Lewat di Toolbar atau tekan tombol F10. Prosedur Products_SelectByCategoryID
tersimpan berisi satu SELECT
pernyataan, jadi menekan F10 akan Melangkah atas pernyataan tunggal dan menyelesaikan eksekusi prosedur tersimpan. Setelah prosedur tersimpan selesai, outputnya akan muncul di jendela Output dan debugger akan berakhir.
Nota
Penelusuran kesalahan T-SQL terjadi pada tingkat pernyataan; Anda tidak dapat melangkah ke dalam sebuah SELECT
pernyataan.
Langkah 2: Mengonfigurasi Situs Web untuk Penelusuran Kesalahan Aplikasi
Meskipun men-debug prosedur tersimpan langsung dari Server Explorer berguna, dalam banyak skenario kami lebih tertarik untuk men-debug prosedur tersimpan ketika dipanggil dari aplikasi ASP.NET kami. Kita dapat menambahkan titik henti ke prosedur tersimpan dari dalam Visual Studio lalu mulai men-debug aplikasi ASP.NET. Ketika prosedur tersimpan dengan titik henti dipanggil dari aplikasi, eksekusi akan berhenti pada titik henti dan kita dapat melihat dan mengubah nilai parameter prosedur tersimpan dan menelusuri pernyataannya, seperti yang kami lakukan di Langkah 1.
Sebelum kita dapat mulai men-debug prosedur tersimpan yang dipanggil dari aplikasi, kita perlu menginstruksikan aplikasi web ASP.NET untuk berintegrasi dengan debugger SQL Server. Mulailah dengan mengklik kanan pada nama situs web di Penjelajah Solusi (ASPNET_Data_Tutorial_74_CS
). Pilih opsi Halaman Properti dari menu konteks, pilih item Opsi Mulai di sebelah kiri, dan centang kotak centang SQL Server di bagian Debugger (lihat Gambar 3).
Gambar 3: Periksa Kotak Centang SQL Server di Halaman Properti Aplikasi (Klik untuk melihat gambar ukuran penuh)
Selain itu, kita perlu memperbarui string koneksi database yang digunakan oleh aplikasi sehingga pengumpulan koneksi dinonaktifkan. Saat koneksi ke database ditutup, objek terkait SqlConnection
ditempatkan di kumpulan koneksi yang tersedia. Saat membuat koneksi ke database, objek koneksi yang tersedia dapat diambil dari kumpulan ini daripada harus membuat dan membuat koneksi baru. Pengumpulan objek koneksi ini adalah peningkatan performa dan diaktifkan secara default. Namun, saat melakukan debug, kami ingin menonaktifkan peminggiran koneksi karena infrastruktur debugging tidak diperbaiki ulang dengan benar saat bekerja dengan koneksi yang diambil dari kumpulan.
Untuk menonaktifkan pembagian koneksi, perbarui NORTHWNDConnectionString
di dalam Web.config
sehingga menyertakan pengaturan Pooling=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>
Nota
Setelah Anda selesai men-debug SQL Server melalui aplikasi ASP.NET pastikan untuk memulihkan kumpulan koneksi dengan menghapus Pooling
pengaturan dari string koneksi (atau dengan mengaturnya ke Pooling=true
).
Pada titik ini aplikasi ASP.NET telah dikonfigurasi untuk memungkinkan Visual Studio men-debug objek database SQL Server saat dipanggil melalui aplikasi web. Yang tersisa sekarang adalah menambahkan titik putus ke prosedur yang disimpan dan mulai debug!
Langkah 3: Menambahkan Titik Henti dan Mendebug
Products_SelectByCategoryID
Buka prosedur tersimpan dan atur titik henti di awal SELECT
pernyataan dengan mengklik margin di tempat yang sesuai atau dengan menempatkan kursor Anda di awal SELECT
pernyataan dan menekan F9. Seperti yang diilustrasikan Gambar 4, titik henti muncul sebagai lingkaran merah di margin.
Gambar 4: Atur Titik Henti dalam Prosedur Tersimpan Products_SelectByCategoryID
(Klik untuk melihat gambar ukuran penuh)
Agar objek database SQL di-debug melalui aplikasi klien, sangat penting bahwa database dikonfigurasi untuk mendukung penelusuran kesalahan aplikasi. Ketika Anda pertama kali mengatur titik henti, pengaturan ini akan secara otomatis diaktifkan, tetapi bijaksana untuk memeriksa kembali. Klik kanan pada simpul NORTHWND.MDF
di Penjelajah Server. Menu konteks harus menyertakan item menu yang dicentang bernama Penelusuran Kesalahan Aplikasi .
Gambar 5: Pastikan bahwa Opsi Penelusuran Kesalahan Aplikasi Diaktifkan
Dengan titik henti telah diatur dan opsi Penelusuran Kesalahan Aplikasi diaktifkan, kami siap untuk melakukan debugging pada prosedur yang disimpan saat dipanggil dari aplikasi ASP.NET. Mulai debugger dengan masuk ke menu Debug dan pilih Mulai Debugging, dengan menekan F5, atau dengan mengklik ikon putar hijau di Toolbar. Ini akan memulai debugger dan meluncurkan situs web.
Prosedur Products_SelectByCategoryID
tersimpan dibuat dalam tutorial Menggunakan Prosedur Tersimpan yang Ada untuk TableAdapters Himpunan Data Yang Ditik . Halaman web yang sesuai (~/AdvancedDAL/ExistingSprocs.aspx
) berisi GridView yang menampilkan hasil yang dikembalikan oleh prosedur tersimpan ini. Kunjungi halaman ini melalui browser. Setelah mencapai halaman, titik henti dalam prosedur tersimpan Products_SelectByCategoryID
akan dipicu dan kontrol akan kembali ke Visual Studio. Sama seperti di Langkah 1, Anda dapat menelusuri pernyataan prosedur tersimpan dan melihat dan memodifikasi nilai parameter.
Gambar 6: ExistingSprocs.aspx
Halaman Awalnya Menampilkan Minuman (Klik untuk melihat gambar ukuran penuh)
Gambar 7: Titik Henti Prosedur Tersimpan telah Tercapai (Klik untuk melihat gambar ukuran penuh)
Seperti yang ditunjukkan oleh jendela Watch di Gambar 7, nilai @CategoryID
parameter adalah 1. Ini karena ExistingSprocs.aspx
halaman awalnya menampilkan produk dalam kategori minuman, yang memiliki CategoryID
nilai 1. Pilih kategori yang berbeda dari daftar drop-down. Melakukan hal tersebut menyebabkan postback (pengiriman ulang ke server) dan mengeksekusi ulang prosedur tersimpan Products_SelectByCategoryID
. Titik henti ditemui lagi, tetapi kali @CategoryID
ini nilai parameter s mencerminkan item daftar drop-down yang dipilih s CategoryID
.
Gambar 8: Pilih Kategori Yang Berbeda dari Daftar Drop-Down (Klik untuk melihat gambar ukuran penuh)
Parameter @CategoryID Mencerminkan Kategori Yang Dipilih dari Halaman Web" />
Gambar 9: @CategoryID
Parameter Mencerminkan Kategori Yang Dipilih dari Halaman Web (Klik untuk melihat gambar ukuran penuh)
Nota
Jika breakpoint dalam prosedur tersimpan Products_SelectByCategoryID
tidak aktif ketika mengunjungi halaman ExistingSprocs.aspx
, pastikan kotak centang SQL Server telah dicentang di bagian Debugger dari Halaman Properti aplikasi ASP.NET, kumpulan koneksi dinonaktifkan, dan opsi Debugging Aplikasi database diaktifkan. Jika Anda masih mengalami masalah, mulai ulang Visual Studio dan coba lagi.
Men-debug Objek Database T-SQL pada Instans Jarak Jauh
Melakukan debugging objek database melalui Visual Studio cukup mudah ketika instans database SQL Server berada di komputer yang sama dengan Visual Studio. Namun, jika SQL Server dan Visual Studio berada di komputer yang berbeda, beberapa konfigurasi yang cermat diperlukan untuk membuat semuanya berfungsi dengan baik. Ada dua tugas inti yang kita hadapi:
- Pastikan bahwa login yang digunakan untuk menyambungkan ke database melalui ADO.NET termasuk dalam peran
sysadmin
. - Pastikan bahwa akun pengguna Windows yang digunakan oleh Visual Studio pada komputer pengembangan adalah akun masuk SQL Server yang valid milik peran tersebut
sysadmin
.
Langkah pertama relatif mudah. Pertama, identifikasi akun pengguna yang digunakan untuk menyambungkan ke database dari aplikasi ASP.NET lalu, dari SQL Server Management Studio, tambahkan akun login tersebut ke peran tersebut sysadmin
.
Tugas kedua mengharuskan akun pengguna Windows yang Anda gunakan untuk men-debug aplikasi menjadi login yang valid pada database jarak jauh. Namun, kemungkinan adalah akun Windows yang Anda masuk ke stasiun kerja Anda bukan login yang valid di SQL Server. Daripada menambahkan akun masuk khusus Anda ke SQL Server, pilihan yang lebih baik adalah menunjuk beberapa akun pengguna Windows sebagai akun penelusuran kesalahan SQL Server. Kemudian, untuk men-debug objek database instans SQL Server jarak jauh, Anda akan menjalankan Visual Studio menggunakan kredensial akun masuk Windows tersebut.
Contohnya akan membantu mengklarifikasi hal-hal. Bayangkan bahwa ada akun Windows bernama SQLDebug
dalam domain Windows. Akun ini perlu ditambahkan ke instans SQL Server jarak jauh sebagai login yang valid dan sebagai anggota sysadmin
peran. Kemudian, untuk men-debug instans SQL Server jarak jauh dari Visual Studio, kita perlu menjalankan Visual Studio sebagai SQLDebug
pengguna. Ini dapat dilakukan dengan keluar dari stasiun kerja kami, masuk kembali sebagai SQLDebug
, dan kemudian meluncurkan Visual Studio, tetapi pendekatan yang lebih sederhana adalah masuk ke stasiun kerja kami menggunakan kredensial kami sendiri dan kemudian menggunakan runas.exe
untuk meluncurkan Visual Studio sebagai SQLDebug
pengguna.
runas.exe
memungkinkan aplikasi tertentu dijalankan dengan kedok akun pengguna yang berbeda. Untuk meluncurkan Visual Studio sebagai SQLDebug
, Anda dapat memasukkan pernyataan berikut di baris perintah:
runas.exe /user:SQLDebug "%PROGRAMFILES%\Microsoft Visual Studio 8\Common7\IDE\devenv.exe"
Untuk penjelasan lebih rinci tentang proses ini, lihat Panduan Hitchhiker William R. Vaughnuntuk Visual Studio dan SQL Server, Edisi Ketujuh.
Nota
Jika komputer pengembangan Anda menjalankan Windows XP Service Pack 2, Anda harus mengonfigurasi Firewall Sambungan Internet untuk mengizinkan debugging jarak jauh. Artikel Cara: Mengaktifkan Penelusuran Kesalahan SQL Server 2005 mencatat bahwa ini melibatkan dua langkah: (a) Pada komputer host Visual Studio, Anda harus menambahkan Devenv.exe
ke daftar Pengecualian dan membuka port TCP 135; dan (b) Pada komputer jarak jauh (SQL), Anda harus membuka port TCP 135 dan menambahkan sqlservr.exe
ke daftar Pengecualian. Jika kebijakan domain Anda mengharuskan komunikasi jaringan dilakukan melalui IPSec, Anda harus membuka port UDP 4500 dan UDP 500.
Ringkasan
Selain menyediakan dukungan debugging untuk kode aplikasi .NET, Visual Studio juga menyediakan berbagai opsi penelusuran kesalahan untuk SQL Server 2005. Dalam tutorial ini, kita melihat dua opsi berikut: Debugging Database Langsung dan debugging aplikasi. Untuk langsung men-debug objek database T-SQL, temukan objek melalui Server Explorer lalu klik kanan dan pilih Langkah Ke Dalam. Ini memulai debugger dan menghentikan pernyataan pertama dalam objek database, di mana Anda dapat menelusuri pernyataan objek dan melihat dan memodifikasi nilai parameter. Pada Langkah 1 kami menggunakan pendekatan ini untuk memasuki prosedur tersimpan Products_SelectByCategoryID
.
Debugging aplikasi memungkinkan menetapkan breakpoint secara langsung dalam objek database. Ketika objek database dengan titik henti dipanggil dari aplikasi klien (seperti aplikasi web ASP.NET), program berhenti saat debugger mengambil alih. Penelusuran kesalahan aplikasi berguna karena lebih jelas menunjukkan tindakan aplikasi apa yang menyebabkan objek database tertentu dipanggil. Namun, ini membutuhkan sedikit lebih banyak konfigurasi dan penyiapan daripada Debugging Database Langsung.
Objek database juga dapat di-debug melalui Proyek SQL Server. Kita akan melihat menggunakan Proyek SQL Server dan cara menggunakannya untuk membuat dan men-debug objek database terkelola dalam tutorial berikutnya.
Selamat Pemrograman!
Tentang Penulis
Scott Mitchell, penulis tujuh buku ASP/ASP.NET dan pendiri 4GuysFromRolla.com, telah bekerja sama dengan teknologi Microsoft Web sejak 1998. Scott bekerja sebagai konsultan, pelatih, dan penulis independen. Buku terbarunya adalah Sams Teach Yourself ASP.NET 2.0 dalam 24 Jam. Dia dapat dijangkau di mitchell@4GuysFromRolla.com.