Dela via


.export till SQL

Gäller för: ✅Microsoft FabricAzure Data Explorer

Om du exporterar data till SQL kan du köra en fråga och få resultatet skickat till en tabell i en SQL-databas, till exempel en SQL-databas som hanteras av Azure SQL Database-tjänsten.

Behörigheter

Du måste ha minst tabelladministratör behörigheter för att köra det här kommandot.

Syntax

.export [async] tosqlsqlTableNamesqlConnectionString [with(propertyName=propertyValue [, ...])] <|fråga

Läs mer om syntaxkonventioner.

Parametrar

Namn Typ Krävs Beskrivning
async string Om det anges körs kommandot asynkront.
SqlTableName string ✔️ Namnet på sql-databastabellen som data ska infogas i. För att skydda mot inmatningsattacker är det här namnet begränsat.
SqlConnectionString string ✔️ Anslutningssträngen för SQL-slutpunkten och databasen. Strängen måste följa ADO.NET anslutningssträngformat. Av säkerhetsskäl är anslutningssträngen begränsad.
PropertyName, PropertyValue string En lista över valfria egenskaper.

Egenskaper som stöds

Namn Värden Beskrivning
firetriggers true eller false Om trueinstruerar du målsystemet att utlösa INSERT-utlösare som definierats i SQL-tabellen. Standardvärdet är false. Mer information finns i BULK INSERT- och System.Data.SqlClient.SqlBulkCopy.
createifnotexists true eller false Om trueskapas SQL-måltabellen om den inte redan finns. egenskapen primarykey måste anges i det här fallet för att ange den resultatkolumn som är primärnyckeln. Standardvärdet är false.
primarykey Om createifnotexists är trueanger den här egenskapen namnet på kolumnen i resultatet som används som SQL-tabellens primära nyckel om den skapas av det här kommandot.
persistDetails bool Anger att kommandot ska spara sina resultat (se async flagga). Standardvärdet är true i asynkrona körningar, men kan inaktiveras om anroparen inte kräver resultatet. Standardvärdet är att false i synkrona körningar, men kan aktiveras.
token string Microsoft Entra-åtkomsttoken som Kusto vidarebefordrar till SQL-slutpunkten för autentisering. När den är inställd ska SQL-anslutningssträngen inte innehålla autentiseringsinformation som Authentication, User IDeller Password.

Autentisering och auktorisering

Autentiseringsmetoden baseras på den angivna anslutningssträngen och de behörigheter som krävs för att komma åt SQL-databasen varierar beroende på autentiseringsmetoden.

De autentiseringsmetoder som stöds för att exportera data till SQL är Microsoft Entra-integrerad autentisering (personifiering) och användarnamn/lösenordsautentisering. För personifieringsautentisering kontrollerar du att huvudkontot har följande behörigheter för databasen:

  • Befintlig tabell: tabellUPPDATERING och INSERT
  • Ny tabell: CREATE, UPDATE och INSERT

Not

Där det är möjligt är den föredragna autentiseringsmetoden Microsoft Entra-integrerad (personifiering) autentisering.

Begränsningar och begränsningar

Det finns vissa begränsningar när du exporterar data till en SQL-databas:

  1. Kusto är en molntjänst, så anslutningssträngen måste peka på en databas som är tillgänglig från molnet. (I synnerhet kan man inte exportera till en lokal databas eftersom den inte är tillgänglig från det offentliga molnet.)

  2. Kusto stöder Active Directory-integrerad autentisering när det anropande huvudnamnet är ett Microsoft Entra-huvudnamn (aaduser= eller aadapp=). Kusto har också stöd för att ange autentiseringsuppgifterna för SQL-databasen som en del av anslutningssträngen. Andra autentiseringsmetoder stöds inte. Identiteten som presenteras för SQL-databasen kommer alltid från kommandoanroparen, inte själva Kusto-tjänstidentiteten.

  3. Om måltabellen i SQL-databasen finns måste den matcha frågeresultatschemat. I vissa fall, till exempel Azure SQL Database, innebär det att tabellen har en kolumn markerad som en identitetskolumn.

  4. Det kan ta lång tid att exportera stora mängder data. Vi rekommenderar att SQL-måltabellen anges för minimal loggning under massimport. Se SQL Server Database Engine > ... > Database Features > Massimport och export av data.

  5. Dataexport utförs med sql-masskopiering och ger inga transaktionsgarantier för SQL-måldatabasen. Se transaktions- och masskopieringsåtgärder.

  6. SQL-tabellnamnet är begränsat till ett namn som består av bokstäver, siffror, blanksteg, understreck (_), punkter (.) och bindestreck (-).

  7. SQL-anslutningssträngen är begränsad på följande sätt: Persist Security Info anges uttryckligen till false, Encrypt är inställd på trueoch Trust Server Certificate är inställd på false.

  8. Primärnyckelegenskapen i kolumnen kan anges när du skapar en ny SQL-tabell. Om kolumnen är av typen stringkan SQL vägra att skapa tabellen på grund av andra begränsningar i primärnyckelkolumnen. Lösningen är att manuellt skapa tabellen i SQL innan du exporterar data. Den här begränsningen finns eftersom primärnyckelkolumner i SQL inte kan vara av obegränsad storlek, men Kusto-tabellkolumner har inte deklarerat storleksbegränsningar.

Dokumentation om Microsoft Entra-integrerad autentisering i Azure Database

Exempel

Asynkron export till SQL-tabell

I följande exempel kör Kusto frågan och exporterar sedan den första postuppsättningen som skapas av frågan till tabellen MySqlTable i MyDatabase-databasen i server 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)

Exportera till SQL-tabellen om den inte finns

I följande exempel kör Kusto frågan och exporterar sedan den första postuppsättningen som skapas av frågan till tabellen MySqlTable i MyDatabase-databasen i server myserver. Måltabellen skapas om den inte finns i måldatabasen.

.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