Sdílet prostřednictvím


Export dat do SQL

Export dat do SQL umožňuje spustit dotaz a nechat výsledky odeslané do tabulky v databázi SQL, jako je databáze SQL hostovaná službou Azure SQL Database.

Oprávnění

Ke spuštění tohoto příkazu musíte mít alespoň oprávnění správce tabulky.

Syntaxe

.export[async] to sql sqlTableName sqlConnectionString [with (propertyName = propertyValue [, ...]] <| )dotaz

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Type Požadováno Popis
async string Pokud je zadaný, příkaz se spustí asynchronně.
SqlTableName string ✔️ Název tabulky databáze SQL, do které chcete vložit data. Pro ochranu před útoky prostřednictvím injektáže je tento název omezený.
SqlConnectionString string ✔️ Připojovací řetězec pro koncový bod a databázi SQL. Řetězec musí odpovídat ADO.NET formátu připojovací řetězec. Z bezpečnostních důvodů je připojovací řetězec omezeno.
PropertyName, PropertyValue string Seznam volitelných vlastností

Podporované vlastnosti

Název Hodnoty Popis
firetriggers true nebo false Pokud true, dává cílovému systému pokyn, aby aktivoval triggery INSERT definované v tabulce SQL. Výchozí hodnota je false. Další informace naleznete v tématu BULK INSERT a System.Data.SqlClient.SqlBulkCopy.
createifnotexists true nebo false Pokud trueje cílová tabulka SQL vytvořená, pokud ještě neexistuje; primarykey vlastnost musí být v tomto případě uvedena, aby bylo možné určit výsledný sloupec, který je primárním klíčem. Výchozí hodnota je false.
primarykey Pokud createifnotexists ano true, tato vlastnost označuje název sloupce ve výsledku, který se použije jako primární klíč tabulky SQL, pokud je vytvořen tímto příkazem.
persistDetails bool Označuje, že příkaz by měl zachovat výsledky (viz async příznak). Výchozí nastavení true je v asynchronních spuštěních, ale je možné ho vypnout, pokud volající nevyžaduje výsledky). Výchozí hodnota false je v synchronních spuštěních, ale je možné ji zapnout.
token string Přístupový token Microsoft Entra, který Kusto předá koncovému bodu SQL pro ověřování. Při nastavení by připojovací řetězec SQL neměl obsahovat ověřovací informace, jako je Authentication, User IDnebo Password.

Ověřování a autorizace

Metoda ověřování je založená na zadaném připojovací řetězec a oprávnění potřebná pro přístup k databázi SQL se liší v závislosti na metodě ověřování.

Podporované metody ověřování pro export dat do SQL jsou ověřování Microsoft Entra integrované (zosobnění) a ověřování pomocí uživatelského jména a hesla. Pro ověřování zosobnění se ujistěte, že objekt zabezpečení má v databázi následující oprávnění:

  • Existující tabulka: UPDATE a INSERT
  • Nová tabulka: CREATE, UPDATE a INSERT

Poznámka:

Pokud je to možné, upřednostňovanou metodou ověřování je integrované ověřování Microsoft Entra (zosobnění).

Limity a omezení

Při exportu dat do databáze SQL existují určitá omezení a omezení:

  1. Kusto je cloudová služba, takže připojovací řetězec musí odkazovat na databázi, která je přístupná z cloudu. (Konkrétně se nedá exportovat do místní databáze, protože není přístupný z veřejného cloudu.)

  2. Kusto podporuje integrované ověřování služby Active Directory, pokud je volajícím instančním objektem instanční objekt (aaduser= nebo aadapp=). Kusto také podporuje poskytnutí přihlašovacích údajů pro databázi SQL jako součást připojovací řetězec. Jiné metody ověřování se nepodporují. Identita, která se prezentuje do databáze SQL, vždy vychází z volajícího příkazu, nikoli samotné identity služby Kusto.

  3. Pokud cílová tabulka v databázi SQL existuje, musí odpovídat schématu výsledků dotazu. Všimněte si, že v některých případech (například Azure SQL Database) znamená, že tabulka má jeden sloupec označený jako sloupec identity.

  4. Export velkých objemů dat může trvat delší dobu. Doporučuje se nastavit cílovou tabulku SQL pro minimální protokolování během hromadného importu. Viz databázový stroj > SQL Serveru ... > Funkce > databáze – Hromadný import a export dat

  5. Export dat se provádí pomocí hromadného kopírování SQL a neposkytuje žádné transakční záruky cílové databáze SQL. Viz Operace transakcí a hromadného kopírování.

  6. Název tabulky SQL je omezen na název skládající se z písmen, číslic, mezer, podtržítka (_), tečk (.) a pomlček (-).

  7. Sql připojovací řetězec je omezena následujícím způsobem: Persist Security Info je explicitně nastavena na false, Encrypt je nastavena na truea Trust Server Certificate je nastavena na false.

  8. Vlastnost primárního klíče ve sloupci lze zadat při vytváření nové tabulky SQL. Pokud je sloupec typu string, sql může odmítnout vytvořit tabulku kvůli jiným omezením sloupce primárního klíče. Alternativním řešením je ruční vytvoření tabulky v SQL před exportem dat. Důvodem tohoto omezení je, že sloupce primárního klíče v SQL nemohou mít neomezenou velikost, ale sloupce tabulky Kusto nemají žádná deklarovaná omezení velikosti.

Dokumentace k integrovanému ověřování Azure DB Microsoft Entra

Příklady

V tomto příkladu Kusto spustí dotaz a pak exportuje první sadu záznamů vytvořenou dotazem do MySqlTable tabulky v MyDatabase databázi na serveru 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)

V tomto příkladu Kusto spustí dotaz a pak exportuje první sadu záznamů vytvořenou dotazem do MySqlTable tabulky v MyDatabase databázi na serveru myserver. Pokud cílová tabulka v cílové databázi neexistuje, vytvoří se.

.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