Bagaimana cara melihat nilai-nilai variabel tabel pada waktu debug di T-SQL?

187

Bisakah kita melihat nilai-nilai (baris dan sel) dalam tabel nilai variabel di SQL Server Management Studio (SSMS) selama waktu debug? Jika ya, bagaimana?

masukkan deskripsi gambar di sini

Faiz
sumber

Jawaban:

31

Itu belum diterapkan menurut tautan Microsoft Connect ini : Microsoft Connect

rortega
sumber
2
Dan kita di sini pada 2016. Tidak lebih baik. Tautan Connect juga tidak berfungsi lagi.
dotNET
5
Sejujurnya ini sebenarnya bukan jawaban karena tidak menjawab pertanyaan, pertanyaannya adalah bagaimana melakukannya (bukan apakah SSMS memiliki fitur untuk itu), menyatakan ini tidak diterapkan sementara ada cara untuk menampilkan nilai-nilai tidak sangat membantu.
Răzvan Flavius ​​Panda
1
Silakan hapus jawaban ini. Jawaban di bawah ini harus menjadi jawaban yang diterima.
Vortex852456
2018, masih nggak.
AgentFire
317
DECLARE @v XML = (SELECT * FROM <tablename> FOR XML AUTO)

Masukkan pernyataan di atas pada titik di mana Anda ingin melihat konten tabel. Konten tabel akan dirender sebagai XML di jendela lokal, atau Anda dapat menambahkan @vke jendela jam tangan.

masukkan deskripsi gambar di sini

Kirby
sumber
1
Ini jelas merupakan pekerjaan di sekitar yang cukup baik untuk tabel kecil untuk disajikan sebagai XML.
Faiz
4
Tapi tetap jangan berhenti membaca! Opsi hebat lainnya di bawah ini! Utas hebat !!
Mike M
1
Saya punya tabel besar dengan XML yang tidak terlalu ramah untuk dibaca. Saya mengambil langkah lain - salin XML dan tempel di xmlgrid.net dan Anda bisa melihat XML sebagai tabel. Visualisasi tabel sangat membantu. Menunggu rilis SSMS yang memiliki penampil tabel seperti penampil yang dapat datatable di Visual Studio.
Moiz Tankiwala
1
Anda dapat menambahkan ", ROOT ('rootNodeName')" ke klausa "UNTUK XML". Ini akan mengumpulkan beberapa baris (jika ada) di bawah satu root, yang membuat dokumen XML legal, yang dapat dilihat dengan Visualizer XML, bukan Visualizer teks.
JohnL4
2
Menggunakan SQL Server 2016 atau tidak pernah Anda juga dapat menggunakan versi JSON ini DECLARE @v nvarchar(max) = (SELECT * FROM <tablename> FOR JSON AUTO)
Sousuke
18

Proyek ini https://github.com/FilipDeVos/sp_select memiliki prosedur tersimpan sp_selectyang memungkinkan untuk memilih dari tabel temp.

Pemakaian:

exec sp_select 'tempDb..#myTempTable'

Saat men-debug prosedur tersimpan Anda dapat membuka tab baru dan menjalankan perintah ini untuk melihat isi dari tabel temp.

James Hulse
sumber
6
Bagus untuk tabel temp, tetapi tidak untuk variabel tabel
Harag
Juga hang jika ada transaksi terbuka, jadi tidak banyak digunakan jika menggunakan uji debug dalam kerangka kerja seperti tSQLt yang selalu membuka transaksi pada awal pengujian.
Nathan
1
WOW WOW WOW WOW
vothaison
Bagus - akan lebih bagus jika Anda bisa mengurutkan berdasarkan satu atau dua kolom
user2486488
6

Dalam Prosedur Tersimpan, buat tabel temporer global ## temptable dan tulis kueri sisipan di dalam prosedur tersimpan Anda yang memasukkan data dalam tabel Anda ke dalam tabel sementara ini.

Setelah ini selesai, Anda dapat memeriksa konten tabel sementara dengan membuka jendela kueri baru. Cukup gunakan "pilih * dari ## temptable"

messi19
sumber
1

Cukup gunakan kueri pemilihan untuk menampilkan tabel varialble, di mana pun Anda ingin memeriksa.

