Share via


Skapa och ändra externa SQL-tabeller

Skapar eller ändrar en extern SQL-tabell i databasen där kommandot körs.

Anteckning

  • Om tabellen finns .create misslyckas kommandot med ett fel. Använd .create-or-alter eller .alter för att ändra befintliga tabeller.
  • Det går inte att ändra schemat för en extern SQL-tabell.

Sql-externa tabelltyper som stöds

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

Behörigheter

För att .create minst behöva behörigheter för databasanvändare och för att .alter minst behöva behörigheter för table Admin.

För .create-or-alter en extern tabell som använder hanterad identitetsautentisering krävs Behörigheter för AllDatabasesAdmin . För närvarande är detta endast relevant för Microsoft SQL Server externa tabeller.

Syntax

(.create.alter.create-or-alter | | ) externaltableTableName Schema()=kindsql [ table=SqlTableName ] (SqlConnectionString) [with(SqlDialectsqlDialect= ] , [ Egenskap, ... ]])

Läs mer om syntaxkonventioner.

Parametrar

Namn Typ Obligatorisk Beskrivning
TableName string ✔️ Namnet på den externa tabellen. Namnet måste följa reglerna för entitetsnamn och en extern tabell får inte ha samma namn som en vanlig tabell i samma databas.
Schema string ✔️ Det externa dataschemat är en kommaavgränsad lista med ett eller flera kolumnnamn och datatyper, där varje objekt följer formatet: ColumnName:ColumnType.
SqlTableName string Namnet på SQL-tabellen som inte innehåller databasnamnet. Till exempel "MySqlTable" och inte "db1. MySqlTable". Om namnet på tabellen innehåller en punkt ("."), använder du ['Name.of.the.table'] notation.

Den här specifikationen krävs för alla typer av tabeller förutom Cosmos DB, eftersom samlingsnamnet för Cosmos DB är en del av anslutningssträng.
SqlConnectionString string ✔️ Anslutningssträng till SQL-servern.
SqlDialect string Anger typen av extern SQL-tabell. Microsoft SQL Server är standard. För MySQL anger du MySQL. För PostgreSQL anger du PostgreSQL. För Cosmos DB anger du CosmosDbSql.
Egenskap string Ett nyckel/värde-egenskapspar i formatet PropertyName=PropertyValue. Se valfria egenskaper.

Varning

Anslutningssträngar och frågor som innehåller konfidentiell information bör döljas så att de utelämnas från kusto-spårning. Mer information finns i dolda strängliteraraler.

Valfria egenskaper

Egenskap Typ Description
folder string Tabellens mapp.
docString string En sträng som dokumenterar tabellen.
firetriggers true/false Om trueinstruerar instruerar du målsystemet att utlösa INSERT-utlösare som definierats i SQL-tabellen. Standardvärdet är false. (Mer information finns i BULK INSERT och System.Data.SqlClient.SqlBulkCopy)
createifnotexists true/ false Om trueskapas SQL-måltabellen om den inte redan finns. primarykey Egenskapen måste anges i det här fallet för att ange den resultatkolumn som är primärnyckeln. Standardvärdet är false.
primarykey string Om createifnotexists är trueanvänds det resulterande kolumnnamnet som SQL-tabellens primärnyckel om den skapas med det här kommandot.

Autentisering och auktorisering

Om du vill interagera med en extern SQL-tabell från Azure Data Explorer måste du ange autentiseringsmedelvärden som en del av SqlConnectionString. SqlConnectionString definierar resursen för åtkomst och dess autentiseringsinformation.

Mer information finns i autentiseringsmetoder för externa SQL-tabeller.

Anteckning

Om den externa tabellen används för kontinuerlig export måste autentiseringen utföras antingen med användarnamn/lösenord eller hanterade identiteter.

Exempel

I följande exempel visas hur du skapar varje typ av extern SQL-tabell.

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
)  

Resultat

TableName TableType Mapp DocString Egenskaper
MySqlExternalTable SQL ExternalTables Docs {
"TargetEntityKind": "sqltable",
"TargetEntityName": "MySqlTable",
"TargetEntityConnectionString": "Server=tcp:myserver.database.windows.net,1433; Authentication=Active Directory Integrated; Initial Catalog=mydatabase;",
"FireTriggers": sant,
"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", 
)