我有这样的管道副本活动数据工厂:Azure的数据工厂副本活动SQL:挂在70000行
{
"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,约1.5万行,分解成约。 Azure存储中的20 x 4.5MB块blob文件。这里的数据(CSV)的示例:
A81001,1,1,1,2,600,3.0,0.47236654,141.70996,0.70854986 A81001,4,11,0,25,588,243.0,5.904582,138.87576,57.392536 A81001,7,4,1,32,1342,278.0,7.5578647,316.95795,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
)
源,水槽和数据工厂都在同一地区(北欧)。
根据微软的'Copy activity performance and tuning guide',对于Azure存储源和Azure SQL S2接收器,我应该获得大约0.4 MBps。通过我的计算,这意味着90MB应该在大约一半小时内传输(是吗?)。
出于某种原因,副本70000行速度非常快,然后似乎挂起。使用SQL管理工作室,我可以看到数据库表中的行数恰好为70,000,并且在7小时中完全没有增加。然而,副本任务仍然没有任何错误运行:
任何想法,为什么这是挂7万行?我看不到任何有关第70,001行数据的异常情况,这会导致问题。我试图强行摧毁数据工厂并重新开始,而且我总是得到相同的行为。我有一个小表(8000行),在1分钟内完成另一个复制活动。
这是伟大的,但你究竟是如何解决这个问题的? – m1nkeh
我不得不从70,000行手动扫描我的数据文件寻找任何问题!幸运的是,空值/空值显示出来了:p我后来研究出可以更改批量大小,例如到100,这意味着它将挂起一行号码,该号码距离问题最多100行 –