如何将系统变量值传递给执行SQL任务中的SQL语句?

mro*_*ius 8 variables ssis

SSIS 2008.非常简单的任务.我想检索一个系统变量并在SQL INSERT中使用它.我想检索值System:MachineName并在insert语句中使用它.

使用该语句INSERT INTO MYLOG (COL1) SELECT @[System::MachineName]会出错Error: ..failed to parse. Must declare the scalar variable "@"

使用语句SELECT @System::MachineNameSELECT @@[System::MachineName] 给出错误'Error Incorrect systax near '::'

我不是试图将参数传递给查询.我已经搜索了一天但却找不到如何做这个简单的事情!

小智 16

这是你可以做到这一点的一种方式.SSIS 2008 R2使用SQL Server 2008 R2作为后端创建了以下示例包.

  • 在名为的SQLServer数据库中创建一个示例表 dbo.PackageData

表结构

  • 创建一个SSIS包.
  • 在SSIS上,添加一个名为SQLServer连接到数据库的OLE DB连接管理器,比如说连接到SQL Server数据库.
  • 在"控制流"选项卡上,拖放一个 Execute SQL Task
  • 双击"执行SQL"任务以执行"执行SQL任务编辑器".
  • General编辑器的选项卡上,将该Connection属性设置为名为SQLServer的连接管理器.
  • 在属性中SQLStatement,输入insert语句INSERT INTO dbo.PackageData (PackageName) VALUES (?)

常规选项卡

  • 在"参数映射"选项卡上,单击"添加"按钮,选择要使用的包变量.相应地更改数据类型.这个例子将把PackageName插入到一个表中,所以Data Type就是这样VARCHAR.将ParameterName 设置为0,表示参数的索引值.单击确定按钮.

参数映射选项卡

  • 执行包.
  • 您会注意到表中插入了一条新记录.我将包名保留为Package.这就是桌子的原因

包数据

希望有所帮助.