T-SQL'de hata ayıklama zamanında bir tablo değişkeninin değerleri nasıl görülür?


187

Hata ayıklama süresi boyunca SQL Server Management Studio'da (SSMS) bir tablo değerli değişkenin değerlerini (satır ve hücreler) görebilir miyiz? Evetse, nasıl?

resim açıklamasını buraya girin

Yanıtlar:


31

Bu henüz Microsoft Connect bağlantısına göre uygulanmadı: Microsoft Connect



2
Ve burada 2016'dayız. Daha iyisi yok. Connect bağlantısı da artık çalışmıyor.
dotNET

5
Dürüst olmak gerekirse, bu aslında soruyu cevaplamadığı için bir cevap değildir, soru bunun nasıl yapılacağıdır (SSMS'nin herhangi bir özelliği olup olmadığı değil), değerleri göstermenin yolları olmadığında bunun uygulanmadığını belirtmek çok yararlı.
Răzvan Flavius ​​Panda

1
Lütfen bu yanıtı silin. Aşağıdaki cevap kabul edilen cevap olmalıdır.
Vortex852456

2018, hala hayır.
AgentFire

317
DECLARE @v XML = (SELECT * FROM <tablename> FOR XML AUTO)

Yukarıdaki ifadeyi tablonun içeriğini görüntülemek istediğiniz noktaya ekleyin. Tablonun içeriği, yerel pencerede XML olarak işlenir veya @vsaatler penceresine ekleyebilirsiniz .

resim açıklamasını buraya girin


1
Bu kesinlikle küçük tabloların XML olarak sunulması için yeterince iyi olan bir çalışmadır.
Faiz

4
Ama yine de okumayı bırakma! Aşağıda başka bir harika seçenek! Büyük iplik !!
Mike M

1
XML ile okumak için çok kolay değil büyük tablolar oldu. Başka bir adım atıyorum - XML'i kopyalayıp xmlgrid.net'e yapıştırın ve XML'i bir tablo olarak görebilirsiniz. Tablo görselleştirme gerçekten yardımcı olur. Visual Studio'daki datatable görüntüleyicisi gibi bir tablo görüntüleyiciye sahip SSMS'nin yayınlanması bekleniyor.
Moiz Tankiwala

1
"FOR XML" deyimine ", ROOT ('rootNodeName')" ekleyebilirsiniz. Bu, tek bir kök altında birden fazla satır (varsa) toplar ve bu da yasal bir XML belgesi oluşturur; bu, metin görselleştiricisi yerine XML görselleştiricisi ile görüntülenebilir.
JohnL4

2
SQL Server 2016 ya da asla kullanarak bunun JSON sürümünü de kullanabilirsiniz DECLARE @v nvarchar(max) = (SELECT * FROM <tablename> FOR JSON AUTO)
Sousuke

18

Bu proje https://github.com/FilipDeVos/sp_selectsp_select geçici bir tablodan seçim yapmanıza izin veren saklı bir yordama sahiptir.

Kullanımı:

exec sp_select 'tempDb..#myTempTable'

Saklı yordamda hata ayıklama sırasında yeni bir sekme açabilir ve geçici tablonun içeriğini görmek için bu komutu çalıştırabilirsiniz.


6
Geçici tablolar için harika, ancak tablo değişkenleri için değil
Harag

Ayrıca açık bir işlem varsa askıda kalır, bu nedenle testin başlangıcında her zaman bir işlem açan tSQLt gibi bir çerçevede bir hata ayıklama testi kullanıldığında çok fazla kullanılmaz.
Nathan

1
WOW WOW WOW WOW
vothaison

İyi - tek veya iki sütuna göre sıralarsanız harika olur
user2486488

6

Saklı Yordam'da bir geçici geçici tablo ## temptable oluşturun ve saklı yordam içine tablodaki verileri bu geçici tabloya ekleyen bir ekleme sorgusu yazın.

Bu yapıldıktan sonra yeni bir sorgu penceresi açarak geçici tablonun içeriğini kontrol edebilirsiniz. Sadece ## temptable'dan "select *" seçeneğini kullanın


1

Kontrol etmek istediğiniz yerde tablo değişkenini görüntülemek için select sorgusunu kullanmanız yeterlidir.

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


Evet kabul etti en iyi ve en hızlı seçenek. Bunu yapın ve daha fazla kontrole ihtiyacınız varsa yalnızca çalıştırmak istediğiniz SQL'i vurgulayın ve yürütün.
Jammin

2
İzleme penceresinde nerede, sorgu seç?
Faiz

yordamın içindeki seçimi veya yürüttüğünüz herhangi bir geçici sorguyu kullanın
solairaja

Ama ne test etmek gerekir tablo değerli bir işlevdir ve "bir işlev içinde yer alan Select deyimleri bir istemciye veri döndüremez" hata atar. Sağlanan hata ayıklama araçlarıyla incelemek için başka bir yol var mı?
Faiz

3
Hayır, bu sorunu çözmez. Bunun ek bir eklenti olmadan mümkün olmadığını düşünüyorum.
Faiz

1

SQL Server 2016 veya daha yenisini kullanıyorsanız, bunu JSON sonucu olarak da seçebilir ve JSON Visualizer'da görüntüleyebilirsiniz, XML'den okumak çok daha kolaydır ve sonuçları filtrelemenize izin verir.

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

resim açıklamasını buraya girin


0

Bunun herhangi bir eklenti olmadan mümkün olmadığı sonucuna vardım.


Visual Studio 2010'un bazı önizlemelerini gördüm. Çok süslü, karmaşık ve ayrıntılı ... ve gösterici geçici tabloların hata ayıklama modunda görüntülenip görüntülenemeyeceğini bilmiyordu. Belki serbest bırakıldığında, ama nefesimi tutmuyorum.
Philip Kelley

0

SQL Server Profiler 2014, tablo değeri parametresinin içeriğini listeler. Önceki sürümlerde de çalışabilir. Saklı Yordamlar grubu ve TextData sütununda SP: Starting veya RPC: Completed olayını etkinleştirin ve günlükteki girdiyi tıklattığınızda tablo değişkeni için insert deyimleri olur. Daha sonra metni kopyalayıp Management Studio'da çalıştırabilirsiniz.

Örnek çıktı:

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

exec uspWhatever @PARAM=@p1

-1

Neden sadece Tablo'yu seçip değişkeni bu şekilde görmüyorsunuz?

SELECT * FROM @d

4
Lütfen bunun nasıl yapılacağını açıklayın. SELECT * FROM @TableHata ayıklanan komut dosyasına bir eklenmesi sonuç penceresine sonuç vermez.
StingyJack

-3

Üzgünüm çocuklar, partiye biraz geç kaldım ama daha sonra bu soruya rastlayan herkes için, bunu saklı bir prosedürde yapmanın en kolay yolunu buldum:

  1. Üstte bildirilen ve başlatılan yordam parametreleriyle yeni bir sorgu oluşturun.
  2. Prosedürünüzün gövdesine yapıştırın.
  3. Tablo değişkeniniz verilerle başlatıldıktan hemen sonra eski moda bir seçme sorgusu ekleyin.
  4. 3. yordamdaki son ifade değilse, aynı satırda bir kesme noktası ayarlayın, hata ayıklamaya başlayın ve doğrudan kesme noktanıza devam edin.
  5. Kar !!

messi19'un cevabı kabul edilen bir IMHO olmalı, çünkü benimkinden daha basit ve çoğu zaman işi yapıyor , ama benden hoşlanıyorsanız ve incelemek istediğiniz bir döngü içinde bir tablo değişkenine sahipseniz, bu işi güzel yapıyor fazla çaba veya harici SSMS eklentileri olmadan.


Bu OP'nin yapmaya çalıştığının tamamen tersidir.
Jamie Marshall
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.