我有一个问题 - 我想在 SQL Server 存储过程中使用临时表,它将从 SSIS 包执行。
我读了一些如何做到这一点的提示,并尝试了这个(第一个答案):在 SSIS 中使用临时表但没有成功。
我有 MS Visual Studio 2010,这个版本不会有问题吗?
这是我在存储过程中的代码:
CREATE PROCEDURE some_procedure
AS
SET NOCOUNT ON
IF 1 = 0
BEGIN
SELECT CAST(NULL AS int) as number
END
CREATE TABLE #some_table (number int)
INSERT INTO #some_table VALUES (250)
SELECT number FROM #some_table
感谢您的任何建议或经验。
以下是来自 Visual Studio 的错误消息:
数据流任务 [OLE DB 源 [1]] 出错:SSIS 错误代码
DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:
0x80004005。 OLE DB 记录可用。资料来源:“微软 SQL
服务器本机客户端 11.0" Hresult: 0x80004005 描述: "
无法确定元数据,因为语句“INSERT INTO”
过程“some_procedure”中的#some_table VALUES (250)'使用临时表。”。
数据流任务 [OLE DB 源 [1]] 出错:无法检索列
来自数据源的信息。确保您的目标表在
数据库可用。
在 SQL Server 2012 中,如果使用临时表,则必须指定结果集。
这是 SSIS 用于返回输出元数据的 sp_describe_first_result_set 过程的问题。
E.g.
EXEC dbo.RptResults_StoredProcedure
Becomes
EXEC dbo.RptResults_StoredProcedure
WITH RESULT SETS
((
Date NVARCHAR(10),
Location VARCHAR(12),
Department CHAR(1),
Shift CHAR(1),
ForecastSales DECIMAL(18,2),
ActualSales DECIMAL(18,2)
))
欲了解更多信息请查看
http://blog.concentra.co.uk/2014/08/22/column-metadata-dependent- Correctly-ssis-data-flow-task-stored-procedure-inputs/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)