假设我们有两个数据库,db_1和db_2。
在db_1中有一个名为'T1'的表,现在,我需要SSIS中的一个包,它会询问名称sql对象。如果我选择'T1',数据将被转移到db_2。
我不知道是否有可能。
答案 0 :(得分:0)
通常SSIS不适用于交互模式。任何用户输入都可以作为配置设置或环境变量引入,也可以作为其他表中的值引入。
或者,您也可以在SSIS包之外提示和捕获输入值,然后在C#或ASP.Net或任何其他交互式平台中执行SSIS包。
那就说 如果你必须提示输入并使用它 ,那么这样做的方法是在脚本组件<中实例化并显示一个表单/ strong>即可。
在包中名为tableName
的适当范围内创建变量。然后使用下面的代码(根据需要进行修改)将tableName
变量的值设置为用户输入的值。最后,在控制流中使用相同的tableName
变量来复制数据。
System.Windows.Forms.Form frm = new Form();
TextBox = new TextBox();
Button submitButton = new Button();
public void Main()
{
submitButton.Text = "Enter source table name";
submitButton.Width = 300;
submitButton.Height = 80;
submitButton.Click += new EventHandler(submitButton_Click);
tableNameTextBox.Name = "Input";
frm.Controls.Add(tableNameTextBox);
frm.Controls.Add(submitButton);
frm.ShowDialog();
MessageBox.Show(Dts.Variables["tableName"].Value.ToString());
Dts.TaskResult = (int)ScriptResults.Success;
}
void submitButton_Click(object sender, EventArgs e)
{
Dts.Variables["tableName"].Value = tableNameTextBox.Text;
frm.Close();
}