问题描述
根据我在网上找到的搜索结果,我尝试了几种不同的方法,但结果相同。
我正在处理一个 SSIS 脚本任务,该任务将执行一个需要将 TVP 参数传递给它的存储过程。我已将所有这些连接起来并正常工作,但是当它到达 da.Fill(resultDT)
我收到错误:
填充:SelectCommand.Connection 属性尚未初始化。
OleDbDataAdapter A = new OleDbDataAdapter();
DataTable dt = new DataTable();
A.Fill(dt,Dts.Variables["User::Companies"].Value);
DataTable resultDT = new DataTable();
using (sqlConnection sqlcon = (sqlConnection)(Dts.Connections["RegistryConnection"].AcquireConnection(Dts.Transaction) as sqlConnection))
{
using (sqlCommand cmd = new sqlCommand())
{
cmd.Connection = sqlcon;
cmd.CommandText = "[Registry].[GetClientData_ByCompanyIDs]";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@companyIDs",dt);
using (sqlDataAdapter da = new sqlDataAdapter())
{
da.SelectCommand = cmd;
da.Fill(resultDT);
Dts.Variables["User::Clients"].Value = resultDT;
}
}
}
任何想法我错过了什么?希望这很容易被我忽略。
解决方法
问题是我使用的是 OLEDB 连接管理器,显然无法按照我的方式将其转换为 SQLConnection。
需要设置 ADO.Net 连接管理器,然后 SQLConnection 转换按预期工作。
问题已解决。