【发布时间】:2015-01-10 10:09:24
【问题描述】:
我正在开发一个数据仓库。
我编写了一个脚本来通过创建日期条目来加载维度表(例如 SSAS 向导,但直接在我的 SSIS ETL 过程中)。它在 SSMS 和直接在 SSIS 中的 T-SQL 任务中运行良好,无需使用参数)。 此脚本不提供任何 ResultSet,这只是一个在表中插入数据的循环。
这里是我的查询的快速浏览。
USE [MySQLServerDatabase]
GO
-- Some parameters used by the script.
DECLARE @PREFIX_YEAR_NAME [nvarchar](50) = 'Year ';
DECLARE @PREFIX_QUARTER_NAME [nvarchar](50) = 'Q';
DECLARE @PREFIX_WEEK_NAME [nvarchar](50) = 'W';
DECLARE @PREFIX_MONTH_NAME [nvarchar](50) = 'M';
DECLARE @DefaultBeginDate [datetime] = '01/01/2000';
DECLARE @Date [datetime];
SET @Date = @BeginDate
WHILE @Date <= @EndDate
BEGIN
-- ...
-- INSERT INTO ...
END
-- ...
但是,为了获得更易于使用和维护的东西,我想直接在脚本中使用 SSIS 变量。
这是我的参数(Project.params 文件)。 我的脚本需要它们全部工作:
然后,我添加了一个“执行 SQL 任务组件”,其中包含我的 SQL 查询(OLEDB 连接,直接输入法)。我创建了 5 个参数:
如何在 SQL 查询中使用参数? 我试图在脚本中使用与变量相同的名称,它不起作用。 我尝试使用索引(0、1、2 等)名称并使用“?”在脚本中,我不工作。
这是使用 '?' 时的错误作为参数:
错误:执行 SQL 任务时出现 0xC002F210,执行 SQL 任务:正在执行 查询“DECLARE @PREFIX_YEAR_NAME nvarchar = ?; D...”失败 出现以下错误:“生成了多步 OLE DB 操作 错误。检查每个 OLE DB 状态值(如果可用)。没有工作 完成。”。可能的失败原因:查询有问题,“ResultSet” 属性设置不正确,参数设置不正确,或 未正确建立连接。任务失败:执行 SQL 任务
有什么办法解决这个问题吗?
谢谢。
【问题讨论】:
-
你能发布你使用的 sql 脚本吗?作为参数?
标签: sql-server sql-server-2008 tsql ssis sql-server-2012