Partager via


Exporter des données dans SQL

S’applique à : ✅Microsoft Fabric✅Azure Data Explorer

L’exportation de données vers SQL vous permet d’exécuter une requête et d’envoyer ses résultats à une table dans une base de données SQL, telle qu’une base de données SQL hébergée par le service Azure SQL Database.

autorisations

Vous devez disposer au moins des autorisations d’administrateur de table pour exécuter cette commande.

Syntaxe

.export[async] tosqlsqlTableNamesqlConnectionString [with(propertyName= propertyValue [, ...]] )<|requête

En savoir plus sur les conventions de syntaxe.

Paramètres

Nom Type Requise Description
async string Si elle est spécifiée, la commande s’exécute de manière asynchrone.
SqlTableName string ✔️ Nom de la table de base de données SQL dans laquelle insérer les données. Pour vous protéger contre les attaques par injection, ce nom est restreint.
SqlConnectionString string ✔️ Chaîne de connexion pour le point de terminaison et la base de données SQL. La chaîne doit suivre le ADO.NET format chaîne de connexion. Pour des raisons de sécurité, le chaîne de connexion est limité.
PropertyName, PropertyValue string Liste des propriétés facultatives.

Propriétés prises en charge

Nom Valeurs Description
firetriggers true ou false Si true, indique au système cible de déclencher des déclencheurs INSERT définis sur la table SQL. Par défaut, il s’agit de false. Pour plus d’informations, consultez BULK INSERT et System.Data.SqlClient.SqlBulkCopy.
createifnotexists true ou false Si true, la table SQL cible est créée s’il n’existe pas déjà ; la primarykey propriété doit être fournie dans ce cas pour indiquer la colonne de résultat qui est la clé primaire. Par défaut, il s’agit de false.
primarykey Si createifnotexists est true, cette propriété indique le nom de la colonne dans le résultat utilisé comme clé primaire de la table SQL si elle est créée par cette commande.
persistDetails bool Indique que la commande doit conserver ses résultats (voir async l’indicateur). Par défaut, les exécutions asynchrones peuvent être désactivées true si l’appelant ne nécessite pas les résultats. La valeur par défaut est false dans les exécutions synchrones, mais peut être activée.
token string Jeton d’accès Microsoft Entra que Kusto transfère au point de terminaison SQL pour l’authentification. Quand elle est définie, la chaîne de connexion SQL ne doit pas inclure d’informations d’authentification telles que Authentication, User IDou Password.

Authentification et autorisation

La méthode d’authentification est basée sur les chaîne de connexion fournies, et les autorisations requises pour accéder à la base de données SQL varient en fonction de la méthode d’authentification.

Les méthodes d’authentification prises en charge pour l’exportation de données vers SQL sont l’authentification intégrée microsoft Entra (emprunt d’identité) et l’authentification par nom d’utilisateur/mot de passe. Pour l’authentification d’emprunt d’identité, assurez-vous que le principal dispose des autorisations suivantes sur la base de données :

  • Table existante : table UPDATE et INSERT
  • Nouvelle table : CREATE, UPDATE et INSERT

Remarque

Dans la mesure du possible, la méthode d’authentification préférée est l’authentification intégrée microsoft Entra (emprunt d’identité).

Limitations et restrictions

Il existe certaines limitations et restrictions lors de l’exportation de données vers une base de données SQL :

  1. Kusto est un service cloud. Le chaîne de connexion doit donc pointer vers une base de données accessible à partir du cloud. (En particulier, il n’est pas possible d’exporter vers une base de données locale, car elle n’est pas accessible à partir du cloud public.)

  2. Kusto prend en charge l’authentification intégrée Active Directory lorsque le principal appelant est un principal Microsoft Entra (aaduser= ou aadapp=). Kusto prend également en charge la fourniture des informations d’identification pour la base de données SQL dans le cadre de la chaîne de connexion. Les autres méthodes d’authentification ne sont pas prises en charge. L’identité présentée à la base de données SQL émane toujours de l’appelant de commande et non de l’identité du service Kusto elle-même.

  3. Si la table cible de la base de données SQL existe, elle doit correspondre au schéma de résultat de la requête. Dans certains cas, comme Azure SQL Database, cela signifie que la table a une colonne marquée comme colonne d’identité.

  4. L’exportation de gros volumes de données peut prendre beaucoup de temps. Il est recommandé que la table SQL cible soit définie pour une journalisation minimale lors de l’importation en bloc. Voir SQL Server Moteur de base de données > ... > Fonctionnalités > de base de données Importation et exportation en bloc de données.

  5. L’exportation de données est effectuée à l’aide de la copie en bloc SQL et ne fournit aucune garantie transactionnelle sur la base de données SQL cible. Consultez les opérations de transaction et de copie en bloc.

  6. Le nom de la table SQL est limité à un nom composé de lettres, de chiffres, d’espaces, de traits de soulignement (_), de points (.) et de traits d’union (-).

  7. Le chaîne de connexion SQL est limité comme suit : Persist Security Info est défini explicitement falsesur , Encrypt est défini truesur , et Trust Server Certificate est défini sur false.

  8. La propriété de clé primaire de la colonne peut être spécifiée lors de la création d’une table SQL. Si la colonne est de type string, SQL peut refuser de créer la table en raison d’autres limitations sur la colonne clé primaire. La solution de contournement consiste à créer manuellement la table dans SQL avant d’exporter les données. Cette limitation existe, car les colonnes clés primaires dans SQL ne peuvent pas être de taille illimitée, mais les colonnes de table Kusto n’ont pas de limitations de taille déclarées.

Documentation sur l’authentification intégrée Microsoft Entra de base de données Azure

Exemples

Exportation asynchrone vers une table SQL

Dans l’exemple suivant, Kusto exécute la requête, puis exporte le premier jeu d’enregistrements produit par la requête vers la table MySqlTable dans la base de données MyDatabase dans le serveur myserver.

.export async to sql MySqlTable
    h@"Server=tcp:myserver.database.windows.net,1433;Authentication=Active Directory Integrated;Initial Catalog=MyDatabase;Connection Timeout=30;"
    <| print Id="d3b68d12-cbd3-428b-807f-2c740f561989", Name="YSO4", DateOfBirth=datetime(2017-10-15)

Exporter vers une table SQL s’il n’existe pas

Dans l’exemple suivant, Kusto exécute la requête, puis exporte le premier jeu d’enregistrements produit par la requête vers la table MySqlTable dans la base de données MyDatabase dans le serveur myserver. La table cible est créée s’il n’existe pas dans la base de données cible.

.export async to sql ['dbo.MySqlTable']
    h@"Server=tcp:myserver.database.windows.net,1433;Authentication=Active Directory Integrated;Initial Catalog=MyDatabase;Connection Timeout=30;"
    with (createifnotexists="true", primarykey="Id")
    <| print Message = "Hello World!", Timestamp = now(), Id=12345678