Ошибка при выполнении задачи сценария служб SSIS для загрузки данных из MongoDB на сервер SQL: не удалось загрузить файл или сборку MongoDB.Driver.Core - PullRequest
0 голосов
/ 29 апреля 2020

Я хочу создать задачу сценария для загрузки данных из MongoDB на SQL Сервер.

Я использую Visual Studio 2017 и цель SQL Версия сервера - 2017.

Цель по умолчанию. NET Версия задачи сценария, основанная на вышеупомянутом, - 4.5, поэтому я получил версия 2.3, которая была самой последней для цели 4.5

. Чтобы получить dll, я сначала использовал NuGet для загрузки пакетов, а затем скопировал следующие dll:

MongoDB.Driver.dll
MongoDB.Driver.Core.dll
MongoDB.Bson.dll

Я следовал инструкции отсюда: http://codeingaddiction.blogspot.com/2011/06/how-to-add-strong-name-to-existing-dll_16.html

Для того, чтобы производить сильные именованные dll.

Наконец, я добавил dll на GA C по следующему пути

C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools

Затем я создал задачу сценария и вручную добавил 3 dll.

Мой тестовый код выглядит следующим образом:

using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Core;
using MongoDB.Bson.Serialization;

[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{

    public override void PreExecute()
    {
        base.PreExecute();
    }

    public override void PostExecute()
    {
        base.PostExecute();

    }

    public override void CreateNewOutputRows()
    {

        MongoClient client = new MongoClient("mongodb://dgm-mongodbdev-01.development.dc.opap:27017");
    IMongoDatabase database = client.GetDatabase("sportsbetting-staging");
    IMongoCollection<BsonDocument> collection = database.GetCollection<BsonDocument>("event");
    collection.Find<BsonDocument>(null).Limit(3);
    Console.WriteLine(collection);

    }

 }

При попытке сборки выдается следующая ошибка:

Severity    Code    Description Project File    Line    Suppression State
Error       The type 'IAsyncCursorSource<>' is defined in an assembly that is not referenced.         You must add a reference to assembly 'MongoDB.Driver.Core, Version=2.3.0.157, Culture=neutral, PublicKeyToken=null'.  

Драйвер ядра MongoDb не имеет никаких дополнительных зависимостей, которые я возможно, пропустил. Для версии 4.5. NET единственной зависимостью является MongoDB.Bson, которая добавляется в качестве ссылки.

Единственная статья, которую я нашел для задачи сценария служб SSIS, это: https://arcanecode.com/2014/01/14/importing-mongodb-data-using-ssis-2012/

Что устарело, потому что использовалась версия драйвера 1.x.

Есть идеи? Сообщение кажется вводящим в заблуждение, потому что кажется ясным, что я не пропускаю никакой зависимости.

1 Ответ

0 голосов
/ 06 мая 2020

Наконец, мой ответ был предоставлен в следующем сообщении:

Как исправить ошибку "Ссылочная сборка не имеет строгого имени"?

Видимо,

MongoDB.Driver.Core.dll
MongoDB.Driver.dll

Имеют ссылку на

MongoDB.Bson.dll

Поэтому перед повторной сборкой

необходимо добавить ключевой токен publi c в файлы il.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...