У меня есть проект фабрики данных Azure.Мне нужно запросить некоторые данные из базы данных SQL Azure, затем загрузить их в xml-файл, заархивировать их и загрузить в blob sotrage.Я не хочу ничего записывать в файловую систему (потому что я думаю, что в базе данных Azure нет хранилища lcoal), поэтому я использую Memorystream.
Эта задача сценария работает с моей локальной базой данных служб SSIS, но не с фабрикой данных Azure:
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.Collections;
using System.Linq;
using System.Data.OleDb;
using System.IO;
using System.IO.Compression;
using System.Data.SqlClient;
using Microsoft.Azure;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
public void Main()
{
CloudStorageAccount storageAccount = null;
CloudBlobContainer cloudBlobContainer = null;
try
{
DataSet ds = new DataSet("FullList");
OleDbDataAdapter oleDa = new OleDbDataAdapter();
DataTable dt = new DataTable("CustomerTable");
oleDa.Fill(dt, Dts.Variables["User::CustomerSelect"].Value);
ds.Tables.Add(dt);
DataTable dt_product = new DataTable("ProductTable");
oleDa.Fill(dt_product, Dts.Variables["User::ProductSelect"].Value);
ds.Tables.Add(dt_product);
DataRelation relation = ds.Relations.Add("relation", ds.Tables["CustomerTable"].Columns["id"], ds.Tables["ProductTable"].Columns["id"]);
relation.Nested = true;
string connstring = Dts.Connections["testolgdev"].AcquireConnection(Dts.Transaction).ToString();
if (CloudStorageAccount.TryParse(connstring, out storageAccount))
{
try
{
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
cloudBlobContainer = cloudBlobClient.GetContainerReference("flat");
string fileName = "xml" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".zip";
var blob = cloudBlobContainer.GetBlockBlobReference(fileName);
using (var stream = new ZipArchive(blob.OpenWrite(), ZipArchiveMode.Create))
{
var entry = stream.CreateEntry("test_dataset_fullresult_onlymem.xml");
using (var es = entry.Open())
{
ds.WriteXml(es);
}
}
}
catch (StorageException ex)
{
Console.WriteLine("Error returned from the service: {0}", ex.Message);
}
}
else
{
Console.WriteLine("Wrong connection string");
}
}
catch (TargetInvocationException e)
{
throw;
}
Dts.TaskResult = (int)ScriptResults.Success;
}
Это ошибка службы SSIS фабрики данных Azure при развертывании и выполнении:
Задача сценария 1: Ошибка: не удалось загрузить файл или сборку 'Microsoft.WindowsAzure.Storage, версия = 4.3.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35' или одна из ее зависимостей.Определение манифеста обнаруженной сборки не соответствует ссылке на сборку.(Исключение из HRESULT: 0x80131040)
Возможно ли это исправить?Могу ли я добавить отсутствующую dll в Azure Datafactory?