Esecuzione diretta

Si applica a: sìSQL Server (tutte le versioni supportate) Sìdatabase SQL di Azure SìIstanza gestita di SQL di Azure sìAzure Synapse Analytics sìParallel Data Warehouse

L'esecuzione diretta rappresenta la modalità più semplice di esecuzione di un'istruzione. Un'applicazione compila una stringa di caratteri contenente un' Transact-SQL istruzione e la invia per l'esecuzione mediante la funzione SQLExecDirect . Dopo avere raggiunto il server, l'istruzione viene compilata da SQL Server in un piano di esecuzione, che viene quindi immediatamente eseguito.

L'esecuzione diretta viene in genere utilizzata dalle applicazioni che compilano ed eseguono istruzioni in fase di esecuzione e rappresenta il metodo più efficiente per le istruzioni eseguite una sola volta. Lo svantaggio con molti database consiste nel fatto che l'istruzione SQL deve essere analizzata e compilata ogni volta che viene eseguita determinando un aumento dell'overhead se l'istruzione viene eseguita più volte.

In SQL Server vengono notevolmente migliorate le prestazioni dell'esecuzione diretta delle istruzioni utilizzate più di frequente negli ambienti multiutente e l'utilizzo di SQLExecDirect con gi marcatori di parametro per le istruzioni SQL utilizzate più di frequente si avvicina all'efficienza dell'esecuzione preparata.

Quando si è connessi a un'istanza di SQL Server , il SQL Server driver ODBC di Native Client utilizza sp_executesql per trasmettere l'istruzione SQL o il batch specificato in SQLExecDirect. SQL Server dispone della logica per determinare rapidamente se un'istruzione SQL o un batch eseguito con sp_executesql corrisponde all'istruzione o al batch che ha generato un piano di esecuzione già esistente in memoria. Se esiste una corrispondenza, SQL Server riutilizza semplicemente il piano esistente anziché compilarne uno nuovo. Ciò significa che le istruzioni SQL comunemente eseguite eseguite con SQLExecDirect in un sistema con molti utenti trarranno vantaggio da molti dei vantaggi del riutilizzo del piano disponibili solo per le stored procedure nelle versioni precedenti di SQL Server .

Il vantaggio di riutilizzare i piani di esecuzione è valido solo quando più utenti eseguono lo stesso batch o la stessa istruzione SQL. Rispettare le seguenti convenzioni di scrittura del codice per aumentare la probabilità che le istruzioni SQL eseguite da client diversi siano simili abbastanza per potere riutilizzare i piani di esecuzione:

  • Non includere costanti di dati nelle istruzioni SQL; utilizzare invece i marcatori di parametro associati alle variabili di programma. Per ulteriori informazioni, vedere utilizzo dei parametri dell'istruzione.

  • Utilizzare nomi di oggetto completi. I piani di esecuzione non vengono riutilizzati se i nomi di oggetto non sono completi.

  • Se possibile, utilizzare per le connessioni dell'applicazione un set comune di opzioni dell'istruzione e di connessione. I piani di esecuzione generati per una connessione con un set di opzioni, ad esempio ANSI_NULLS, non vengono riutilizzati per una connessione con un altro set di opzioni. Il driver ODBC di SQL Server Native Client e il provider ODBC di SQL Server Native Client hanno le stesse impostazioni predefinite per queste opzioni.

Se tutte le istruzioni eseguite con SQLExecDirect vengono codificate utilizzando queste convenzioni, SQL Server può riutilizzare i piani di esecuzione quando si verifica l'opportunità.

Vedere anche

Esecuzione di istruzioni (ODBC)