Partager via


mysql_request, plug-in

Le plug-in mysql_request envoie une requête SQL à un point de terminaison réseau MySQL Server et retourne le premier ensemble de lignes des résultats. La requête peut retourner plusieurs ensembles de lignes, mais seul le premier ensemble de lignes est disponible pour le reste de la requête Kusto.

Le plug-in est appelé avec l’opérateur evaluate .

Important

Le mysql_request plug-in est désactivé par défaut. Pour activer le plug-in, exécutez la .enable plugin mysql_request commande . Pour voir quels plug-ins sont activés, utilisez.show plugin des commandes de gestion.

Syntax

evaluatemysql_request(Connectionstring,SqlQuery [,SqlParameters] ) [:OutputSchema]

Découvrez les conventions de syntaxe.

Paramètres

Nom Type Obligatoire Description
ConnectionString string ✔️ Le chaîne de connexion qui pointe vers le point de terminaison réseau MySQL Server. Consultez Authentification et comment spécifier le point de terminaison réseau.
SqlQuery string ✔️ Requête à exécuter sur le point de terminaison SQL. Doit retourner un ou plusieurs jeux de lignes. Seul le premier jeu est mis à disposition pour le reste de la requête.
SqlParameters dynamic Objet de conteneur de propriétés qui contient des paires clé-valeur à passer en tant que paramètres avec la requête.
OutputSchema Noms et types pour les colonnes attendues de la sortie du mysql_request plug-in.

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

Notes

  • La spécification de OutputSchema est fortement recommandée, car elle permet d’utiliser le plug-in dans des scénarios qui pourraient autrement ne pas fonctionner sans lui, comme une requête inter-cluster. OutputSchema peut également activer plusieurs optimisations de requête.
  • Une erreur est générée si le schéma d’exécution du premier jeu de lignes retourné par le point de terminaison réseau SQL ne correspond pas au schéma OutputSchema .

Authentification et autorisation

Pour autoriser un point de terminaison réseau MySQL Server, vous devez spécifier les informations d’autorisation dans le chaîne de connexion. La méthode d’autorisation prise en charge est via le nom d’utilisateur et le mot de passe.

Définir la stratégie de légende

Le plug-in effectue des légendes dans la base de données MySql. Assurez-vous que la stratégie de légende du cluster active les appels de type mysql vers le MySqlDbUri cible.

L’exemple suivant montre comment définir la stratégie de légende pour les bases de données MySQL. Nous vous recommandons de limiter la stratégie de légende à des points de terminaison spécifiques (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’exemple suivant montre une .alter callout policy commande pour mysqlCalloutType :

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

Authentification par nom d'utilisateur et mot de passe

Le mysql_request plug-in prend uniquement en charge l’authentification de nom d’utilisateur et de mot de passe sur le point de terminaison du serveur MySQL et ne s’intègre pas à Microsoft Entra authentification.

Le nom d’utilisateur et le mot de passe sont fournis dans le cadre de la chaîne de connexion à l’aide des paramètres suivants :

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

Avertissement

Les informations confidentielles ou protégée doivent être masquées des chaînes de connexion et des requêtes afin qu’elles soient omises de tout suivi Kusto. Pour plus d’informations, consultez Littéraux de chaîne obfusqués.

Chiffrement et validation du serveur

Pour la sécurité, SslMode est défini de manière inconditionnelle sur Required lors de la connexion à un point de terminaison réseau de serveur MySQL. Par conséquent, le serveur doit être configuré avec un certificat de serveur SSL/TLS valide.

Spécifier le point de terminaison réseau

Spécifiez le point de terminaison réseau MySQL dans le cadre du chaîne de connexion.

Syntaxe :

Server=Nom de domaine complet [Port=Port]

Où :

  • FQDN est le nom de domaine complet du point de terminaison.
  • Port est le port TCP du point de terminaison. Par défaut, la valeur 3306 est supposée.

Exemples

Requête SQL vers Azure MySQL DB

L’exemple suivant envoie une requête SQL à une base de données Azure MySQL. Il récupère tous les enregistrements à partir de [dbo].[Table], puis traite les résultats.

Notes

Cet exemple ne doit pas être considéré comme une recommandation de filtrage ou de projet des données de cette manière. Les requêtes SQL doivent être construites pour retourner le plus petit jeu de données possible.

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

Requête SQL vers une base de données Azure MySQL avec des modifications

L’exemple suivant envoie une requête SQL à une base de données Azure MySQL récupérant tous les enregistrements à partir de [dbo].[Table], tout en ajoutant une autre datetime colonne, puis traite les résultats côté Kusto. Il spécifie un paramètre SQL (@param0) à utiliser dans la requête 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

Requête SQL vers une base de données Azure MySQL sans schéma de sortie défini par la requête

L’exemple suivant envoie une requête SQL à une base de données Azure MySQL sans schéma de sortie. Cela n’est pas recommandé, sauf si le schéma est inconnu, car il peut avoir un impact sur les performances de la requête.

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

Cette fonctionnalité n’est pas prise en charge dans Azure Monitor.