Compartilhar via


Exportar dados para o SQL

Aplica-se a: ✅Microsoft FabricAzure Data Explorer

Exportar dados para SQL permite que você execute uma consulta e tenha seus resultados enviados para uma tabela em um banco de dados SQL, como um banco de dados SQL hospedado pelo serviço Banco de Dados SQL do Azure.

Permissões

Você deve ter pelo menos permissões de Administrador de Tabela para executar este comando.

Sintaxe

.export[async] tosqlsqlTableName sqlConnectionString [with( propertyName= propertyValue [, ...]])<|consulta

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Digitar Obrigatória Descrição
async string Se especificado, o comando é executado de forma assíncrona.
SqlTableName string ✔️ O nome da tabela do banco de dados SQL na qual inserir os dados. Para proteger contra ataques de injeção, esse nome é restrito.
SqlConnectionString string ✔️ A cadeia de conexão para o ponto de extremidade SQL e o banco de dados. A cadeia de caracteres deve seguir o formato da ADO.NET cadeia de conexão. Por motivos de segurança, a cadeia de conexão é restrita.
PropertyName, PropertyValue string Uma lista de propriedades opcionais.

Propriedades aceitas

Nome Valores Descrição
firetriggers true ou false Se true, instrui o sistema de destino a disparar gatilhos INSERT definidos na tabela SQL. O padrão é false. Para obter mais informações, consulte BULK INSERT e System.Data.SqlClient.SqlBulkCopy.
createifnotexists true ou false Se true, a tabela SQL de destino for criada se ainda não existir; a primarykey propriedade deverá ser fornecida nesse caso para indicar a coluna de resultado que é a chave primária. O padrão é false.
primarykey Se createifnotexists for true, essa propriedade indicará o nome da coluna no resultado usado como a chave primária da tabela SQL se ela for criada por esse comando.
persistDetails bool Indica que o comando deve persistir seus resultados (consulte async sinalizador). O padrão é true em execuções assíncronas, mas pode ser desativado se o chamador não exigir os resultados. O padrão é false em execuções síncronas, mas pode ser ativado.
token string O token de acesso do Microsoft Entra que o Kusto encaminha para o ponto de extremidade do SQL para autenticação. Quando definida, a cadeia de conexão SQL não deve incluir informações de autenticação como Authentication, User ID, ou Password.

Autenticação e autorização

O método de autenticação é baseado na cadeia de conexão fornecida e as permissões necessárias para acessar o banco de dados SQL variam dependendo do método de autenticação.

Os métodos de autenticação com suporte para exportar dados para SQL são a autenticação integrada (representação) do Microsoft Entra e a autenticação de nome de usuário/senha. Para autenticação de representação, certifique-se de que a entidade de segurança tenha as seguintes permissões no banco de dados:

  • Tabela existente: tabela UPDATE e INSERT
  • Nova tabela: CREATE, UPDATE e INSERT

Observação

Sempre que possível, o método preferencial de autenticação é a autenticação integrada (representação) do Microsoft Entra.

Limitações e restrições

Há algumas limitações e restrições ao exportar dados para um banco de dados SQL:

  1. Kusto é um serviço de nuvem, portanto, a cadeia de conexão deve apontar para um banco de dados acessível na nuvem. (Em particular, não é possível exportar para um banco de dados local, pois ele não pode ser acessado na nuvem pública.)

  2. O Kusto oferece suporte à autenticação integrada do Active Directory quando a entidade de chamada é uma entidade de segurança do Microsoft Entra (aaduser= ou aadapp=). Como alternativa, o Kusto também dá suporte ao fornecimento de credenciais para o banco de dados SQL como parte da cadeia de conexão. Não há suporte para outros métodos de autenticação. A identidade que está sendo apresentada ao banco de dados SQL sempre emana do chamador de comandos, não da própria identidade do serviço Kusto.

  3. Se a tabela de destino no banco de dados SQL existir, ela deverá corresponder ao esquema de resultado da consulta. Em alguns casos, como o Banco de Dados SQL do Azure, isso significa que a tabela tem uma coluna marcada como uma coluna de identidade.

  4. Exportar grandes volumes de dados pode levar muito tempo. É recomendável que a tabela SQL de destino seja definida para registro mínimo durante a importação em massa. Consulte Mecanismo > de Banco de Dados do SQL Server... > Recursos > de banco de dados Importação e exportação em massa de dados.

  5. A exportação de dados é executada usando a cópia em massa SQL e não fornece garantias transacionais no banco de dados SQL de destino. Consulte Operações de transação e cópia em massa.

  6. O nome da tabela SQL é restrito a um nome que consiste em letras, dígitos, espaços, sublinhados (_), pontos (.) e hífens (-).

  7. A cadeia de conexão SQL é restrita da seguinte maneira: Persist Security Info é explicitamente definida como false, Encrypt é definida como truee Trust Server Certificate é definida como false.

  8. A propriedade de chave primária na coluna pode ser especificada ao criar uma nova tabela SQL. Se a coluna for do tipo string, o SQL poderá se recusar a criar a tabela devido a outras limitações na coluna de chave primária. A solução alternativa é criar manualmente a tabela em SQL antes de exportar os dados. Essa limitação existe porque as colunas de chave primária no SQL não podem ter tamanho ilimitado, mas as colunas da tabela Kusto não têm limitações de tamanho declaradas.

Documentação de autenticação integrada do Microsoft Entra do banco de dados do Azure

Exemplos

Exportação assíncrona para a tabela SQL

No exemplo a seguir, o Kusto executa a consulta e exporta o primeiro conjunto de registros produzido pela consulta para a tabela MySqlTable no banco de dados MyDatabase no servidor 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)

Exportar para a tabela SQL se ela não existir

No exemplo a seguir, o Kusto executa a consulta e exporta o primeiro conjunto de registros produzido pela consulta para a tabela MySqlTable no banco de dados MyDatabase no servidor myserver. A tabela de destino será criada se ela não existir no banco de dados de destino.

.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