Criar e alterar tabelas externas do SQL

Cria ou altera uma tabela externa do SQL na base de dados na qual o comando é executado.

Nota

  • Se a tabela existir, o .create comando falhará com um erro. Utilizar .create-or-alter ou .alter modificar tabelas existentes.
  • A alteração do esquema de uma tabela SQL externa não é suportada.

Tipos de tabelas externas do SQL suportados

  1. Microsoft SQL Server
  2. MySQL
  3. PostgreSQL
  4. Cosmos DB

Permissões

Para .create exigir, pelo menos, permissões de Utilizador da Base de Dados e exigir.alter, pelo menos, permissões de Administração de Tabelas.

Para .create-or-alter uma tabela externa através da autenticação de identidade gerida requer permissões AllDatabasesAdmin . Atualmente, isto só é relevante para a Microsoft SQL Server tabelas externas.

Syntax

(.create.create-or-alter | .alter | ) externaltableTableName(Schema)kind=sql [ table=SqlTableName ] (SqlConnectionString) [ [ sqlDialectwith(=SqlDialect ] [ ,Property, ... ])]

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Necessário Descrição
TableName string ✔️ O nome da tabela externa. O nome tem de seguir as regras para nomes de entidades e uma tabela externa não pode ter o mesmo nome que uma tabela normal na mesma base de dados.
Esquema string ✔️ O esquema de dados externos é uma lista separada por vírgulas de um ou mais nomes de colunas e tipos de dados, onde cada item segue o formato: ColumnName:ColumnType.
SqlTableName string O nome da tabela SQL que não inclui o nome da base de dados. Por exemplo, "MySqlTable" e não "db1. MySqlTable". Se o nome da tabela contiver um ponto final ("."), utilize a notação ['Name.of.the.table'].

Esta especificação é necessária para todos os tipos de tabelas, exceto para o Cosmos DB, uma vez que para o Cosmos DB o nome da coleção faz parte do cadeia de ligação.
SqlConnectionString string ✔️ O cadeia de ligação para o SQL Server.
SqlDialect string Indica o tipo de tabela externa do SQL. O Microsoft SQL Server é a predefinição. Para MySQL, especifique MySQL. Para PostgreSQL, especifique PostgreSQL. Para o Cosmos DB, especifique CosmosDbSql.
Propriedade string Um par de propriedades chave-valor no formato PropertyName=PropertyValue. Veja as propriedades opcionais.

Aviso

As cadeias de ligação e as consultas que incluem informações confidenciais devem ser ocultadas para que sejam omitidas de qualquer rastreio kusto. Para obter mais informações, veja literais de cadeias obsultas.

Propriedades opcionais

Propriedade Tipo Description
folder string A pasta da tabela.
docString string Uma cadeia que documenta a tabela.
firetriggers true/false Se true, instruir o sistema de destino a acionar acionadores INSERT definidos na tabela SQL. A predefinição é false. (Para obter mais informações, consulte BULK INSERT e System.Data.SqlClient.SqlBulkCopy)
createifnotexists true/ false Se true, a tabela SQL de destino será criada se ainda não existir; a primarykey propriedade tem de ser fornecida neste caso para indicar a coluna de resultados que é a chave primária. A predefinição é false.
primarykey string Se createifnotexists for true, o nome da coluna resultante será utilizado como chave primária da tabela SQL se for criado por este comando.

Autenticação e autorização

Para interagir com uma tabela SQL externa do Azure Data Explorer, tem de especificar meios de autenticação como parte do SqlConnectionString. O SqlConnectionString define o recurso a aceder e as informações de autenticação.

Para obter mais informações, veja Métodos de autenticação de tabelas externas do SQL.

Nota

Se a tabela externa for utilizada para exportação contínua, a autenticação tem de ser efetuada por nome de utilizador/palavra-passe ou identidades geridas.

Exemplos

Os exemplos seguintes mostram como criar cada tipo de tabela externa do SQL.

SQL Server

.create external table MySqlExternalTable (x:long, s:string) 
kind=sql
table=MySqlTable
( 
   h@'Server=tcp:myserver.database.windows.net,1433;Authentication=Active Directory Integrated;Initial Catalog=mydatabase;'
)
with 
(
   docstring = "Docs",
   folder = "ExternalTables", 
   createifnotexists = true,
   primarykey = x,
   firetriggers=true
)  

Saída

TableName TableType Pasta DocString Propriedades
MySqlExternalTable SQL Tabelas Externas Docs {
"TargetEntityKind": "sqltable",
"TargetEntityName": "MySqlTable",
"TargetEntityConnectionString": "Server=tcp:myserver.database.windows.net,1433; Autenticação=Integrado do Active Directory; Catálogo Inicial=mydatabase;",
"FireTriggers": true,
"CreateIfNotExists": true,
"PrimaryKey": "x"
}

MySQL

.create external table MySqlExternalTable (x:long, s:string) 
kind=sql
table=MySqlTable
( 
   h@'Server=myserver.mysql.database.windows.net;Port = 3306;UID = USERNAME;Pwd = PASSWORD;Database = mydatabase;'
)
with 
(
   sqlDialect = "MySql",
   docstring = "Docs",
   folder = "ExternalTables", 
)  

PostgreSQL

.create external table PostgreSqlExternalTable (x:long, s:string) 
kind=sql
table=PostgreSqlTable
( 
   h@'Host = hostname.postgres.database.azure.com; Port = 5432; Database= db; User Id=user; Password=pass; Timeout = 30;'
)
with 
(
   sqlDialect = "PostgreSQL",
   docstring = "Docs",
   folder = "ExternalTables", 
)  

Cosmos DB

.create external table CosmosDBSQLExternalTable (x:long, s:string) 
kind=sql
( 
   h@'AccountEndpoint=https://cosmosdbacc.documents.azure.com/;Database=MyDatabase;Collection=MyCollection;AccountKey=' h'R8PM...;'
)
with 
(
   sqlDialect = "CosmosDbSQL",
   docstring = "Docs",
   folder = "ExternalTables", 
)