Microsoft Fabric 镜像公共 REST API

Fabric 镜像的公共 API 由两个类别组成:(1) Fabric 镜像数据库项 的 CRUD 操作和 (2) 启动/停止和监视操作。 可在 Microsoft Fabric REST API 参考中找到 Microsoft Fabric REST API 的主要联机参考文档。

注意

这些 REST API 不适用于 Azure Databricks 中的镜像数据库。

创建镜像数据库

REST API - 项 - 创建镜像数据库

在创建镜像数据库之前,需要使用相应的数据源连接。 如果还没有连接,请参阅使用门户创建新连接,并在以下定义中使用该连接 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 定义示例如下所示:

如果要复制选择的表而不是指定数据库中的所有表,请参阅复制指定表的 JSON 定义示例

重要

若要从 Azure SQL 数据库或 Azure SQL 托管实例镜像数据,还需在开始镜像之前执行以下操作:

  1. 启用 Azure SQL 逻辑服务器Azure SQL 托管实例的系统分配托管标识 (SAMI)。
  2. 授予 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>" 
} 

删除镜像数据库

REST API - 项 - 删除镜像数据库

示例:

DELETE https://api.fabric.microsoft.com/v1/workspaces/<your workspace ID>/mirroredDatabases/<mirrored database ID>

响应 200:(无正文)

获取镜像数据库

REST API - 项 - 获取镜像数据库

示例:

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"
    }
}

获取镜像数据库定义

REST API - 项 - 获取镜像数据库定义

示例:

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" 
            } 
        ] 
    } 
} 

列出镜像数据库

REST API - 项 - 列出镜像数据库

示例:

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"
            }
        }
    ] 
} 

更新镜像数据库

REST API - 项 - 更新镜像数据库

示例:

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>"
}

更新镜像数据库定义

REST API - 项 - 更新镜像数据库定义

示例:

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 时更新)。

获取镜像状态

REST API - 镜像 - 获取镜像状态

此 API 返回镜像数据库实例的状态。 可用状态的列表在 MirroringStatus 的值中提供。

示例:

POST https://api.fabric.microsoft.com/v1/workspaces/<your workspace ID>/mirroredDatabases/<mirrored database ID>/getMirroringStatus

响应 200:

{
    "status": "Running"
}

启动镜像

REST API - 镜像 - 启动镜像

示例:

POST https://api.fabric.microsoft.com/v1/workspaces/<your workspace ID>/mirroredDatabases/<mirrored database ID>/startMirroring

响应 200:(无正文)

注意

当上述获取镜像状态 API 返回状态 Initializing 时,无法启动镜像。

获取表镜像状态

REST API - 镜像 - 获取表镜像状态

如果启动镜像并且获取镜像状态 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"
            }
        }
    ]
}

停止镜像

REST API - 镜像 - 停止镜像

示例:

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。

已知限制

如果租户主区域位于美国中北部或美国东部,则目前不支持服务主体/托管标识身份验证。 可以在其他区域中使用此身份验证。