Procedura dettagliata: esecuzione del debug di una funzione scalare CLR SQL definita dall'utente
Le informazioni contenute in questo argomento sono valide per:
Edizione |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
![]() |
![]() |
![]() |
![]() |
Standard |
![]() |
![]() |
![]() |
![]() |
Pro e Team |
![]() |
![]() |
![]() |
![]() |
In questo esempio viene mostrato come eseguire il debug di una funzione definita dall'utente CLR SQL ( Common Language Run-time SQL Server). Viene creata una nuova funzione CLR SQL definita dall'utente nel database di esempio AdventureWorks.
Se quando si tenta di eseguire debug di un oggetto CLR SQL viene visualizzato il messaggio "Annullato dall'utente", è necessario configurare manualmente sia il computer su cui è in esecuzione Visual Studio, sia quello su cui è in esecuzione SQL Server. Per ulteriori informazioni, vedere Procedura: configurare i computer per l'abilitazione del debug di CLR SQL e Transact-SQL.
Nota
È possibile che le finestre di dialogo e i comandi di menu visualizzati siano diversi da quelli descritti nella Guida a seconda delle impostazioni attive o dell'edizione del programma. Per modificare le impostazioni, scegliere Importa/Esporta impostazioni dal menu Strumenti. Per ulteriori informazioni, vedere la classe Gestione delle impostazioni.
Per eseguire il debug di una funzione scalare CLR SQL definita dall'utente
In un nuovo progetto CLR SQL Server stabilire una connessione al database di esempio AdventureWorks. Per ulteriori informazioni, vedere How to: Connect to a Database.
Creare una nuova funzione utilizzando il codice della prima sezione relativa agli esempi e denominarla OrderCount.cs. Per ulteriori informazioni, vedere How to: Develop with the SQL Server Project Type.
Aggiungere uno script che provi la funzione includendola in un'istruzione SELECT. In Esplora soluzioni fare clic con il pulsante destro del mouse sulla directory Script di test, scegliere Aggiungi script di prova e inserire il codice contenuto nella seconda sezione relativa agli esempi. Salvare il file con il nome CallOrderCount.sql. Fare clic con il pulsante destro del mouse sul nome del file e scegliere Imposta come script di debug predefinito.
Inserire un punto di interruzione in OrderCount.cs nella riga in cui viene creata un'istanza di SqlCommand, quindi scegliere Avvia dal menu Debug per eseguire operazioni di compilazione, distribuzione e unit test del progetto. Quando il puntatore all'istruzione, indicato da una freccia gialla, compare su un punto di interruzione, è in corso il debug della funzione.
Provare più funzionalità di debug.
Per procedere oltre l'istruzione che crea l'istanza di SqlCommand, scegliere Esegui istruzione dal menu Debug.
Nella finestra Variabili locali, aprire la variabile sqlComm, che rappresenta un SqlCommand, ed esaminarne i membri.
Scegliere Esegui istruzione dal menu Debug per eseguire le istruzioni di una riga della funzione. Si noti che è stata creata l'istanza del membro sqlComm.CommandText.
Nell'editor di testo trascinare sqlComm in un punto qualsiasi della finestra Espressioni di controllo. La variabile verrà aggiunta all'elenco delle variabili di controllo.
Scegliere nuovamente Esegui istruzione. Verrà aperta una nuova finestra denominata T-SQL dinamico, contenente l'istruzione SQL da eseguire.
Scegliere Esegui istruzione per eseguire l'istruzione e tornare alla funzione.
Scegliere nuovamente Continua. Nella finestra T-SQL dinamico viene visualizzato il codice che restituisce il valore della funzione.
Scegliere Continua per terminare il debug della funzione.
Esempio
Codice per la creazione della funzione.
using System;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read)]
public static int OrderCount()
{
using (SqlConnection conn = new SqlConnection("context connection=true"))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT 42";
//cmd = new SqlCommand("SELECT 42",conn);
int result = (int)cmd.ExecuteScalar();
return result;
}
}
};
Script di prova da cui viene chiamata la funzione.
SELECT dbo.OrderCount()