我当前正在链接服务器上调用存储过程。此存储过程将数据选择到此链接服务器上的临时表中。然后,我尝试将这些数据选择到本地服务器上的临时表中,以便可以操纵数据并将其拉入各个表中。
如果我在服务器上手动运行存储过程,则可以运行查询的第二部分(-从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';
答案 0 :(得分:0)
您可以从链接服务器过程中返回数据作为简单选择,而不是在临时表中选择它,然后可以在本地服务器上执行以下操作:
INSERT INTO ##TempTable(ColNames)
EXECUTE [SERVER\INSTANCE].[DATABASE].[dbo].[Extract_Sales_Data]
--select data
SELECT * FROM ##TempTable