.export naar SQL
Van toepassing op: ✅Microsoft Fabric✅Azure Data Explorer-
Als u gegevens naar SQL exporteert, kunt u een query uitvoeren en de resultaten laten verzenden naar een tabel in een SQL-database, zoals een SQL-database die wordt gehost door de Azure SQL Database-service.
Machtigingen
U moet ten minste machtigingen voor tabelbeheerder hebben om deze opdracht uit te voeren.
Syntaxis
.export
[async
] to
sql
sqlTableNamesqlConnectionString [with
(
propertyName=
propertyValue [,
...])
] <|
query
Meer informatie over syntaxisconventies.
Parameters
Naam | Type | Vereist | Beschrijving |
---|---|---|---|
async |
string |
Indien opgegeven, wordt de opdracht asynchroon uitgevoerd. | |
SqlTableName- | string |
✔️ | De naam van de SQL-databasetabel waarin de gegevens moeten worden ingevoegd. Ter bescherming tegen injectieaanvallen is deze naam beperkt. |
SqlConnectionString- | string |
✔️ | De verbindingsreeks voor het SQL-eindpunt en de database. De tekenreeks moet de ADO.NET verbindingsreeksindeling volgen. Om veiligheidsredenen is de verbindingsreeks beperkt. |
PropertyName, PropertyValue | string |
Een lijst met optionele eigenschappen. |
Ondersteunde eigenschappen
Naam | Waarden | Beschrijving |
---|---|---|
firetriggers |
true of false |
Als true , geeft u het doelsysteem opdracht om INSERT-triggers te activeren die zijn gedefinieerd in de SQL-tabel. De standaardwaarde is false . Zie BULK INSERT en System.Data.SqlClient.SqlBulkCopyvoor meer informatie. |
createifnotexists |
true of false |
Als true , wordt de doel-SQL-tabel gemaakt als deze nog niet bestaat; de eigenschap primarykey moet in dit geval worden opgegeven om de resultaatkolom aan te geven die de primaire sleutel is. De standaardwaarde is false . |
primarykey |
Als createifnotexists is true , geeft deze eigenschap de naam van de kolom aan in het resultaat dat wordt gebruikt als de primaire sleutel van de SQL-tabel als deze door deze opdracht wordt gemaakt. |
|
persistDetails |
bool |
Geeft aan dat de opdracht de resultaten moet behouden (zie async vlag). Standaard wordt true in asynchrone uitvoeringen, maar kan worden uitgeschakeld als de beller de resultaten niet nodig heeft. Standaard wordt false in synchrone uitvoeringen, maar kan worden ingeschakeld. |
token |
string |
Het Microsoft Entra-toegangstoken dat Kusto doorstuurt naar het SQL-eindpunt voor verificatie. Wanneer deze is ingesteld, mag de SQL-verbindingsreeks geen verificatiegegevens bevatten, zoals Authentication , User ID of Password . |
Verificatie en autorisatie
De verificatiemethode is gebaseerd op de opgegeven verbindingsreeks en de benodigde machtigingen voor toegang tot de SQL-database variëren, afhankelijk van de verificatiemethode.
De ondersteunde verificatiemethoden voor het exporteren van gegevens naar SQL zijn geïntegreerde verificatie van Microsoft Entra en verificatie van gebruikersnaam en wachtwoord. Voor imitatieverificatie moet u ervoor zorgen dat de principal de volgende machtigingen heeft voor de database:
- Bestaande tabel: tabel UPDATE en INSERT
- Nieuwe tabel: MAKEN, BIJWERKEN en INVOEGEN
Notitie
Waar mogelijk is microsoft Entra geïntegreerde verificatie (imitatie) de voorkeursmethode voor verificatie.
Beperkingen en beperkingen
Er zijn enkele beperkingen en beperkingen bij het exporteren van gegevens naar een SQL-database:
Kusto is een cloudservice, dus de verbindingsreeks moet verwijzen naar een database die toegankelijk is vanuit de cloud. (Het is met name niet mogelijk om te exporteren naar een on-premises database, omdat deze niet toegankelijk is vanuit de openbare cloud.)
Kusto ondersteunt geïntegreerde Active Directory-verificatie wanneer de aanroepende principal een Microsoft Entra-principal (
aaduser=
ofaadapp=
) is. Kusto biedt ook ondersteuning voor het opgeven van de referenties voor de SQL-database als onderdeel van de verbindingsreeks. Andere verificatiemethoden worden niet ondersteund. De identiteit die aan de SQL-database wordt gepresenteerd, komt altijd voort uit de opdrachtoproeper, niet de Kusto-service-identiteit zelf.Als de doeltabel in de SQL-database bestaat, moet deze overeenkomen met het queryresultaatschema. In sommige gevallen, zoals Azure SQL Database, betekent dit dat de tabel één kolom heeft die is gemarkeerd als een identiteitskolom.
Het exporteren van grote hoeveelheden gegevens kan lang duren. Het is raadzaam dat de doel-SQL-tabel is ingesteld voor minimale logboekregistratie tijdens het bulksgewijs importeren. Zie SQL Server Database Engine > ... > databasefuncties > bulksgewijs importeren en exporteren van gegevens.
Gegevensexport wordt uitgevoerd met behulp van SQL-bulkkopie en biedt geen transactionele garanties voor de DOEL-SQL-database. Zie transactie- en bulkkopiebewerkingen.
De naam van de SQL-tabel is beperkt tot een naam die bestaat uit letters, cijfers, spaties, onderstrepingstekens (
_
), puntjes (.
) en afbreekstreepjes (-
).De SQL-verbindingsreeks is als volgt beperkt:
Persist Security Info
expliciet is ingesteld opfalse
,Encrypt
is ingesteld optrue
enTrust Server Certificate
is ingesteld opfalse
.De eigenschap primaire sleutel in de kolom kan worden opgegeven bij het maken van een nieuwe SQL-tabel. Als de kolom van het type
string
is, kan SQL weigeren om de tabel te maken vanwege andere beperkingen voor de primaire-sleutelkolom. De tijdelijke oplossing is het handmatig maken van de tabel in SQL voordat u de gegevens exporteert. Deze beperking bestaat omdat primaire-sleutelkolommen in SQL geen onbeperkte grootte kunnen hebben, maar Kusto-tabelkolommen hebben geen gedeclareerde groottebeperkingen.
Documentatie voor geïntegreerde verificatie voor Microsoft Entra in Azure Database
Voorbeelden
Asynchrone export naar SQL-tabel
In het volgende voorbeeld voert Kusto de query uit en exporteert vervolgens de eerste recordset die door de query is geproduceerd naar de MySqlTable
tabel in de MyDatabase
-database in 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)
Exporteren naar SQL-tabel als deze niet bestaat
In het volgende voorbeeld voert Kusto de query uit en exporteert vervolgens de eerste recordset die door de query is geproduceerd naar de MySqlTable
tabel in de MyDatabase
-database in server myserver
.
De doeltabel wordt gemaakt als deze niet bestaat in de doeldatabase.
.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