Megosztás a következőn keresztül:


sql_request bővítmény

Szolgáltatások váltása a Verzió legördülő listával. További információ a navigációról.
A következőre vonatkozik: ✅ Microsoft Fabric ✅ Azure Data Explorer

A sql_request beépülő modul sql-lekérdezést küld egy Azure SQL Server hálózati végpontnak, és visszaadja az eredményeket. Ha az SQL több sorkészletet ad vissza, csak az elsőt használja. A beépülő modul meghívása a evaluate operátorral történik.

Szemantika

evaluate sql_request ( ConnectionString,SqlQuery [,SqlParameters [,Beállítások]] ) [:OutputSchema]

További információ szintaxiskonvenciákról.

Paraméterek

Név Típus Kötelező Leírás
Kapcsolati karakterlánc string ✔️ Az SQL Server hálózati végpontra mutató kapcsolati sztring. Tekintse meg az érvényes hitelesítési módszereket és a hálózati végpont megadásának módját.
SqlQuery string ✔️ Az SQL-végponton végrehajtandó lekérdezés. A lekérdezésnek egy vagy több sorkészletet kell visszaadnia, de csak az elsőt teszi elérhetővé a Kusto-lekérdezés többi része számára.
SqlParameters dynamic Kulcs-érték párok tulajdonságtáskáját, amely paraméterekként és a lekérdezéssel együtt továbbítható.
Beállítások dynamic Kulcs-érték párok tulajdonságtáskáját, amely speciálisabb beállításokat ad át a lekérdezéssel együtt. Jelenleg csak token a hívó által biztosított Microsoft Entra hozzáférési jogkivonat továbbítható az SQL-végpontra hitelesítés céljából.
OutputSchema string A sql_request beépülő modul kimenetének várt oszlopainak nevei és típusai. Használja a következő szintaxist: (ColumnName:ColumnType [, ...] ).

Megjegyzés:

  • Az OutputSchema megadása erősen ajánlott, mivel lehetővé teszi a beépülő modul használatát olyan helyzetekben, amelyek egyébként nem működnek nélküle, például egy fürtközi lekérdezésben. Az OutputSchema több lekérdezésoptimalizálást is lehetővé tehet.
  • Hiba akkor jelentkezik, ha az SQL hálózati végpont által visszaadott első sorhalmaz futásidejű sémája nem egyezik az OutputSchema sémával.

Hitelesítés és engedélyezés

A sql_request beépülő modul az alábbi három hitelesítési módszert támogatja az SQL Server-végponton.

Hitelesítési módszer Szemantika Hogyan Leírás
A Microsoft Entra már integrálásra került Authentication="Active Directory Integrated" Adja hozzá a ConnectionString paraméterhez . A felhasználó vagy alkalmazás a Microsoft Entra-azonosítón keresztül hitelesíti a fürtöt, és ugyanazt a jogkivonatot használja az SQL Server hálózati végpontjának eléréséhez.
Az egyszerűnek rendelkeznie kell a megfelelő engedélyekkel az SQL-erőforráson a kért művelet végrehajtásához. Az adatbázisból való olvasáshoz például az egyszerű felhasználónak tábla SELECT engedélyre van szüksége, és egy meglévő táblába való íráshoz az egyszerű felhasználónak FRISSÍTÉSi és INSERT-engedélyekre van szüksége. Új táblába való íráshoz CREATE-engedélyekre is szükség van.
Felügyelt identitás Authentication="Active Directory Managed Identity";User Id={object_id} Adja hozzá a ConnectionString paraméterhez . A kérés egy felügyelt identitás nevében lesz végrehajtva. A felügyelt identitásnak rendelkeznie kell a megfelelő engedélyekkel az SQL-erőforráson a kért művelet végrehajtásához.
A felügyelt identitás hitelesítésének engedélyezéséhez hozzá kell adnia a felügyelt identitást a fürthöz, és módosítania kell a felügyelt identitásszabályzatot. További információ: Managed Identity Policy.
Felhasználónév és jelszó User ID=...; Password=...; Adja hozzá a ConnectionString paraméterhez . Ha lehetséges, kerülje ezt a módszert, mivel az kevésbé biztonságos.
Microsoft Entra hozzáférési jogkivonat dynamic({'token': h"eyJ0..."}) Adja hozzá a Beállítások paraméterhez. A hozzáférési jogkivonat tulajdonságként token lesz átadva a beépülő modul Beállítások argumentumában.
Hitelesítési módszer Szemantika Hogyan Leírás
A Microsoft Entra már integrálásra került Authentication="Active Directory Integrated" Adja hozzá a ConnectionString paraméterhez . A felhasználó vagy alkalmazás a Microsoft Entra-azonosítón keresztül hitelesíti a fürtöt, és ugyanazt a jogkivonatot használja az SQL Server hálózati végpontjának eléréséhez.
Az egyszerűnek rendelkeznie kell a megfelelő engedélyekkel az SQL-erőforráson a kért művelet végrehajtásához. Az adatbázisból való olvasáshoz például az egyszerű felhasználónak tábla SELECT engedélyre van szüksége, és egy meglévő táblába való íráshoz az egyszerű felhasználónak FRISSÍTÉSi és INSERT-engedélyekre van szüksége. Új táblába való íráshoz CREATE-engedélyekre is szükség van.
Felhasználónév és jelszó User ID=...; Password=...; Adja hozzá a ConnectionString paraméterhez . Ha lehetséges, kerülje ezt a módszert, mivel az kevésbé biztonságos.
Microsoft Entra hozzáférési jogkivonat dynamic({'token': h"eyJ0..."}) Adja hozzá a Beállítások paraméterhez. A hozzáférési jogkivonat tulajdonságként token lesz átadva a beépülő modul Beállítások argumentumában.

