Microsoft Fabric 镜像公共 REST API
Fabric 镜像的公共 API 由两个类别组成:(1) Fabric 镜像数据库项 的 CRUD 操作和 (2) 启动/停止和监视操作。 可在 Microsoft Fabric REST API 参考中找到 Microsoft Fabric REST API 的主要联机参考文档。
注意
这些 REST API 不适用于 Azure Databricks 中的镜像数据库。
创建镜像数据库
在创建镜像数据库之前,需要使用相应的数据源连接。 如果还没有连接,请参阅使用门户创建新连接,并在以下定义中使用该连接 ID。 也可以参阅创建新连接 REST API,使用 Fabric REST API 创建新的连接。
示例:
POST https://api.fabric.microsoft.com/v1/workspaces/<your workspace ID>/mirroredDatabases
正文:
{
"displayName": "Mirrored database 1",
"description": "A mirrored database description",
"definition": {
"parts": [
{
"path": "mirroring.json",
"payload": "eyAicHJvcGVydGllcy..WJsZSIgfSB9IH0gXSB9IH0",
"payloadType": "InlineBase64"
}
]
}
}
上一个 JSON 正文中的有效负载属性是 Base64 编码的。 可以使用 Base64 编码和解码进行编码。 不同类型的源的原始 JSON 定义示例如下所示:
- Snowflake 的 JSON 定义示例
- Azure SQL 数据库的 JSON 定义示例
- Azure SQL 托管实例的 JSON 定义示例
- Azure Cosmos DB 的 JSON 定义示例
- 开放镜像的 JSON 定义示例
如果要复制选择的表而不是指定数据库中的所有表,请参阅复制指定表的 JSON 定义示例。
重要
若要从 Azure SQL 数据库或 Azure SQL 托管实例镜像数据,还需在开始镜像之前执行以下操作:
- 启用 Azure SQL 逻辑服务器或 Azure SQL 托管实例的系统分配托管标识 (SAMI)。
- 授予 SAMI 对镜像数据库的“读写”权限。 目前,需要在 Fabric 门户中执行此操作。 或者,可以使用添加工作区角色分配 API 授予 SAMI 工作区角色。
Snowflake 的 JSON 定义示例
{
"properties": {
"source": {
"type": "Snowflake",
"typeProperties": {
"connection": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"database": "xxxx"
}
},
"target": {
"type": "MountedRelationalDatabase",
"typeProperties": {
"defaultSchema": "xxxx",
"format": "Delta"
}
}
}
}
Azure SQL 数据库的 JSON 定义示例
{
"properties": {
"source": {
"type": "AzureSqlDatabase",
"typeProperties": {
"connection": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1"
}
},
"target": {
"type": "MountedRelationalDatabase",
"typeProperties": {
"defaultSchema": "xxxx",
"format": "Delta"
}
}
}
}
Azure SQL 托管实例的 JSON 定义示例
{
"properties": {
"source": {
"type": "AzureSqlMI",
"typeProperties": {
"connection": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1"
}
},
"target": {
"type": "MountedRelationalDatabase",
"typeProperties": {
"defaultSchema": "xxxx",
"format": "Delta"
}
}
}
}
Azure Cosmos DB 的 JSON 定义示例
{
"properties": {
"source": {
"type": "CosmosDb",
"typeProperties": {
"connection": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"database": "xxxx"
}
},
"target": {
"type": "MountedRelationalDatabase",
"typeProperties": {
"defaultSchema": "xxxx",
"format": "Delta"
}
}
}
}
开放镜像的 JSON 定义示例
{
"properties": {
"source": {
"type": "GenericMirror",
"typeProperties": {}
},
"target": {
"type": "MountedRelationalDatabase",
"typeProperties": {
"format": "Delta"
}
}
}
}
复制指定表的 JSON 定义示例
上面的示例适用于自动复制指定数据库中所有表的方案。 如果要指定要复制的表,可以按以下示例所示指定 mountedTables
属性。
{
"properties": {
"source": {
"type": "Snowflake",
"typeProperties": {
"connection": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"database": "xxxx"
}
},
"target": {
"type": "MountedRelationalDatabase",
"typeProperties": {
"defaultSchema": "xxxx",
"format": "Delta"
}
},
"mountedTables": [
{
"source": {
"typeProperties": {
"schemaName": "xxxx",
"tableName": "xxxx"
}
}
}
]
}
}
响应 201:
{
"id": "<mirrored database ID>",
"type": "MirroredDatabase",
"displayName": "Mirrored database 1",
"description": "A mirrored database description",
"workspaceId": "<your workspace ID>"
}
删除镜像数据库
示例:
DELETE https://api.fabric.microsoft.com/v1/workspaces/<your workspace ID>/mirroredDatabases/<mirrored database ID>
响应 200:(无正文)
获取镜像数据库
示例:
GET https://api.fabric.microsoft.com/v1/workspaces/<your workspace ID>/mirroredDatabases/<mirrored database ID>
响应 200:
{
"displayName": "Mirrored database 1",
"description": "A mirrored database description.",
"type": "MirroredDatabase",
"workspaceId": "<your workspace ID>",
"id": "<mirrored database ID>",
"properties": {
"oneLakeTablesPath": "https://onelake.dfs.fabric.microsoft.com/<your workspace ID>/<mirrored database ID>/Tables",
"sqlEndpointProperties": {
"connectionString": "xxxx.xxxx.fabric.microsoft.com",
"id": "b1b1b1b1-cccc-dddd-eeee-f2f2f2f2f2f2",
"provisioningStatus": "Success"
},
"defaultSchema": "xxxx"
}
}
获取镜像数据库定义
示例:
POST https://api.fabric.microsoft.com/v1/workspaces/<your workspace ID>/mirroredDatabases/<mirrored database ID>/getDefinition
响应 200:
{
"definition": {
"parts":[
{
"path": "mirroring.json",
"payload": "eyAicHJvcGVydGllcy..WJsZSIgfSB9IH0gXSB9IH0",
"payloadType": "InlineBase64"
}
]
}
}
列出镜像数据库
示例:
GET https://api.fabric.microsoft.com/v1/workspaces/<your workspace ID>/mirroredDatabases
响应 200:
{
"value": [
{
"displayName": "Mirrored database 1",
"description": "A mirrored database description.",
"type": "MirroredDatabase",
"workspaceId": "<your workspace ID>",
"id": "<mirrored database ID>",
"properties": {
"oneLakeTablesPath": "https://onelake.dfs.fabric.microsoft.com/<your workspace ID>/<mirrored database ID>/Tables",
"sqlEndpointProperties": {
"connectionString": "xxxx.xxxx.fabric.microsoft.com",
"id": "b1b1b1b1-cccc-dddd-eeee-f2f2f2f2f2f2",
"provisioningStatus": "Success"
},
"defaultSchema": "xxxx"
}
}
]
}
更新镜像数据库
示例:
PATCH https://api.fabric.microsoft.com/v1/workspaces/<your workspace ID>/mirroredDatabases/<mirrored database ID>
正文:
{
"displayName": "MirroredDatabase's New name",
"description": "A new description for mirrored database."
}
响应 200:
{
"displayName": "MirroredDatabase's New name",
"description": "A new description for mirrored database.",
"type": "MirroredDatabase",
"workspaceId": "<your workspace ID>",
"id": "<mirrored database ID>"
}
更新镜像数据库定义
示例:
POST https://api.fabric.microsoft.com/v1/workspaces/<your workspace ID>/mirroredDatabases/<mirrored database ID>/updateDefinition
正文:
{
"definition": {
"parts": [
{
"path": "mirroring.json",
"payload": "eyAicHJvcGVydGllcy..WJsZSIgfSB9IH0gXSB9IH0",
"payloadType": "InlineBase64"
}
]
}
}
响应 200:(无正文)
注意
此 API 通过刷新 mountedTables
属性支持添加/移除表。 它还支持更新源连接 ID、数据库名称和默认架构(这三个属性只能在获取镜像状态 API 返回 Initialized
/Stopped
时更新)。
获取镜像状态
此 API 返回镜像数据库实例的状态。 可用状态的列表在 MirroringStatus 的值中提供。
示例:
POST https://api.fabric.microsoft.com/v1/workspaces/<your workspace ID>/mirroredDatabases/<mirrored database ID>/getMirroringStatus
响应 200:
{
"status": "Running"
}
启动镜像
示例:
POST https://api.fabric.microsoft.com/v1/workspaces/<your workspace ID>/mirroredDatabases/<mirrored database ID>/startMirroring
响应 200:(无正文)
注意
当上述获取镜像状态 API 返回状态 Initializing
时,无法启动镜像。
获取表镜像状态
如果启动镜像并且获取镜像状态 API 返回 Running
状态,此 API 将返回表复制的状态和指标。
示例:
POST https://api.fabric.microsoft.com/v1/workspaces/<your workspace ID>/mirroredDatabases/<mirrored database ID>/getTablesMirroringStatus
响应 200:
{
"continuationToken": null,
"continuationUri": null,
"data": [
{
"sourceSchemaName": "dbo",
"sourceTableName": "test",
"status": "Replicating",
"metrics": {
"processedBytes": 1247,
"processedRows": 6,
"lastSyncDateTime": "2024-10-08T05:07:11.0663362Z"
}
}
]
}
停止镜像
示例:
POST https://api.fabric.microsoft.com/v1/workspaces/<your workspace ID>/mirroredDatabases/<mirrored database ID>/stopMirroring
响应 200:(无正文)
注意
停止镜像后,可以调用获取镜像状态 API 来查询镜像状态。
Microsoft Fabric .NET SDK
支持 Fabric 镜像的 .NET SDK 在 Microsoft Fabric .NET SDK 中提供。 该版本需要 >= 1.0.0-beta.11。
已知限制
如果租户主区域位于美国中北部或美国东部,则目前不支持服务主体/托管标识身份验证。 可以在其他区域中使用此身份验证。