如何从链接的临时表中选择本地的临时表?

时间:2019-07-02 08:16:30

标签: sql-server tsql

我当前正在链接服务器上调用存储过程。此存储过程将数据选择到此链接服务器上的临时表中。然后,我尝试将这些数据选择到本地服务器上的临时表中,以便可以操纵数据并将其拉入各个表中。

如果我在服务器上手动运行存储过程,则可以运行查询的第二部分(-从TEMP TABLE中选择数据)。但是,尽管我能够通过查询的第一部分成功调用存储过程,但是当它到达第二部分时,却出现以下错误:

Msg 8180, Level 16, State 1, Line 66
Statement(s) could not be prepared.
Msg 208, Level 16, State 1, Line 66
Invalid object name '##Sales'.

这里还有其他方法可以使用吗? SSIS现在不是选项,要求是通过T-SQL进行编码。

--CALL STORED PROC FOR SALES DATA
DECLARE @RunSalesStoredProcSQL VARCHAR(1000);
SET @RunSalesStoredProcSQL = 'EXEC [SERVER\INSTANCE].[DATABASE].[dbo].[Extract_Sales_Data]';
        EXEC (RunSalesStoredProcSQL) AT [SERVER\INSTANCE];
        Print ‘Sales Procedure Executed';


--SELECT DATA FROM TEMP TABLE
SELECT * 
    INTO ##TempTable
        FROM OPENQUERY([SERVER\INSTANCE], 'SELECT * FROM dbo.##Sales');
        Print 'Data Selected';

1 个答案:

答案 0 :(得分:0)

您可以从链接服务器过程中返回数据作为简单选择,而不是在临时表中选择它,然后可以在本地服务器上执行以下操作:

INSERT INTO ##TempTable(ColNames)
EXECUTE [SERVER\INSTANCE].[DATABASE].[dbo].[Extract_Sales_Data]

--select data
SELECT * FROM ##TempTable