Plug-in mysql_request

Il mysql_request plug-in invia una query SQL a un endpoint di rete del server MySQL di Azure e restituisce il primo set di righe nei risultati. La query può restituire più set di righe, ma solo il primo set di righe viene reso disponibile per il resto della query Kusto.

Il plug-in viene richiamato con l'operatore evaluate .

Importante

Il mysql_request plug-in è disabilitato per impostazione predefinita. Per abilitare il plug-in, eseguire il .enable plugin mysql_request comando . Per vedere quali plug-in sono abilitati, usare .show plugin i comandi di gestione.

Sintassi

evaluatemysql_request(Connessione ionString,SqlQuery [,SqlParameters] ) [:OutputSchema]

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Digita Obbligatorio Descrizione
ConnectionString string ✔️ Il stringa di connessione che punta all'endpoint di rete del server MySQL. Vedere Autenticazione e come specificare l'endpoint di rete.
SqlQuery string ✔️ Query da eseguire sull'endpoint SQL. Deve restituire uno o più set di righe. Solo il primo set viene reso disponibile per il resto della query.
Sqlparameters dynamic Oggetto contenitore delle proprietà che contiene coppie chiave-valore da passare come parametri insieme alla query.
OutputSchema Nomi e tipi per le colonne previste dell'output del plug-in mysql_request .

Sintassi: (ColumnName:ColumnType [, ...])

Nota

  • È consigliabile specificare OutputSchema , in quanto consente l'uso del plug-in in scenari che potrebbero altrimenti non funzionare senza di esso, ad esempio una query tra cluster. OutputSchema può anche abilitare più ottimizzazioni delle query.
  • Viene generato un errore se lo schema di runtime del primo set di righe restituito dall'endpoint di rete SQL non corrisponde allo schema OutputSchema .

Autenticazione e autorizzazione

Per autorizzare un endpoint di rete mySQL Server, è necessario specificare le informazioni di autorizzazione nel stringa di connessione. Il metodo di autorizzazione supportato è tramite nome utente e password.

Impostare i criteri di callout

Il plug-in crea callout al database MySql. Assicurarsi che i criteri di callout del cluster consentano le chiamate di tipo mysql a MySqlDbUri di destinazione.

L'esempio seguente illustra come definire i criteri di callout per i database MySQL. È consigliabile limitare i criteri di callout a endpoint specifici (my_endpoint1, my_endpoint2).

[
  {
    "CalloutType": "mysql",
    "CalloutUriRegex": "my_endpoint1\\.mysql\\.database\\.azure\\.com",
    "CanCall": true
  },
  {
    "CalloutType": "mysql",
    "CalloutUriRegex": "my_endpoint2\\.mysql\\.database\\.azure\\.com",
    "CanCall": true
  }
]

L'esempio seguente mostra un .alter callout policy comando per mysqlCalloutType:

.alter cluster policy callout @'[{"CalloutType": "mysql", "CalloutUriRegex": "\\.mysql\\.database\\.azure\\.com", "CanCall": true}]'

Autenticazione con nome utente e password

Il mysql_request plug-in supporta solo l'autenticazione di nome utente e password per l'endpoint server MySQL e non si integra con l'autenticazione di Microsoft Entra.

Il nome utente e la password vengono forniti come parte della stringa di connessione usando i parametri seguenti:

User ID=...; Password=...;

Avviso

Le informazioni riservate o protette devono essere offuscate da stringa di connessione e query in modo che vengano omesse da qualsiasi traccia Kusto. Per altre informazioni, vedere Valori letterali stringa offuscati.

Crittografia e convalida del server

Per la sicurezza, SslMode è impostato in modo incondizionato su Required quando ci si connette a un endpoint di rete del server MySQL. Di conseguenza, il server deve essere configurato con un certificato server SSL/TLS valido.

Specificare l'endpoint di rete

Specificare l'endpoint di rete MySQL come parte del stringa di connessione.

Sintassi:

Server=FQDN [Port=Porta]

Dove:

  • FQDN è il nome di dominio completo dell'endpoint.
  • La porta è la porta TCP dell'endpoint. Per impostazione predefinita, 3306 si presuppone.

Esempi

Query SQL nel database MySQL di Azure

L'esempio seguente invia una query SQL a un database MySQL di Azure. Recupera tutti i record da [dbo].[Table]e quindi elabora i risultati.

Nota

Questo esempio non deve essere considerato come raccomandazione per filtrare o proiettare i dati in questo modo. Le query SQL devono essere costruite per restituire il set di dati più piccolo possibile.

evaluate mysql_request(
    'Server=contoso.mysql.database.azure.com; Port = 3306;'
    'Database=Fabrikam;'
    h'UID=USERNAME;'
    h'Pwd=PASSWORD;',
    'select * from `dbo`.`Table`') : (Id: int, Name: string)
| where Id > 0
| project Name

Query SQL in un database MySQL di Azure con modifiche

L'esempio seguente invia una query SQL a un database MySQL di Azure che recupera tutti i record da [dbo].[Table], aggiungendo un'altra datetime colonna e quindi elabora i risultati sul lato Kusto. Specifica un parametro SQL (@param0) da usare nella query SQL.

evaluate mysql_request(
    'Server=contoso.mysql.database.azure.com; Port = 3306;'
    'Database=Fabrikam;'
    h'UID=USERNAME;'
    h'Pwd=PASSWORD;',
    '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

Query SQL in un database MySQL di Azure senza uno schema di output definito da query

L'esempio seguente invia una query SQL a un database MySQL di Azure senza uno schema di output. Questa operazione non è consigliata a meno che lo schema non sia sconosciuto, perché può influire sulle prestazioni della query.

evaluate mysql_request(
    'Server=contoso.mysql.database.azure.com; Port = 3306;'
    'Database=Fabrikam;'
    h'UID=USERNAME;'
    h'Pwd=PASSWORD;',
    'select * from `dbo`.`Table`')
| where Id > 0
| project Name

Questa funzionalità non è supportata in Monitoraggio di Azure.