<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>SQL MCP Server | The .NET Blog</title><link>https://thedotnetblog.com/it/tags/sql-mcp-server/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>it</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Wed, 03 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/it/tags/sql-mcp-server/index.xml" rel="self" type="application/rss+xml"/><item><title>NL2SQL è la SQL Injection dell'Era Agentiva</title><link>https://thedotnetblog.com/it/news/emiliano-montesdeoca/nl2sql-agentic-sql-injection-mcp-server/</link><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/it/news/emiliano-montesdeoca/nl2sql-agentic-sql-injection-mcp-server/</guid><description>Prima di lasciare che un agente interroghi il tuo database con il linguaggio naturale, leggi questo. NL2SQL sembra semplice finché non rifletti sulla completezza dello schema, l'indeterminismo e cosa risolve realmente SQL MCP Server.</description><content:encoded>&lt;p&gt;C&amp;rsquo;è una versione del discorso su NL2SQL che suona perfetta: gli utenti fanno domande in linguaggio naturale, gli agenti generano SQL, i dati tornano. Meno schermate, meno query, meno codice. Semplice.&lt;/p&gt;
&lt;p&gt;Poi ci pensi per altri cinque minuti.&lt;/p&gt;
&lt;h2 id="i-problemi-di-cui-nessuno-parla-nella-demo"&gt;I Problemi di cui Nessuno Parla nella Demo&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Gli schemi non sono stati progettati per spiegare le cose.&lt;/strong&gt; Nomi di tabelle criptici, nomi di colonne incoerenti, relazioni tecnicamente valide ma semanticamente invalide senza predicati aggiuntivi — questo è normale per i database aziendali. Non sono bug, sono semplicemente la storia accumulata dei cambiamenti di business. Ma quando chiedi a un modello di inferire l&amp;rsquo;intento da uno schema che non è stato progettato per comunicare l&amp;rsquo;intento, il modello ci proverà comunque. Non si arrenderà. Genererà la sua migliore query possibile e restituirà risultati con sicurezza.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I modelli non sono deterministici.&lt;/strong&gt; Fai la stessa domanda sullo stesso database due volte e potresti ottenere SQL diverso. Il modello sta calcolando probabilità, e lievi variazioni nel contesto producono output diversi. Non puoi testare fino ad ottenere la garanzia che l&amp;rsquo;agente generi sempre la query corretta.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La revisione dell&amp;rsquo;utente non scala.&lt;/strong&gt; &amp;ldquo;Basta rivedere ogni query prima dell&amp;rsquo;esecuzione&amp;rdquo; sembra sicuro. Ma presuppone che gli utenti siano esperti sia nel modello di dati che in SQL — esattamente le persone che non avevano bisogno dell&amp;rsquo;interfaccia in linguaggio naturale. Introduce anche sovraccarico cognitivo e una nuova classe di bias di conferma, dove gli utenti sopraffatti dalla complessità della query approvano query non valide invece di investigarle.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;E poi c&amp;rsquo;è l&amp;rsquo;injection.&lt;/strong&gt; Nello sviluppo SQL tradizionale, la parametrizzazione ha risolto l&amp;rsquo;injection perché l&amp;rsquo;input dell&amp;rsquo;utente riempiva i parametri, non la struttura SQL. Con NL2SQL, il modello genera il SQL stesso. Il prompt, il contesto dello schema, la cronologia della conversazione e i dati recuperati influenzano tutti ciò che viene eseguito. Se qualcuno elabora un prompt che cambia ciò che il modello genera, questa è injection — non a livello di parametro, ma a livello di generazione di query. E a differenza dell&amp;rsquo;eliminazione di una tabella (ovvio, recuperabile), l&amp;rsquo;injection NL2SQL produce query che restituiscono risultati errati senza errori visibili. Le decisioni aziendali vengono prese su dati sbagliati.&lt;/p&gt;
&lt;h2 id="cosa-risolve-realmente-sql-mcp-server"&gt;Cosa Risolve Realmente SQL MCP Server&lt;/h2&gt;
&lt;p&gt;È qui che l&amp;rsquo;articolo fa il suo punto pratico più utile. Invece di dare a un agente accesso arbitrario allo schema e sperare nel meglio, SQL MCP Server espone una &lt;strong&gt;superficie API curata&lt;/strong&gt; costruita su &lt;a href="https://learn.microsoft.com/en-us/azure/data-api-builder/overview"&gt;Data API builder&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;La differenza è importante: l&amp;rsquo;agente non genera SQL. Chiama endpoint denominati che restituiscono forme di risultato predefinite. Il SQL viene scritto una volta, da uno sviluppatore, ed è deterministico. Il non-determinismo dell&amp;rsquo;agente è limitato alla scelta di &lt;em&gt;quale&lt;/em&gt; endpoint chiamare, non alla costruzione di query arbitrarie.&lt;/p&gt;
&lt;p&gt;Questo è analogo a ciò che la parametrizzazione ha fatto per l&amp;rsquo;injection SQL nel modello di app tradizionale — rimuovi la capacità di costruire query arbitrarie dall&amp;rsquo;input non attendibile.&lt;/p&gt;
&lt;h2 id="la-domanda-giusta"&gt;La Domanda Giusta&lt;/h2&gt;
&lt;p&gt;L&amp;rsquo;articolo non dice &amp;ldquo;non usare mai NL2SQL.&amp;rdquo; Dice: sii deliberato su &lt;em&gt;dove&lt;/em&gt; lo applichi e &lt;em&gt;cosa&lt;/em&gt; esponi. Per l&amp;rsquo;analisi esplorativa in un ambiente controllato, con uno schema limitato e accesso in sola lettura, NL2SQL potrebbe andare bene. Per i sistemi di produzione dove le decisioni aziendali dipendono dai risultati, un livello API curato è significativamente più sicuro.&lt;/p&gt;
&lt;p&gt;Onestà: alcuni problemi si risolvono genuinamente meglio con query strutturate dietro endpoint denominati che con il linguaggio naturale verso SQL. SQL MCP Server ti dà questa opzione senza abbandonare completamente l&amp;rsquo;interfaccia agentiva.&lt;/p&gt;
&lt;p&gt;Post originale: &lt;a href="https://devblogs.microsoft.com/azure-sql/sql-mcp-server-nl2sql/"&gt;Considering NL2SQL? Should your database really be the prompt? How can SQL MCP Server help?&lt;/a&gt;&lt;/p&gt;</content:encoded></item></channel></rss>