У меня есть старая программа DotNet, скомпилированная в 32-битной версии, которая имеет форму для загрузки и выполнения пакета служб SSIS.Для выполнения пакета SSI он использует сборку Microsoft.SqlServer.DTSRuntimeWrap, которая представлена в 32-разрядной версии, как показано ниже.
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
.
.
namespace WinFmAppETLControl
{
public class FrmControl : Form
{
this.ProcessStep1();
private void ProcessStep1()
{
if (((IDTSApplication100)new ApplicationClass()).LoadPackage("C:\\Users\\abc\\MyData\\WinFmAppETLControl\\ETL\\SUN Daily ETL\\Batch and SysidRange.dtsx", true, (IDTSEvents100)null).Execute() == DTSExecResult.DTSER_SUCCESS){
MessageBox.Show("Success");
}
else{
MessageBox.Show("Failure");
}
}
}
}
Теперь мне нужно перенести эту программу на 64-разрядную версию нового сервера.Создаю exe-файл для запуска на сервере.Когда я собираю проект в x64 и запускаю на сервере, я получаю ошибку ниже при выполнении exe-файла.
Не удалось загрузить файл или сборку 'Microsoft.SqlServer.DTSRuntimeWrap, Version = 10.0.0.0, Культура = нейтральная, PublicKeyToken = 89845dcd8080cc91 'или одна из ее зависимостей.Была предпринята попытка загрузить программу с неверным форматом.
Когда я собираю проект в x86 и запускаю на сервере, я получаю ошибку ниже при выполнении exe-файла.
System.Runtime.InteropServices.COMException (0x80040154): получение фабрики классов COM для компонента с CLSID {BA785E28-3D7B-47AE-A4F9-4784F61B598A} не выполнено из-за следующей ошибки: 80040154 Класс не зарегистрирован (исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
Служба SSIS, работающая на сервере, является 64-битной (D: \ Program Files \ Microsoft SQL Server \ 110 \ DTS \ Binn \ MsDtsSrvr.exe ").
Пожалуйста, помогите, если кто-нибудь знает. Я проверил много ответов, но не смог найти решение. Я относительно новичок в .Net