Esportare dati in SQL

Esportare i dati in SQL consente di eseguire una query e di avere i risultati inviati a una tabella in un database SQL, ad esempio un database SQL ospitato dal servizio database Azure SQL.

Autorizzazioni

Per eseguire questo comando, è necessario disporre almeno delle autorizzazioni table Amministrazione.

Sintassi

.export [async] tosqlsqlTableNamesqlConnectionString [with(propertyName=propertyValue [, ...])] <|Query

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Tipo Obbligatoria Descrizione
async string Se specificato, il comando viene eseguito in modo asincrono.
SqlTableName string ✔️ Nome della tabella di database SQL in cui inserire i dati. Per proteggere dagli attacchi iniezione, questo nome è limitato.
Sqlconnectionstring string ✔️ Stringa di connessione per l'endpoint e il database SQL. La stringa deve seguire il ADO.NET formato stringa di connessione. Per motivi di sicurezza, la stringa di connessione è limitata.
PropertyName, PropertyValue string Elenco delle proprietà facoltative.

Proprietà supportate

Nome Valori Descrizione
firetriggers true o false Se true, indica al sistema di destinazione di generare trigger INSERT definiti nella tabella SQL. Il valore predefinito è false. Per altre informazioni, vedere BULK INSERT e System.Data.SqlClient.SqlBulkCopy.
createifnotexists true o false Se true, la tabella SQL di destinazione viene creata se non esiste già. La primarykey proprietà deve essere fornita in questo caso per indicare la colonna risultato che è la chiave primaria. Il valore predefinito è false.
primarykey Se createifnotexists è true, questa proprietà indica il nome della colonna nel risultato che verrà usato come chiave primaria della tabella SQL se viene creata da questo comando.
persistDetails bool Indica che il comando deve rendere persistenti i risultati (vedere async flag). Impostazione predefinita in true esecuzioni asincrone, ma può essere disattivata se il chiamante non richiede i risultati. Impostazione predefinita in false esecuzioni sincrone, ma può essere attivata.
token string Token di accesso Microsoft Entra che Kusto inoltra all'endpoint SQL per l'autenticazione. Se impostato, l'stringa di connessione SQL non deve includere informazioni di autenticazione come Authentication, User IDo Password.

Autenticazione e autorizzazione

Il metodo di autenticazione si basa sul stringa di connessione fornito e le autorizzazioni necessarie per accedere al database SQL variano a seconda del metodo di autenticazione.

I metodi di autenticazione supportati per l'esportazione dei dati in SQL sono Microsoft Entra'autenticazione integrata (rappresentazione) e autenticazione nome utente/password. Per l'autenticazione di rappresentazione, assicurarsi che l'entità disponga delle autorizzazioni seguenti per il database:

  • Tabella esistente: UPDATE della tabella e INSERT
  • Nuova tabella: CREATE, UPDATE e INSERT

Limitazioni e restrizioni

Esistono alcune limitazioni e restrizioni durante l'esportazione dei dati in un database SQL:

  1. Kusto è un servizio cloud, quindi la stringa di connessione deve puntare a un database accessibile dal cloud. In particolare, non è possibile esportare in un database locale perché non è accessibile dal cloud pubblico.

  2. Kusto supporta l'autenticazione integrata di Active Directory quando l'entità chiamante è un'entità Microsoft Entra (aaduser= o aadapp=). In alternativa, Kusto supporta anche la fornitura delle credenziali per il database SQL come parte della stringa di connessione. Altri metodi di autenticazione non sono supportati. L'identità presentata al database SQL deriva sempre dal chiamante del comando non dall'identità del servizio Kusto stessa.

  3. Se esiste la tabella di destinazione nel database SQL, deve corrispondere allo schema dei risultati della query. Si noti che in alcuni casi (ad esempio Azure SQL Database) significa che la tabella ha una colonna contrassegnata come colonna identity.

  4. L'esportazione di grandi volumi di dati può richiedere molto tempo. È consigliabile impostare la tabella SQL di destinazione per la registrazione minima durante l'importazione bulk. Vedere motore di > database SQL Server ... > Funzionalità del database di > importazione ed esportazione bulk dei dati.

  5. L'esportazione dei dati viene eseguita tramite copia bulk SQL e non offre garanzie transazionali nel database SQL di destinazione. Vedere Operazioni di transazione e copia bulk.

  6. Il nome della tabella SQL è limitato a un nome costituito da lettere, cifre, spazi, caratteri di sottolineatura (), punti () e trattini (_.-).

  7. La stringa di connessione SQL è limitata come segue: Persist Security Info è impostata in modo esplicito falsesu , Encrypt è impostata su truee Trust Server Certificate è impostata su false.

  8. La proprietà chiave primaria nella colonna può essere specificata durante la creazione di una nuova tabella SQL. Se la colonna è di tipo string, SQL potrebbe rifiutare di creare la tabella a causa di altre limitazioni nella colonna chiave primaria. La soluzione alternativa consiste nel creare manualmente la tabella in SQL prima di esportare i dati. Il motivo di questa limitazione è che le colonne chiave primaria in SQL non possono essere di dimensioni illimitate, ma le colonne della tabella Kusto non hanno limitazioni di dimensioni dichiarate.

Documentazione di autenticazione integrata Microsoft Entra database di Azure

Esempio

In questo esempio Kusto esegue la query e quindi esporta il primo set di record prodotto dalla query nella MySqlTable tabella nel MyDatabase database nel 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)

In questo esempio Kusto esegue la query e quindi esporta il primo set di record prodotto dalla query nella MySqlTable tabella nel MyDatabase database nel server myserver. Se la tabella di destinazione non esiste nel database di destinazione, viene creata.

.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