2015-07-20 72 views
1

我正在尝试在SSIS中使用Execute SQL task。但它不接受路径中的变量值?文件名是动态的,所以它必须来自变量。以下代码是执行SQL任务中的直接输入。执行SQL中的文件路径中的变量值SSIS中的任务?

USE [master] 
go 

RESTORE DATABASE MyDb FROM 
DISK = N'c:\DBRestores\?' 
WITH REPLACE 

go 

然后我使用Parameter Mapping来映射该值,但任务失败。

任何帮助?谢谢

+1

尝试使用变量来动态构造整个SQL字符串。 –

+0

您好@Tab Alleman,感谢您的回复。我试图用动态sql进行封装,但它仍然不能在SSIS中工作。我想将SSIS变量值传递给T-sql语句?我想现在你明白了我的观点。谢谢 – user3583912

+0

当您尝试动态sql时,您是否将SQL Source Type更改为变量?你能发布任务属性的屏幕截图吗? –

回答

1

您可以在表达式中设置动态参数。 在Execute SQL Task Editor,转到Expressions - >Property - >SQLStatementSource - >Expression并放在SQL下面,替换您的动态变量名称并点击Evaluate Expression并检查评估值。

"USE [master] 
go 

RESTORE DATABASE MyDb FROM 
DISK = N'c:\\DBRestores\\" + @[User::VariableParameter] + "' 
WITH REPLACE 

go" 

如果评估值符合预期,那么脚本将接受来自变量的动态文件名。

+0

Hi @Jigar,谢谢你的回复。我会试试这个,让你知道。谢谢 – user3583912

+0

嗨@Jigar,当我检查'Evaluate Expression'时,我尝试了相同的过程。该值显示正确,但是“执行SQL任务”显示“任务验证期间存在错误”。在“常规选项卡”中的“直接输入值”中应该写什么?因为我已经在'Expressions'选项卡中使用了代码。谢谢 – user3583912

+1

在常规选项卡中, 'SQL源类型:'直接输入 'SQL语句:' - 保留空 - 这将自动从表达式 - – Jigar