Modul plug-in sql_request
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer
Modul sql_request
plug-in odešle dotaz SQL do koncového bodu sítě Azure SQL Serveru a vrátí výsledky.
Pokud SQL vrátí více než jednu sadu řádků, použije se pouze první sada řádků.
Modul plug-in se vyvolá pomocí operátoru evaluate
.
Syntaxe
evaluate
sql_request
(
ConnectionString SqlQuery [,
SqlParameters [,
Options]] )
[:
OutputSchema] ,
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Type | Požadováno | Popis |
---|---|---|---|
Připojovací řetězec | string |
✔️ | Připojovací řetězec, která odkazuje na koncový bod sítě SQL Serveru. Prohlédněte si platné metody ověřování a způsob určení koncového bodu sítě. |
SqlQuery | string |
✔️ | Dotaz, který se má spustit na koncovém bodu SQL. Dotaz musí vrátit jednu nebo více sad řádků, ale pro zbytek dotazu Kusto je k dispozici pouze první sada řádků. |
SqlParameters | dynamic |
Sada vlastností párů klíč-hodnota, které se mají předat jako parametry spolu s dotazem. | |
Možnosti | dynamic |
Sada vlastností párů klíč-hodnota pro předávání pokročilejších nastavení spolu s dotazem. V současné době je možné nastavit pouze token pro předání přístupového tokenu Microsoft Entra poskytnutého volajícím, který se předá koncovému bodu SQL pro ověřování. |
|
OutputSchema | string |
Názvy a typy očekávaných sloupců výstupu sql_request modulu plug-in. Použijte následující syntaxi: ( ColumnName : ColumnType [, ...] ) . |
Poznámka:
- Zadání outputSchema je vysoce doporučeno, protože umožňuje použití modulu plug-in ve scénářích, které by jinak bez něj nemusely fungovat, například dotaz mezi clustery. OutputSchema může také povolit více optimalizací dotazů.
- Pokud schéma spuštění první sady řádků vrácené koncovým bodem sítě SQL neodpovídá schématu OutputSchema , vyvolá se chyba.
Ověřování a autorizace
Modul plug-in sql_request podporuje následující tři metody ověřování koncového bodu SQL Serveru.
Metoda ověřování | Syntaxe | Jak | Popis |
---|---|---|---|
Integrovaná aplikace Microsoft Entra | Authentication="Active Directory Integrated" |
Přidejte do parametru ConnectionString . | Uživatel nebo aplikace se ověřuje přes Microsoft Entra ID vašeho clusteru a stejný token se používá pro přístup ke koncovému bodu sítě SQL Serveru. Aby mohl objekt zabezpečení provést požadovanou akci, musí mít příslušná oprávnění k prostředku SQL. Například ke čtení z databáze potřebuje objekt zabezpečení oprávnění SELECT tabulky a k zápisu do existující tabulky potřebuje objekt zabezpečení oprávnění UPDATE a INSERT. K zápisu do nové tabulky se vyžadují také oprávnění CREATE. |
Spravovaná identita | Authentication="Active Directory Managed Identity";User Id={object_id} |
Přidejte do parametru ConnectionString . | Žádost se provede jménem spravované identity. Aby bylo možné provést požadovanou akci, musí mít spravovaná identita odpovídající oprávnění k prostředku SQL. Pokud chcete povolit ověřování spravovaných identit, musíte do clusteru přidat spravovanou identitu a změnit zásady spravované identity. Další informace najdete v tématu Zásady spravované identity. |
Uživatelské jméno a heslo | User ID=...; Password=...; |
Přidejte do parametru ConnectionString . | Pokud je to možné, vyhněte se této metodě, protože může být méně zabezpečená. |
Přístupový token Microsoft Entra | dynamic({'token': h"eyJ0..."}) |
Přidejte do parametru Options . | Přístupový token se předává jako token vlastnost v argumentu Options modulu plug-in. |
Poznámka:
Připojovací řetězce a dotazy, které obsahují důvěrné informace nebo informace, které by měly být chráněny, by měly být vynechány z jakéhokoli trasování Kusto. Další informace najdete v obfuskovaných řetězcových literálech.
Příklady
Odeslání dotazu SQL pomocí integrovaného ověřování Microsoft Entra
Následující příklad odešle dotaz SQL do databáze Azure SQL DB. Načte všechny záznamy z [dbo].[Table]
a pak zpracuje výsledky na straně Kusto. Ověřování znovu používá token Microsoft Entra volajícího uživatele.
Poznámka:
Tento příklad by se neměl brát jako doporučení k filtrování nebo projektování dat tímto způsobem. Dotazy SQL by se měly vytvořit tak, aby vrátily nejmenší možnou datovou sadu.
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
Odeslání dotazu SQL pomocí ověřování pomocí uživatelského jména a hesla
Následující příklad je stejný jako předchozí, s tím rozdílem, že ověřování SQL se provádí pomocí uživatelského jména a hesla. Pro důvěrnost zde používáme obfuskované řetězce.
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
Odeslání dotazu SQL pomocí přístupového tokenu Microsoft Entra
Následující příklad odešle dotaz SQL do databáze Azure SQL, která načítá všechny záznamy z [dbo].[Table]
, při připojení jiného datetime
sloupce a poté zpracuje výsledky na straně Kusto.
Určuje parametr SQL (@param0
), který se má použít v dotazu SQL.
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
Odeslání dotazu SQL bez schématu výstupu definovaného dotazem
Následující příklad odešle dotaz SQL do databáze Azure SQL bez výstupního schématu. To se nedoporučuje, pokud schéma není neznámé, protože může mít vliv na výkon dotazu.
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
Ověřování šifrování a serveru
Následující vlastnosti připojení jsou vynuceny při připojování ke koncovému bodu sítě SQL Serveru z bezpečnostních důvodů.
Encrypt
je nastaven natrue
bezpodmínečně.TrustServerCertificate
je nastaven nafalse
bezpodmínečně.
V důsledku toho musí být SQL Server nakonfigurovaný s platným certifikátem serveru SSL/TLS.
Zadání koncového bodu sítě
Zadání koncového bodu sítě SQL jako součásti připojovací řetězec je povinné. Odpovídající syntaxe je:
Server
=
tcp:
Plně kvalifikovaný název domény [,
Port]
Kde:
- Plně kvalifikovaný název domény koncového bodu.
- Port je port TCP koncového bodu. Ve výchozím nastavení
1433
se předpokládá.
Poznámka:
Jiné formy zadávání koncového bodu sítě se nepodporují.
Nelze například vynechat předponu tcp:
, i když je to možné provést při programovém použití klientských knihoven SQL.