Я настроил IR на локальном сервере sql и подключил его к моей фабрике данных v2, тестовый запуск успешно скопировал простую таблицу dbo.employee в хранилище BLOB-объектов.
Поскольку я копирую небольшое количествоДанные, из которых я хотел бы скопировать данные непосредственно из Prem SQL, в базу данных SQL Azure с помощью выбора.
Я следовал этому руководству - https://docs.microsoft.com/en-us/azure/data-factory/tutorial-hybrid-copy-powershell
Затем я создал конвейер сзадание на копирование, используя мой sqlserverdataset в качестве источника - Простая таблица сотрудников с 3 столбцами и 3 строками.
Я создал похожую таблицу на моем тестовом сервере Azure SQL Server с теми же столбцами и установил ее в качестве набора данных приемника,
Я не уверен, как структурировать хранимый процесс, который он запрашивает в приемнике.
для целей тестирования я создал sp на своем лазурном sql как
CREATEПРОЦЕДУРА spCopyFromOnPremToAzure AS НАЧИНАЕТ ВСТАВИТЬ [dbo]. [TestEmployee] SELECT * FROM [dbo]. [Employee] END
и использует его в качестве процесса в приемнике.для типа таблицы я использовал TABLE
при отображении. Я вижу, что столбцы источника и назначения сопоставлены.
Я запустил конвейер, который затем завершился ошибкой,
SOURCE
{
"source": {
"type": "SqlSource"
},
"sink": {
"type": "SqlSink",
"writeBatchSize": 10000,
"sqlWriterStoredProcedureName": "[dbo].[spCopyFromOnPremToAzure]",
"sqlWriterTableType": "TABLE"
},
"enableStaging": false,
"translator": {
"type": "TabularTranslator",
"columnMappings": {
"ID": "ID",
"FirstName": "FirstName",
"LastName": "LastName"
}
}
}
ВЫХОД
{
"dataRead": 62,
"dataWritten": 0,
"rowsRead": 3,
"rowsCopied": 0,
"copyDuration": 8,
"throughput": 0.01,
"errors": [
{
"Code": 11000,
"Message": "'Type=System.Data.SqlClient.SqlException,Message=The procedure \"spCopyFromOnPremToAzure\" has no parameter named \"@[dbo].[TestEmployee]\".,Source=.Net SqlClient Data Provider,SqlErrorNumber=349,Class=16,ErrorCode=-2146232060,State=1,Errors=[{Class=16,Number=349,State=1,Message=The procedure \"spCopyFromOnPremToAzure\" has no parameter named \"@[dbo].[TestEmployee]\".,},],'",
"EventType": 0,
"Category": 5,
"Data": {},
"MsgId": null,
"ExceptionType": null,
"Source": null,
"StackTrace": null,
"InnerEventInfos": []
}
],
"effectiveIntegrationRuntime": "TestIR",
"usedParallelCopies": 1,
"executionDetails": [
{
"source": {
"type": "SqlServer"
},
"sink": {
"type": "AzureSqlDatabase"
},
"status": "Failed",
"start": "2019-01-30T13:45:19.4402274Z",
"duration": 8,
"usedParallelCopies": 1,
"detailedDurations": {
"queuingDuration": 1,
"timeToFirstByte": 0,
"transferDuration": 7
}
}
]
}
ОШИБКА
{
"errorCode": "2200",
"message": "'Type=System.Data.SqlClient.SqlException,Message=The procedure \"spCopyFromOnPremToAzure\" has no parameter named \"@[dbo].[TestEmployee]\".,Source=.Net SqlClient Data Provider,SqlErrorNumber=349,Class=16,ErrorCode=-2146232060,State=1,Errors=[{Class=16,Number=349,State=1,Message=The procedure \"spCopyFromOnPremToAzure\" has no parameter named \"@[dbo].[TestEmployee]\".,},],'",
"failureType": "UserError",
"target": "Copy Data1"
}
Я предполагаю, что это связано ссохраненный процесс, как бы я структурировал его, чтобы сделать основной выбор из источника и скопировать в приемник?