Sdílet prostřednictvím


Vytváření a změny externích tabulek Azure SQL

Platí pro: ✅Microsoft FabricAzure Data Explorer

Vytvoří nebo změní externí tabulku Azure SQL v databázi, ve které se příkaz spustí.

Poznámka:

  • Pokud tabulka existuje, .create příkaz selže s chybou. Použijte .create-or-alter nebo .alter upravte existující tabulky.
  • Změna schématu externí tabulky Azure SQL se nepodporuje.

Podporované typy externích tabulek Azure SQL

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

Oprávnění

Pokud chcete .create vyžadovat aspoň oprávnění uživatele databáze a .alter vyžadovat alespoň oprávnění správce tabulky.

Pro .create, .alternebo .create-or-alter externí tabulku používající ověřování spravované identity vyžaduje oprávnění správce databáze. Tato metoda je podporovaná pro externí tabulky SQL Serveru a Cosmos DB.

Syntaxe

(.create | .alter.create-or-alter | ) external table TableName( Schemasql =) kind [ table = SqlTableName ] (SqlConnectionString) [with ( [ sqlDialect = SqlDialect ] , [ Vlastnost , ... ]])

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Type Požadováno Popis
TableName string ✔️ Název externí tabulky. Název musí dodržovat pravidla pro názvy entit a externí tabulka nemůže mít stejný název jako běžná tabulka ve stejné databázi.
Schéma string ✔️ Schéma externích dat je čárkami oddělený seznam jednoho nebo více názvů sloupců a datových typů, kde každá položka má formát: ColumnName : ColumnType.
SqlTableName string Název tabulky SQL neobsahuje název databáze. Například "MySqlTable" a ne "db1". MySqlTable. Pokud název tabulky obsahuje tečku ("."), použijte notaci ['Name.of.the.table'].


Tato specifikace se vyžaduje pro všechny typy tabulek s výjimkou Cosmos DB, protože název kolekce je součástí připojovací řetězec.
SqlConnectionString string ✔️ Připojovací řetězec na SQL Server.
SqlDialect string Označuje typ externí tabulky Azure SQL. SQL Server je výchozí. Pro MySQL zadejte MySQL. Pro PostgreSQL zadejte PostgreSQL. Pro Cosmos DB zadejte CosmosDbSql.
Vlastnost string Dvojice vlastností klíč-hodnota ve formátu PropertyName = PropertyValue. Viz volitelné vlastnosti.

Upozorňující

Připojovací řetězce a dotazy, které obsahují důvěrné informace, by měly být obfuskovány, aby se vynechaly z jakéhokoli trasování Kusto. Další informace najdete v obfuskovaných řetězcových literálech.

Volitelné vlastnosti

Vlastnost Type Popis
folder string Složka tabulky.
docString string Řetězec dokumentující tabulku.
firetriggers true/false Pokud true, dává cílovému systému pokyn, aby aktivoval triggery INSERT definované v tabulce SQL. Výchozí hodnota je false. (Další informace najdete v tématu BULK INSERT a System.Data.SqlClient.SqlBulkCopy)
createifnotexists true/ false Pokud trueje cílová tabulka SQL vytvořená, pokud ještě neexistuje; primarykey vlastnost musí být v tomto případě uvedena, aby bylo možné určit výsledný sloupec, který je primárním klíčem. Výchozí hodnota je false.
primarykey string Pokud createifnotexists ano true, výsledný název sloupce se použije jako primární klíč tabulky SQL, pokud je vytvořen tímto příkazem.

Ověřování a autorizace

Pokud chcete pracovat s externí tabulkou Azure SQL, je nutné zadat ověřovací prostředky jako součást sqlConnectionString. SqlConnectionString definuje prostředek pro přístup a jeho ověřovací informace.

Další informace najdete v tématu Metody ověřování externí tabulky Azure SQL.

Poznámka:

Pokud se externí tabulka používá k průběžnému exportu, musí se ověřování provádět pomocí uživatelského jména nebo hesla nebo spravovaných identit.

Příklady

Následující příklady ukazují, jak vytvořit jednotlivé typy externí tabulky Azure 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
)  

Výstup

TableName TableType Složka DocString Vlastnosti
MySqlExternalTable Sql Externí tabulky Dokumenty {
"TargetEntityKind": "sqltable",
"TargetEntityName": "MySqlTable",
"TargetEntityConnectionString": "Server=tcp:myserver.database.windows.net,1433; Authentication=Integrovaná služba Active Directory; Initial Catalog=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", 
)