<?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/pl/tags/sql-mcp-server/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>pl</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/pl/tags/sql-mcp-server/index.xml" rel="self" type="application/rss+xml"/><item><title>NL2SQL to SQL Injection epoki agentów</title><link>https://thedotnetblog.com/pl/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/pl/news/emiliano-montesdeoca/nl2sql-agentic-sql-injection-mcp-server/</guid><description>Zanim pozwolisz agentowi odpytywać bazę danych językiem naturalnym, przeczytaj to. NL2SQL wydaje się proste, dopóki nie przemyślisz kompletności schematu, niedeterminizmu i tego, co SQL MCP Server naprawdę rozwiązuje.</description><content:encoded>&lt;p&gt;Istnieje wersja prezentacji NL2SQL, która brzmi idealnie: użytkownicy zadają pytania w języku naturalnym, agenci generują SQL, dane są zwracane. Mniej ekranów, mniej zapytań, mniej kodu. Proste.&lt;/p&gt;
&lt;p&gt;Potem myślisz o tym przez kolejne pięć minut.&lt;/p&gt;
&lt;h2 id="problemy-o-których-nikt-nie-mówi-w-demo"&gt;Problemy, o których nikt nie mówi w demo&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Schematy nie były projektowane, żeby coś wyjaśniać.&lt;/strong&gt; Kryptyczne nazwy tabel, niespójne nazwy kolumn, technicznie poprawne relacje, które są semantycznie nieważne bez dodatkowych predykatów — to norma w bazach danych przedsiębiorstw. To nie są błędy, to tylko nagromadzona historia zmian biznesowych. Ale kiedy prosisz model o wywnioskowanie intencji ze schematu, który nie był projektowany do przekazywania intencji, model i tak spróbuje. Nie podda się. Wygeneruje swoje najlepsze zapytanie i z przekonaniem zwróci wyniki.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Modele są niedeterministyczne.&lt;/strong&gt; Zadaj to samo pytanie tej samej bazie danych dwa razy i możesz otrzymać inny SQL. Model oblicza prawdopodobieństwa, a małe zmiany w kontekście powodują różne wyniki. Nie możesz osiągnąć przez testowanie gwarancji, że agent zawsze generuje poprawne zapytanie.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Przegląd użytkownika nie skaluje się.&lt;/strong&gt; &amp;ldquo;Po prostu przeglądaj każde zapytanie przed wykonaniem&amp;rdquo; brzmi bezpiecznie. Ale zakłada, że użytkownicy są ekspertami zarówno w modelu danych, jak i SQL — dokładnie ludzie, którzy nie potrzebowali interfejsu języka naturalnego. Wprowadza też przeciążenie poznawcze i nową klasę błędu potwierdzenia, gdzie użytkownicy przytłoczeni złożonością zapytania zatwierdzają nieważne zapytania zamiast je sprawdzać.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I jest jeszcze wstrzykiwanie.&lt;/strong&gt; W tradycyjnym rozwoju SQL parametryzacja rozwiązywała problem wstrzykiwania, ponieważ dane wejściowe użytkownika wypełniały parametry, nie strukturę SQL. W NL2SQL model sam generuje SQL. Prompt, kontekst schematu, historia rozmowy i pobrane dane — wszystko wpływa na to, co jest wykonywane. Jeśli ktoś spreparuje prompt zmieniający to, co generuje model, to jest wstrzykiwanie — nie na poziomie parametrów, ale na poziomie generowania zapytań. I w przeciwieństwie do DROP TABLE (oczywiste, odwracalne), wstrzykiwanie NL2SQL produkuje zapytania zwracające błędne wyniki bez widocznego błędu. Decyzje biznesowe są podejmowane na podstawie złych danych.&lt;/p&gt;
&lt;h2 id="co-sql-mcp-server-naprawdę-rozwiązuje"&gt;Co SQL MCP Server naprawdę rozwiązuje&lt;/h2&gt;
&lt;p&gt;Tu artykuł stawia swój najbardziej użyteczny praktyczny punkt. Zamiast dawać agentowi dowolny dostęp do schematu i mieć nadzieję na najlepsze, SQL MCP Server udostępnia &lt;strong&gt;wyselekcjonowaną powierzchnię API&lt;/strong&gt; zbudowaną na &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;Różnica ma znaczenie: agent nie generuje SQL. Wywołuje nazwane endpointy, które zwracają z góry zdefiniowane kształty wyników. SQL jest pisany raz, przez programistę, i jest deterministyczny. Niedeterminizm agenta jest ograniczony do wyboru &lt;em&gt;którego&lt;/em&gt; endpointu wywołać, nie do tworzenia dowolnych zapytań.&lt;/p&gt;
&lt;p&gt;To jest analogiczne do tego, co parametryzacja zrobiła z wstrzykiwaniem SQL w tradycyjnym modelu aplikacji — usuwa możliwość tworzenia dowolnych zapytań z niezaufanych danych wejściowych.&lt;/p&gt;
&lt;h2 id="właściwe-pytanie"&gt;Właściwe pytanie&lt;/h2&gt;
&lt;p&gt;Artykuł nie mówi &amp;ldquo;nigdy nie używaj NL2SQL.&amp;rdquo; Mówi: bądź świadomy &lt;em&gt;gdzie&lt;/em&gt; to stosujesz i &lt;em&gt;co&lt;/em&gt; udostępniasz. Do eksploracyjnej analizy w kontrolowanym środowisku, z ograniczonym schematem i dostępem tylko do odczytu, NL2SQL może być w porządku. Dla systemów produkcyjnych, gdzie decyzje biznesowe zależą od wyników, wyselekcjonowana warstwa API jest znacznie bezpieczniejsza.&lt;/p&gt;
&lt;p&gt;Uczciwie: niektóre problemy są naprawdę lepiej rozwiązywane przez strukturowane zapytania za nazwanymi endpointami niż przez język naturalny do SQL. SQL MCP Server daje ci tę opcję bez całkowitego rezygnowania z interfejsu agentowego.&lt;/p&gt;
&lt;p&gt;Oryginalny post: &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>