次の方法で共有


Azure SQL の外部テーブルを作成および変更する

適用対象: ✅Microsoft FabricAzure データ エクスプローラー

コマンドが実行されるデータベースで、Azure SQL 外部テーブル を作成または変更します。

Note

  • テーブルが存在する場合、.create コマンドは失敗し、エラーが表示されます。 既存のテーブルを変更するには、.create-or-alter または .alter を使用します。
  • 外部 Azure SQL テーブルのスキーマの変更はサポートされていません。

サポートされている Azure SQL 外部テーブルの種類

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

アクセス許可

.createには、少なくとも Database User アクセス許可が必要であり、.alterには少なくとも Table 管理者アクセス許可が必要です。

マネージド ID 認証を使用して外部テーブルを .create.alter、または .create-or-alter するには、 Database 管理者 アクセス許可が必要です。 このメソッドは、SQL Server および Cosmos DB の外部テーブルでサポートされています。

構文

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

構文規則について詳しく知る。

パラメーター

件名 タイプ Required 説明
TableName string ✔️ 外部テーブルの名前。 名前は、 エンティティ名の規則に従う必要があります外部テーブルは、同じデータベース内の通常のテーブルと同じ名前を持つすることはできません。
[スキーマ] string ✔️ 外部データ スキーマは、1 つ以上の列名と data 型のコンマ区切りのリストです各項目は次の形式に従います: ColumnName : ColumnType
SqlTableName string データベース名を含まない SQL テーブルの名前。 たとえば、"db1" ではなく "MySqlTable" です。MySqlTable"。 テーブルの名前にピリオド (".") が含まれている場合は、['Name.of.the.table'] 表記を使用します。


この仕様は、Cosmos DB を除くすべての種類のテーブルに必要です。Cosmos DB の場合、コレクション名は接続文字列の一部です。
SqlConnectionString string ✔️ SQL サーバーへの接続文字列。
SqlDialect string Azure SQL 外部テーブルの種類を示します。 SQL Server が既定です。 MySQL の場合は、 MySQLを指定します。 PostgreSQL の場合は、 PostgreSQLを指定します。 Cosmos DB の場合は、 CosmosDbSqlを指定します。
プロパティ string PropertyName = PropertyValue の形式のキーと値のプロパティのペア。 オプションのプロパティを参照してください

警告

機密情報を含む接続文字列とクエリは、すべての Kusto トレースから除外されるように難読化される必要があります。 詳細については、「難読化文字列リテラル」を参照してください。

省略可能なプロパティ

プロパティ タイプ 説明
folder string テーブル*のフォルダー*。
docString string テーブルをドキュメント化する文字列。
firetriggers true/false true の場合は、ターゲット システムに対して、SQL テーブルで定義されている INSERT トリガーを起動するよう指示します。 既定値は、false です。 (詳細については、BULK INSERTSystem.Data.SqlClient.SqlBulkCopy に関するページを参照してください。)
createifnotexists true/ false true場合、ターゲット SQL テーブルがまだ存在しない場合は作成されます。この場合、主キーである結果列を示すには、primarykey プロパティを指定する必要があります。 既定値は、false です。
primarykey string createifnotexiststrueされている場合、このコマンドによって作成された場合、結果の列名が SQL テーブルの主キーとして使用されます。

認証と権限承認

外部の Azure SQL テーブルと対話するには、 SqlConnectionString の一部として認証手段を指定する必要があります。 SqlConnectionString は、アクセスするリソースとその認証情報を定義します。

詳細については、「 Azure SQL 外部テーブルの認証方法を参照してください。

Note

外部テーブルを 連続するエクスポートに使用する場合は、ユーザー名/パスワードまたはマネージド ID で認証を実行する必要があります。

次の例では、各種類の 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
)  

出力

TableName TableType フォルダー DocString プロパティ
MySqlExternalTable Sql ExternalTables ドキュメント {
"TargetEntityKind": "sqltable`",
"TargetEntityName": "MySqlTable",
"TargetEntityConnectionString": "Server=tcp:myserver.database.windows.net,1433;Authentication=Active Directory Integrated;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", 
)