Esportare dati in SQLExport data to SQLExport data to SQL

L'esportazione dei 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.Export data to SQL it allows you to run a query and have its results sent to a table in a SQL database, such as a SQL database hosted by the Azure SQL Database service.Export data to SQL allows you to run a query and have its results sent to a table in a SQL database, such as a SQL database hosted by the Azure SQL Database service.

SintassiSyntax

.export[async to sql ] SqlTableName SqlConnectionString with ([ PropertyName = PropertyValue,... )] <| Interrogazione.export [async] to sql SqlTableName SqlConnectionString [with (PropertyName = PropertyValue,...)] <| Query

Dove:Where:

  • async: il comando viene eseguito in modalità asincrona (facoltativo).async: Command runs in asynchronous mode (optional).
  • SqlTableName (NomeTabella) Nome della tabella del database SQL in cui vengono inseriti i dati.SqlTableName SQL database table name where the data is inserted. Per proteggersi dagli attacchi di iniezione, questo nome è limitato.To protect against injection attacks, this name is restricted.
  • SqlConnectionString è string un valore ADO.NET letterale che segue il formato della stringa di connessione e descrive l'endpoint SQL e il database a cui ci si connette.SqlConnectionString is a string literal that follows the ADO.NET connection string format and describes the SQL endpoint and database to which you connect. Per motivi di sicurezza, la stringa di connessione è limitata.For security reasons, the connection string is restricted.
  • ProprietàNome, ValoreProprietà sono coppie di un nome (identificatore) e di un valore (valore letterale stringa).PropertyName, PropertyValue are pairs of a name (identifier) and a value (string literal).

Proprietà:Properties:

NomeName ValoriValues DescrizioneDescription
firetriggers true o falsetrue or false Se true, indica al sistema di destinazione di attivare i trigger INSERT definiti nella tabella SQL.If true, instructs the target system to fire INSERT triggers defined on the SQL table. Il valore predefinito è false.The default is false. Per ulteriori informazioni, vedere BULK INSERT e System.Data.SqlClient.SqlBulkCopy)(For more information see BULK INSERT and System.Data.SqlClient.SqlBulkCopy)
createifnotexists true o falsetrue or false Se true, verrà creata la tabella SQL di destinazione se non esiste già; la primarykey proprietà deve essere fornita in questo caso per indicare la colonna del risultato che è la chiave primaria.If true, the target SQL table will be created if it doesn't already exist; the primarykey property must be provided in this case to indicate the result column which is the primary key. Il valore predefinito è false.The default is false.
primarykey Se createifnotexists trueè , indica il nome della colonna nel risultato che verrà utilizzato come chiave primaria della tabella SQL se viene creato da questo comando.If createifnotexists is true, indicates the name of the column in the result that will be used as the SQL table's primary key if it is created by this command.
persistDetails bool Indica che il comando deve mantenere async i risultati (vedere flag).Indicates that the command should persist its results (see async flag). Il valore true predefinito è nelle esecuzioni asincrone, ma può essere disattivato se il chiamante non richiede i risultati.Defaults to true in async runs, but can be turned off if the caller doesn't require the results). Il valore false predefinito è nelle esecuzioni sincrone, ma può essere attivato.Defaults to false in synchronous executions, but can be turned on.
token string Token di accesso AAD che Kusto invierà all'endpoint SQL per l'autenticazione.The AAD access token that Kusto will forward to the SQL endpoint for authentication. Quando è impostata, la stringa di connessione Authentication User IDSQL Passwordnon deve includere informazioni di autenticazione come , , o .When set, the SQL connection string shouldn't include authentication information like Authentication, User ID, or Password.

Limitazioni e restrizioniLimitations and restrictions

