Limitazioni dei comandi e delle funzionalità del debugger
Aggiornamento: novembre 2007
Le informazioni contenute in questo argomento sono valide per:
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
||||
Standard |
||||
Pro e Team |
Legenda tabella:
Applicabile |
|
Non applicabile |
|
Comando o comandi nascosti per impostazione predefinita. |
Nel debugger SQL sono disponibili molte delle funzionalità di debug comuni, ma non tutte. Il debug di SQL supporta la maggior parte dei comandi del debugger, ad esempio quelli per l'impostazione dei punti di interruzione e l'esecuzione delle istruzioni. È possibile visualizzare i valori delle variabili e dei parametri passati nella finestra Variabili Locali nonché trascinare le espressioni nella finestra Espressioni di controllo per tenerne traccia mentre si procede un'istruzione alla volta o si esegue la procedura.
Tuttavia, il debug SQL avviene in un ambiente molto diverso, date alcune caratteristiche base di SQL Server. Alcune limitazioni riguardano unicamente il debug T-SQL o CLR SQL, altre riguardano il debug SQL nel suo complesso.
Limitazioni generali del debug SQL
Non è possibile utilizzare Modifica e continuazione.
Non è possibile utilizzare Esegui fino al cursore nella finestra Stack di chiamate.
Non è possibile utilizzare Interrompi durante l'esecuzione di un'istruzione SQL.
L'output di istruzioni PRINT di SQL non viene visualizzato nel debugger o nel riquadro Output database.
Non è possibile utilizzare Rollback automatico in Visual Studio. Se si riproduce un errore che causa la modifica dei dati, è possibile che vada perso perché i dati sono cambiati.
Alcune finestre non sono disponibili o non forniscono alcuna funzionalità. Tali finestre sono le seguenti:
Memoria
3DNow!
Disassembly per T-SQL
Limitazioni del debug T-SQL
Le condizioni e i filtri del punto di interruzione non sono supportate.
Poiché SQL non dispone di memoria effettiva né di registri, non è possibile utilizzare la finestra Memoria o la finestra Registri.
Non è possibile utilizzare Imposta istruzione successiva per modificare la sequenza di esecuzione. È necessario seguire il controllo di flusso e l'ordine delle istruzioni nel codice SQL. Una soluzione possibile consiste nell'inserire istruzioni di controllo attorno a blocchi di codice SQL e modificare i valori delle variabili.
Non è possibile accedere a qualsiasi proprietà o variabile di .Net Framework dall'interno di un oggetto T-SQL.
La finestra di controllo immediato viene visualizzata, ma non consente di eseguire operazioni utili quali l'impostazione di una variabile su un valore o l'esecuzione di query nel database.
Alcune finestre non sono disponibili o non forniscono alcuna funzionalità. Tali finestre sono le seguenti:
Disassembly
Thread
Registri
Processi
Moduli
Limitazioni del debug CLR SQL
Poiché l'esecuzione del codice CLR SQL si blocca quando è in corso il debug CLR SQL, può tenersi una sola sessione di debug CLR SQL per server. Di conseguenza, l'utente del debugger deve disporre dei privilegi di amministratore del sistema SQL per eseguire il debug CLR SQL.
Il debug CLR SQL non deve mai essere eseguito in un server di produzione. Il debug CLR SQL è rischioso: il debugger CLR SQL è in grado di leggere e scrivere nella memoria del processo e di eseguire codice arbitrario nel processo server. Comporta l'arresto di tutti i thread gestiti nel server. Quando si termina una sessione di debug, SQL Server può bloccarsi.
Non è possibile accedere a variabili SQL globali, quali @@ROWCOUNT, dall'interno di un oggetto CLR/SQL.
In un progetto SQL Server di Visual Studio è possibile aggiungere riferimenti solo a un sottoinsieme delle librerie di classi .NET Framework. Non è possibile aggiungere riferimenti a tutti gli assembly.