我使用以下SQL命令创建了一个ADO.NET连接管理器和一个DataReader源:
select
'test' as testcol
INTO
#tmp
select * from #tmp
如果我单击DataReader组件中的刷新按钮,我会收到SqlException“无效的对象名称#tmp”。 SQL语句本身显然有效,并在sql server management studio中正确执行。我也试过在连接管理器上设置DelayValidation,但没有用。
答案 0 :(得分:2)
是INSERT还是SELECT的错误?
如果您只发出一个包含INSERT和SELECT的命令,请尝试在SELECT之前加一个分号。
OP评论后编辑 封装存储过程中的所有逻辑:
CREATE PROCEDURE YourProcedureName
AS
select
'test' as testcol
INTO
#tmp
select * from #tmp
GO
让您的应用程序运行此单个SQL命令:
exec YourProcedureName
下一次OP评论后编辑
OP没有说明他们正在使用哪个SQL Server版本,如果是2005或以上,请尝试CTE:
;with CTEtemp as
(
select
'test' as testcol
)
select * from CTEtemp
答案 1 :(得分:0)
为什么不能将这个“SELECT”测试替换为testcol? SSIS查询解析器可能遇到问题,因为涉及临时表,它需要单个语句,而不是实际的SQL脚本。或者,如果您在上面分享的内容仅仅是一个示例,可能是这样的:
SELECT *
FROM (SELECT 'test' AS testcol)
你能详细说明你在这里想要完成什么,如果是,为什么需要临时表?
答案 2 :(得分:0)
使用elemental.client.Browser.getDocument().getActiveElement()
你的命令将成为
sp_executesql
你必须使用nvarchar字符串(因此是N),并通过将它们加倍来转义单引号。
我和你有同样的问题,这就是我修复它的方法。