Esistono numerose limitazioni e restrizioni durante l'esportazione dei dati in un database SQL:There are a number of limitations and restrictions when exporting data to a SQL database:There are a number of limitations and restrictions when exporting data to a SQL database:

  1. Kusto è un servizio cloud, pertanto la stringa di connessione deve puntare a un database accessibile dal cloud.Kusto is a cloud service, so the connection string must point to a database that is accessible from the cloud. (In particolare, non è possibile esportare in un database locale poiché non è accessibile dal cloud pubblico.)(In particular, one can't export to an on-premises database since it's not accessible from the public cloud.)

  2. Kusto supporta l'autenticazione integrata di Active Directoryaaduser= quando aadapp=l'entità chiamante è un'entità di Azure Active Directory ( o ).Kusto supports Active Directory Integrated authentication when the calling principal is an Azure Active Directory principal (aaduser= or aadapp=). In alternativa, Kusto supporta anche la fornitura delle credenziali per il database SQL come parte della stringa di connessione.Alternatively, Kusto also supports providing the credentials for the SQL database as part of the connection string. Altri metodi di autenticazione non sono supportati.Other methods of authentication aren't supported. L'identità presentata al database SQL deriva sempre dal chiamante del comando e non dall'identità del servizio Kusto stesso.The identity being presented to the SQL database always emanates from the command caller not the Kusto service identity itself.

  3. Se la tabella di destinazione nel database SQL esiste, deve corrispondere allo schema dei risultati della query.If the target table in the SQL database exists, it must match the query result schema. Si noti che in alcuni casi (ad esempio il database SQL di Azure) ciò significa che la tabella ha una colonna contrassegnata come colonna Identity.Note that in some cases (such as Azure SQL Database) this means that the table has one column marked as an identity column.Note that in some cases (such as Azure SQL Database) this means that the table has one column marked as an identity column.

  4. L'esportazione di grandi volumi di dati può richiedere molto tempo.Exporting large volumes of data may take a long time. È consigliabile impostare la tabella SQL di destinazione per la registrazione minima durante l'importazione bulk.It's recommended that the target SQL table be set for minimal logging during bulk import. Vedere > del Motore di database di SQL ServerSQL Server Database Engine ... > Funzionalitàdi database > Importazione ed esportazione bulk di dati .See SQL Server Database Engine > ... > Database Features > Bulk Import and Export of Data.

  5. L'esportazione dei dati viene eseguita utilizzando la copia di massa SQL e non fornisce garanzie transazionali nel database SQL di destinazione.Data export is performed using SQL bulk copy and provides no transactional guarantees on the target SQL database. Per ulteriori dettagli, vedere Operazioni di transazione e copia bulk.See Transaction and Bulk Copy Operations for more details.

  6. Il nome della tabella SQL è limitato a un nome_costituito da.lettere, cifre, spazi, caratteri di sottolineatura ( ), punti ( ) e trattini ( ).-The SQL table name is restricted to a name consisting of letters, digits, spaces, underscores (_), dots (.) and hyphens (-).

  7. La stringa di connessione SQL Persist Security Info è limitata false Encrypt come segue: è impostata in modo esplicito su , è impostata su true, ed Trust Server Certificate è impostata su . falseThe SQL connection string is restricted as follows: Persist Security Info is explicitly set to false, Encrypt is set to true, and Trust Server Certificate is set to false.

  8. La proprietà della chiave primaria nella colonna può essere specificata durante la creazione di una nuova tabella SQL.The primary key property on the column can be specified when creating a new SQL table. Se la colonna stringè di tipo , SQL potrebbe rifiutarsi di creare la tabella a causa di altre limitazioni nella colonna chiave primaria.If the column is of type string, then SQL might refuse to create the table due to other limitations on the primary key column. La soluzione consiste nel creare manualmente la tabella in SQL prima di esportare i dati.The workaround is to manually create the table in SQL before exporting the data. 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.The reason for this limitation is that primary key columns in SQL can't be of unlimited size, but Kusto table columns have no declared size limitations.

Azure DB AAD Integrated Authentication DocumentationAzure DB AAD Integrated Authentication Documentation

esempiExamples

In questo esempio Kusto esegue la query e quindi esporta il MySqlTable primo MyDatabase set di myserverrecord prodotto dalla query nella tabella del database nel server.In this example, Kusto runs the query and then exports the first record set produced by the query to the MySqlTable table in the MyDatabase database in server myserver.

.export async to sql MySqlTable
    h@"Server=tcp:myserver.database.windows.net,1433;Database=MyDatabase;Authentication=Active Directory Integrated;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 MySqlTable primo MyDatabase set di myserverrecord prodotto dalla query nella tabella del database nel server.In this example, Kusto runs the query and then exports the first record set produced by the query to the MySqlTable table in the MyDatabase database in server myserver. Se la tabella di destinazione non esiste nel database di destinazione, viene creata.If the target table doesn't exist in the target database, it's created.

.export async to sql ['dbo.MySqlTable']
    h@"Server=tcp:myserver.database.windows.net,1433;Database=MyDatabase;Authentication=Active Directory Integrated;Connection Timeout=30;"
    with (createifnotexists="true", primarykey="Id")
    <| print Message = "Hello World!", Timestamp = now(), Id=12345678