Megjegyzés:

Azokat a kapcsolati sztringeket és lekérdezéseket, amelyek bizalmas információkat vagy védett információkat tartalmaznak, el kell rögzíteni, hogy a Kusto-nyomkövetésből ne lehessen kimaradni. További információ: elhomályosított sztringkonstansok.

Példák

SQL-lekérdezés küldése integrált Microsoft Entra-hitelesítéssel

Az alábbi példa egy SQL-lekérdezést küld egy Azure SQL DB-adatbázisba. Lekéri az összes rekordot, [dbo].[Table]majd feldolgozza az eredményeket a Kusto oldalán. A hitelesítés újra felhasználja a hívó felhasználó Microsoft Entra-jogkivonatát.

Megjegyzés:

Ez a példa nem javasolt az adatok ilyen módon történő szűrésére vagy kivetítésére. Az SQL-lekérdezéseket úgy kell létrehozni, hogy a lehető legkisebb adathalmazt adja vissza.

evaluate sql_request(
  'Server=tcp:contoso.database.windows.net,1433;'
    'Authentication="Active Directory Integrated";'
    'Initial Catalog=Fabrikam;',
  'select * from [dbo].[Table]') : (Id:long, Name:string)
| where Id > 0
| project Name

SQL-lekérdezés küldése felhasználónév/jelszó hitelesítés használatával

Az alábbi példa megegyezik az előzővel, azzal a kivételsel, hogy az SQL-hitelesítés felhasználónévvel/jelszóval történik. A bizalmasság érdekében itt obfuscated sztringeket használunk.

evaluate sql_request(
  'Server=tcp:contoso.database.windows.net,1433;'
    'Initial Catalog=Fabrikam;'
    h'User ID=USERNAME;'
    h'Password=PASSWORD;',
  'select * from [dbo].[Table]') : (Id:long, Name:string)
| where Id > 0
| project Name

SQL-lekérdezés küldése Microsoft Entra hozzáférési jogkivonat használatával

Az alábbi példa egy SQL-lekérdezést küld egy Azure SQL-adatbázisnak, amely beolvassa az összes rekordot [dbo].[Table]egy másik datetime oszlop hozzáfűzése közben, majd feldolgozza az eredményeket a Kusto oldalán. Megadja az SQL-lekérdezésben használandó SQL-paramétert (@param0).

evaluate sql_request(
  'Server=tcp:contoso.database.windows.net,1433;'
    'Authentication="Active Directory Integrated";'
    'Initial Catalog=Fabrikam;',
  'select *, @param0 as dt from [dbo].[Table]',
  dynamic({'param0': datetime(2020-01-01 16:47:26.7423305)})) : (Id:long, Name:string, dt: datetime)
| where Id > 0
| project Name

SQL-lekérdezés küldése lekérdezés által definiált kimeneti séma nélkül

Az alábbi példa egy SQL-lekérdezést küld egy Azure SQL-adatbázisba kimeneti séma nélkül. Ez csak akkor ajánlott, ha a séma ismeretlen, mivel ez befolyásolhatja a lekérdezés teljesítményét

evaluate sql_request(
  'Server=tcp:contoso.database.windows.net,1433;'
    'Initial Catalog=Fabrikam;'
    h'User ID=USERNAME;'
    h'Password=PASSWORD;',
  'select * from [dbo].[Table]')
| where Id > 0
| project Name

Titkosítás és kiszolgáló érvényesítése

A következő kapcsolati tulajdonságok kényszerítve vannak az SQL Server hálózati végponthoz való csatlakozáskor biztonsági okokból.

  • Encrypt feltétel nélküli értékre true van állítva.
  • TrustServerCertificate feltétel nélküli értékre false van állítva.

Ennek eredményeképpen az SQL Servert érvényes SSL/TLS-kiszolgálói tanúsítvánnyal kell konfigurálni.

A hálózati végpont megadása

Az SQL-hálózati végpont megadása a kapcsolati sztring részeként kötelező. A megfelelő szintaxis a következő:

Server = tcp: Teljes tartománynév [,port]

Helyszín:

  • A teljes tartománynév a végpont teljes tartományneve.
  • A port a végpont TCP-portja. Alapértelmezés szerint a 1433 feltételezzük.

Megjegyzés:

A hálózati végpont megadásának egyéb formái nem támogatottak. Nem lehet kihagyni például az előtagot tcp: , annak ellenére, hogy az SQL-ügyfélkódtárak programozott használata esetén lehetséges.