Condividi tramite


Esportare dati in SQL

L'esportazione di dati in SQL consente di eseguire una query e di inviare i risultati a una tabella in un database SQL, ad esempio un database SQL ospitato dal servizio database SQL di Azure.

Autorizzazioni

Per eseguire questo comando, è necessario disporre almeno delle autorizzazioni di amministratore tabella .

Sintassi

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

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Digita Obbligatorio 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 proteggersi dagli attacchi injection, questo nome è limitato.
SqlConnectionString string ✔️ Il 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 di proprietà facoltative.

Proprietà supportate

Nome Valori Descrizione
firetriggers true oppure false Se true, indica al sistema di destinazione di attivare trigger INSERT definiti nella tabella SQL. Il valore predefinito è false. Per altre informazioni, vedere BULK INSERT e System.Data.SqlClient.SqlBulkCopy.
createifnotexists true oppure false Se true, la tabella SQL di destinazione viene creata se non esiste già. La primarykey proprietà deve essere specificata in questo caso per indicare la colonna del 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 creato da questo comando.
persistDetails bool Indica che il comando deve rendere persistenti i risultati (vedere async flag). L'impostazione predefinita è true in esecuzione asincrona, ma può essere disattivata se il chiamante non richiede i risultati. L'impostazione predefinita è false in esecuzioni sincrone, ma può essere attivata.
token string Token di accesso Di Microsoft Entra che Kusto inoltra all'endpoint SQL per l'autenticazione. Se impostato, il 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 l'autenticazione integrata di Microsoft Entra (rappresentazione) e l'autenticazione nome utente/password. Per l'autenticazione di rappresentazione, assicurarsi che l'entità disponga delle autorizzazioni seguenti per il database:

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

Nota

Se possibile, il metodo di autenticazione preferito è l'autenticazione integrata (rappresentazione) di Microsoft Entra.

Limitazioni e restrizioni

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

  1. Kusto è un servizio cloud, quindi l'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 del 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 la tabella di destinazione nel database SQL esiste, deve corrispondere allo schema dei risultati della query. Si noti che in alcuni casi, ad esempio database SQL di Azure, 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 SQL Server motore di database > ... > Funzionalità > di database: importazione ed esportazione bulk dei dati.

  5. L'esportazione dei dati viene eseguita usando la copia bulk di SQL e non offre alcuna garanzia transazionale nel database SQL di destinazione. Vedere Transazioni e operazioni di copia bulk.

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

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

  8. È possibile specificare la proprietà chiave primaria nella colonna 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 dimensione dichiarate.

Documentazione relativa all'autenticazione integrata di Microsoft Entra di Database di Azure

Esempi

In questo esempio Kusto esegue la query e quindi esporta il primo set di record generato 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 generato 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