У меня есть пакет, внутри которого у меня есть два компонента: первый — это SQL-задача для выполнения и получения результирующего набора ADO, второй — скриптовая задача, я дважды конвертирую результирующий набор в System.Data.DataTable
, что-то вроде этого:
System.Data.DataTable t1= new System.Data.DataTable();
OleDbDataAdapter adp = new OleDbDataAdapter();
adp.Fill(t1, Dts.Variables["ResultSet"].Value);
System.Data.DataTable t2= new System.Data.DataTable();
OleDbDataAdapter adp2 = new OleDbDataAdapter();
adp2.Fill(t2, Dts.Variables["ResultSet"].Value);
В результате t1 заполнен правильно, а t2 остается пустым; более того, я явно установил [User::ResultSet]
как переменную только для чтения, кажется, что переменная просто опустела, даже если я добавлю еще одну задачу сценария позже и сделаю то же самое снова, заполненные DataTable
все еще пусты.
Есть много способов обойти мой случай, поэтому я не ожидаю решения здесь. Но я хочу прояснить эти вещи: есть ли у OleDbDataAdapter.Fill
побочные эффекты для исходных наборов данных, и как моя переменная только для чтения изменила свое значение?