副本 activity 在 'Source' 端遇到存储操作失败。来自存储执行的错误消息
Copy activity met storage operation failure at 'Source' side. Error message from storage execution
当我像这样使用时间戳列从 PerformanceCountersTable 查询数据时出现错误,
副本 activity 在 'Source' 端遇到存储操作失败。来自存储执行的错误消息:远程服务器返回错误:(400)错误请求。请求输入之一无效
这是我的管道 activity:
"activities": [
{
"type": "Copy",
"typeProperties": {
"source": {
"type": "AzureTableSource",
"azureTableSourceQuery": "$$Text.Format('(CounterName eq \'\Process(WaWorkerHost)\% Processor Time\' or CounterName eq \'\Memory\Available MBytes\') and Timestamp ge datetime \'{0:yyyy-MM-ddTHH:mm:ssZ}\' and Timestamp lt datetime \'{1:yyyy-MM-ddTHH:mm:ssZ}\'', SliceStart, SliceEnd)"
},
"sink": {
"type": "SqlSink",
"writeBatchSize": 0,
"writeBatchTimeout": "00:00:00"
}
},
"inputs": [
{
"name": "MetricsDataVMCPUinput"
}
],
"outputs": [
{
"name": "MetricsDataVMCPUoutput"
}
],
"policy": {
"timeout": "00:15:00",
"concurrency": 1,
"retry": 3
},
"scheduler": {
"frequency": "Minute",
"interval": 15,
"style": "EndOfInterval"
},
"name": "MetricsDataVMCPUactivity"
}
当我像这样更改 Azuretablesourcequery 时,没有时间戳:
CounterName eq \'\Process(WaWorkerHost)\% Processor Time\' or CounterName eq \'\Memory\Available MBytes\'
我正在正确获取数据。我不知道这个查询有什么错误!
400
错误表示向 Table 服务提供了一些不正确的数据。在检查您的查询时
"azureTableSourceQuery": "$$Text.Format('(CounterName eq \'\Process(WaWorkerHost)\% Processor Time\' or CounterName eq \'\Memory\Available MBytes\') and Timestamp ge datetime \'{0:yyyy-MM-ddTHH:mm:ssZ}\' and Timestamp lt datetime \'{1:yyyy-MM-ddTHH:mm:ssZ}\'', SliceStart, SliceEnd)"
我注意到 datetime
和 date/time 值之间有一个 space。这可能会导致对 table 服务的请求失败并出现 400 错误。
请尝试删除 space。所以您的查询将是:
"azureTableSourceQuery": "$$Text.Format('(CounterName eq \'\Process(WaWorkerHost)\% Processor Time\' or CounterName eq \'\Memory\Available MBytes\') and Timestamp ge datetime\'{0:yyyy-MM-ddTHH:mm:ssZ}\' and Timestamp lt datetime\'{1:yyyy-MM-ddTHH:mm:ssZ}\'', SliceStart, SliceEnd)"
我注意到的另一件事是您正在查询 Timestamp
值。这很糟糕,因为它会导致完整 table 扫描。而是在查询中使用 PartitionKey
。本质上,您需要做的是将 SliceStart
和 SliceEnd
转换为刻度并将 0
添加到该值之前。我已经写了一篇博客 post,您可能会觉得有用:http://gauravmantri.com/2012/02/17/effective-way-of-fetching-diagnostics-data-from-windows-azure-diagnostics-table-hint-use-partitionkey/。
当我像这样使用时间戳列从 PerformanceCountersTable 查询数据时出现错误, 副本 activity 在 'Source' 端遇到存储操作失败。来自存储执行的错误消息:远程服务器返回错误:(400)错误请求。请求输入之一无效
这是我的管道 activity:
"activities": [
{
"type": "Copy",
"typeProperties": {
"source": {
"type": "AzureTableSource",
"azureTableSourceQuery": "$$Text.Format('(CounterName eq \'\Process(WaWorkerHost)\% Processor Time\' or CounterName eq \'\Memory\Available MBytes\') and Timestamp ge datetime \'{0:yyyy-MM-ddTHH:mm:ssZ}\' and Timestamp lt datetime \'{1:yyyy-MM-ddTHH:mm:ssZ}\'', SliceStart, SliceEnd)"
},
"sink": {
"type": "SqlSink",
"writeBatchSize": 0,
"writeBatchTimeout": "00:00:00"
}
},
"inputs": [
{
"name": "MetricsDataVMCPUinput"
}
],
"outputs": [
{
"name": "MetricsDataVMCPUoutput"
}
],
"policy": {
"timeout": "00:15:00",
"concurrency": 1,
"retry": 3
},
"scheduler": {
"frequency": "Minute",
"interval": 15,
"style": "EndOfInterval"
},
"name": "MetricsDataVMCPUactivity"
}
当我像这样更改 Azuretablesourcequery 时,没有时间戳:
CounterName eq \'\Process(WaWorkerHost)\% Processor Time\' or CounterName eq \'\Memory\Available MBytes\'
我正在正确获取数据。我不知道这个查询有什么错误!
400
错误表示向 Table 服务提供了一些不正确的数据。在检查您的查询时
"azureTableSourceQuery": "$$Text.Format('(CounterName eq \'\Process(WaWorkerHost)\% Processor Time\' or CounterName eq \'\Memory\Available MBytes\') and Timestamp ge datetime \'{0:yyyy-MM-ddTHH:mm:ssZ}\' and Timestamp lt datetime \'{1:yyyy-MM-ddTHH:mm:ssZ}\'', SliceStart, SliceEnd)"
我注意到 datetime
和 date/time 值之间有一个 space。这可能会导致对 table 服务的请求失败并出现 400 错误。
请尝试删除 space。所以您的查询将是:
"azureTableSourceQuery": "$$Text.Format('(CounterName eq \'\Process(WaWorkerHost)\% Processor Time\' or CounterName eq \'\Memory\Available MBytes\') and Timestamp ge datetime\'{0:yyyy-MM-ddTHH:mm:ssZ}\' and Timestamp lt datetime\'{1:yyyy-MM-ddTHH:mm:ssZ}\'', SliceStart, SliceEnd)"
我注意到的另一件事是您正在查询 Timestamp
值。这很糟糕,因为它会导致完整 table 扫描。而是在查询中使用 PartitionKey
。本质上,您需要做的是将 SliceStart
和 SliceEnd
转换为刻度并将 0
添加到该值之前。我已经写了一篇博客 post,您可能会觉得有用:http://gauravmantri.com/2012/02/17/effective-way-of-fetching-diagnostics-data-from-windows-azure-diagnostics-table-hint-use-partitionkey/。