1.使用存储过程传递参数,
2.通过DTEXEC命令行适用工具来执行SSIS包即可.
参考:
create proc ssisexec_up
@param1 nvarchar(100)
as
begin
DECLARE @sqlcmd nvarchar(2000)
DECLARE @returncode int
SET @sqlcmd ='dtexec /f "C:\UpsertData.dtsx" /SET \package.variables[myvariable].Value;'+ltrim(@param1)+ ' '
EXEC @returncode = xp_cmdshell @sqlcmd
end
2.通过DTEXEC命令行适用工具来执行SSIS包即可.
参考:
create proc ssisexec_up
@param1 nvarchar(100)
as
begin
DECLARE @sqlcmd nvarchar(2000)
DECLARE @returncode int
SET @sqlcmd ='dtexec /f "C:\UpsertData.dtsx" /SET \package.variables[myvariable].Value;'+ltrim(@param1)+ ' '
EXEC @returncode = xp_cmdshell @sqlcmd
end
解决方案 »
- 求SQL完全覆盖还原数据库 的SQL语句 谢谢
- sql server怎么获得表最后操作时间?
- 怎么样将一条记录变为多条记录?
- 怎么样删除SQL Refactor,SQL Prompt两个菜单
- 【重要课题】“断点续导”功能如何实现?????详细见内!
- 请帮写一条SQL语句,能把我的数据修正过来【在线等待】
- 怎么做:一批SQl语句,要么全部成功,要么一句都不执行?
- 关于MS SQL SERVER 读EXCEL数据
- 如何能够得到在数据库中执行的操作语句?
- 安装Oracle8i 8.1.5出现故障,急救!!!
- SDE与数据库之间的问题
- SQL行转列的问题..(有详细表结构)..在线等....急!!急!!急!!
下面是示例:使用带参数的包,首先引入
using Microsoft.SqlServer.Dts.Runtime;
然后在程序中为包变量赋值,具体方法代码:private void runetl()
{
Console.WriteLine("ETL start...");
string filepath = installedPath + "\\etl\\Package.dtsx";
Microsoft.SqlServer.Dts.Runtime.Application application = new Microsoft.SqlServer.Dts.Runtime.Application();
Package package = application.LoadPackage(filepath, null, true);
package.Variables["dbservername"].Value = dwservername;
package.Variables["dbname"].Value = dwdbname;
package.Variables["varFolderName"].Value = thispath;
DTSExecResult result = package.Execute();
if (result.Equals(DTSExecResult.Success))
listBox1.Items.Add("ETL success");
else
{
listBox1.Items.Add("ETL failed");
return;
}
}