#c# #ssis
#c# #ssis
Вопрос:
Я создаю пакет из c #, и этот код используется для работы с SQL server 2016, но теперь с Sql server 2014 у меня возникают проблемы: я добавляю пакет в проект таким образом :
proj.PackageItems.Remove("HSTG_" hstg_table.tablename ".dtsx");
proj.PackageItems.Add(p, "HSTG_" hstg_table.tablename ".dtsx");
В списке подключений проекта я вижу 3 диспетчера подключений,
но в пакете я вижу 0 подключений, а затем, конечно, когда я пытаюсь получить доступ к одному из них таким образом, p.Connections [«META»] выдает ошибку, в которой говорится, что соединение не найдено.
local_variable2
Комментарии:
1. Можете ли вы поделиться своим кодом для
Cast
command, то есть предложением what is insideForEach
? Похоже, ваше приведение не работает.2. Привет, приведение приведено здесь только для распечатки списка подключений, однако на консоли ничего не отображается. п. Соединения. Приведение ConnectionManager>().ToList ConnectionManager>().ForEach(x => Консоль. WriteLine(«после подключения:» x.Name )); // Создайте фиктивный заполнитель, затем прикрепите обработчик событий к нему ComponentGenerationSSIS2014.createSqlTask(стр.Исполняемые файлы, «Фиктивный заполнитель» p.Name , «Выбрать 1», null, стр.Соединения[«META»], null, SqlStatementSourceType.DirectInput);
3. Хм, это странно, я проверил, и у меня есть аналогичный код, работающий с SSIS 2014, package. Соединения имеют Project CMS со ссылкой на Project, добавляемую при добавлении пакета в проект. Возможно, вы храните ссылки на библиотеки DLL SSIS 2016, такие как runtime.wrapper и т.д. Попробуйте проверить это, разорвать связь и снова добавить правильные ссылки.
4. Спасибо, я проверяю ссылку, и все они SQL2014, я работаю в корпоративном офисе и не могу запустить Visual Studio с правами администратора.
Ответ №1:
Вместо чтения существующего ispac я создаю его программно, и он работает. Но я все еще не понимаю, почему это не работает предыдущим способом.
/* Previous way of doing it which work for me on a previous project but not
working anymore
*/
Project proj = Project.OpenProject(fixed_settings.Default.PROJECT_ISPAC);
// New way by creating the project on the fly
//Test creation project
Project proj = Project.CreateProject();
ConnectionManagerItem connectionManagerItem_meta = proj.ConnectionManagerItems.Add("OLEDB", "META.conmgr");
connectionManagerItem_meta.ConnectionManager.Name = "META";
connectionManagerItem_meta.ConnectionManager.ConnectionString = "Data Source=" fixed_settings.Default.server_meta ";Initial Catalog=" fixed_settings.Default.server_meta ";Provider=SQLNCLI11.1;Integrated Security=SSPI;Auto Translate=False;";
ConnectionManagerItem connectionManagerItem_stg = proj.ConnectionManagerItems.Add("OLEDB", "STG.conmgr");
connectionManagerItem_stg.ConnectionManager.Name = "STG";
connectionManagerItem_stg.ConnectionManager.ConnectionString = "Data Source = " fixed_settings.Default.server_stg "; Initial Catalog = " fixed_settings.Default.database_stg "; Provider = SQLNCLI11.1; Integrated Security = SSPI; Auto Translate = False;";
ConnectionManagerItem connectionManagerItem_hstg = proj.ConnectionManagerItems.Add("OLEDB", "HSTG.conmgr");
connectionManagerItem_hstg.ConnectionManager.Name = "HSTG";
connectionManagerItem_hstg.ConnectionManager.ConnectionString = "Data Source=" fixed_settings.Default.server_hstg ";Initial Catalog=" fixed_settings.Default.database_hstg ";Provider=SQLNCLI11.1;Integrated Security=SSPI;Auto Translate=False;";