我有一个具有如下管道复制活动的数据工厂:
{
"type": "Copy",
"name": "Copy from storage to SQL",
"inputs": [
{
"name": "storageDatasetName"
}
],
"outputs": [
{
"name": "sqlOutputDatasetName"
}
],
"typeProperties": {
"source": {
"type": "BlobSource"
},
"sink": {
"type": "SqlSink"
}
},
"policy": {
"concurrency": 1,
"retry": 3
},
"scheduler": {
"frequency": "Month",
"interval": 1
}
}
输入数据大小约为 90MB,大约 150 万行,分成大约 150 万行。Azure 存储中的 20 个 4.5MB 块 blob 文件。这是数据(CSV)的示例:
A81001,1,1,1,1,2,600,3.0,47236654,141.7096,0.70854986 A81001,1001,11,11,11,255,55,588,543.0,543.0,5904582,1382,1382,1382,138.8757,8757,8757,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,8799925555555555555555555555555559999999999转65.65895
接收器是 S2 类型的 Azure SQL Server,额定为 50 个 DTU。我创建了一个具有合理数据类型的简单表,没有键、索引或任何花哨的东西,只有列:
CREATE TABLE [dbo].[Prescriptions](
[Practice] [char](6) NOT NULL,
[BnfChapter] [tinyint] NOT NULL,
[BnfSection] [tinyint] NOT NULL,
[BnfParagraph] [tinyint] NOT NULL,
[TotalItems] [int] NOT NULL,
[TotalQty] [int] NOT NULL,
[TotalActCost] [float] NOT NULL,
[TotalItemsPerThousand] [float] NOT NULL,
[TotalQtyPerThousand] [float] NOT NULL,
[TotalActCostPerThousand] [float] NOT NULL
)
源、汇和数据工厂都在同一个区域(北欧)。
根据 Microsoft 的“复制活动性能和调整指南”,对于 Azure 存储源和 Azure SQL S2 接收器,我应该获得大约 0.4 MBps。根据我的计算,这意味着 90MB 应该在大约半小时内传输(对吗?)。
由于某种原因,它非常快速地复制了 70,000 行,然后似乎挂起。使用 SQL 管理工作室,我可以看到数据库表中的行数正好是 70,000,并且在7 小时内根本没有增加。然而,复制任务仍在运行,没有错误:
任何想法为什么这挂在 70,000 行?我看不到第 70,001 个数据行有任何异常会导致问题。我已经尝试过彻底破坏数据工厂并重新开始,但我总是得到相同的行为。我有一个较小的表(8000 行)的另一个复制活动,它在 1 分钟内完成。