http://www.simple-talk.com/sql/learn-sql-server/management-studio-improvements-in-sql-server-2008/

solairaja
sumber
Ya, opsi terbaik dan tercepat yang disetujui. Lakukan saja ini dan sorot dan jalankan hanya SQL yang ingin Anda jalankan jika Anda membutuhkan lebih banyak kontrol.
Jammin
2
Gunakan kueri pemilihan mana, di jendela tontonan?
Faiz
gunakan pilih di dalam prosedur atau permintaan adhoc yang Anda
jalankan
Tetapi yang saya perlu uji adalah fungsi bernilai tabel dan kesalahan "Pilih pernyataan yang termasuk dalam fungsi tidak dapat mengembalikan data ke klien". Apakah ada cara lain, khusus untuk memeriksa melalui alat debugging yang disediakan?
Faiz
3
Tidak, itu tidak menyelesaikan pertanyaan. Saya pikir ini tidak mungkin tanpa plugin tambahan.
Faiz
1

Jika Anda menggunakan SQL Server 2016 atau yang lebih baru, Anda juga dapat memilihnya sebagai hasil JSON dan menampilkannya di JSON Visualizer, jauh lebih mudah untuk membacanya daripada di XML dan memungkinkan Anda untuk menyaring hasil.

DECLARE @v nvarchar(max) = (SELECT * FROM Suppliers FOR JSON AUTO)

masukkan deskripsi gambar di sini

Sousuke
sumber
0

Saya sampai pada kesimpulan bahwa ini tidak mungkin tanpa plugin.

Faiz
sumber
Saya melihat beberapa preview Visual Studio 2010. Sangat mewah, kompleks, dan detail ... dan demonstran tidak tahu apakah tabel temp dapat dilihat dalam mode debug. Mungkin saat ini dirilis, tapi saya tidak menahan nafas.
Philip Kelley
0

SQL Server Profiler 2014 mencantumkan konten parameter nilai tabel. Mungkin bisa bekerja di versi sebelumnya juga. Aktifkan SP: Mulai atau RPC: Acara yang diselesaikan dalam grup Prosedur Tersimpan dan kolom TextData dan ketika Anda mengklik entri log Anda akan memiliki pernyataan menyisipkan untuk tabel variabel. Anda kemudian dapat menyalin teks dan menjalankannya di Management Studio.

Output sampel:

declare @p1 dbo.TableType
insert into @p1 values(N'A',N'B')
insert into @p1 values(N'C',N'D')

exec uspWhatever @PARAM=@p1
pengguna3285954
sumber
-1

Mengapa tidak memilih Tabel dan melihat variabel seperti itu?

SELECT * FROM @d
Kyle Hoener
sumber
4
Tolong jelaskan bagaimana cara melakukannya. Menambahkan SELECT * FROM @Tableke skrip yang sedang didebug tidak memancarkan hasil ke jendela hasil.
StingyJack
-3

Maaf teman-teman, saya sedikit terlambat ke pesta tetapi bagi siapa pun yang menemukan pertanyaan ini di kemudian hari, saya telah menemukan cara termudah untuk melakukan ini dalam prosedur tersimpan adalah dengan:

  1. Buat kueri baru dengan parameter prosedur apa pun yang dideklarasikan dan diinisialisasi di atas.
  2. Tempel di tubuh prosedur Anda.
  3. Tambahkan kueri pemilihan kuno yang baik segera setelah variabel tabel Anda diinisialisasi dengan data.
  4. Jika 3. bukan pernyataan terakhir dalam prosedur, atur breakpoint pada baris yang sama, mulai debugging dan lanjutkan langsung ke breakpoint Anda.
  5. Keuntungan!!

jawaban messi19 harus menjadi yang diterima IMHO, karena lebih sederhana daripada saya dan melakukan pekerjaan sebagian besar waktu, tetapi jika Anda seperti saya dan memiliki variabel tabel di dalam lingkaran yang ingin Anda periksa, ini melakukan pekerjaan dengan baik tanpa terlalu banyak usaha atau plugin SSMS eksternal.

Kenny83
sumber
Ini sepenuhnya berlawanan dengan apa yang OP coba lakukan.
Jamie Marshall