Forum Discussion
Temp table not working in Pipeline Script activities
- 1 year ago
Hi DominilMs,
Thank you for your follow-up.The problem you are facing happens because temporary tables (like #temp) in Microsoft Fabric are only available within the current session. Even though the operations are done in the same Script activity, Fabric may treat them as separate sessions. This causes the #temp table to disappear and gives the error "Invalid object name '#temp'."
Please follow these steps to fix the issue:
-
Use permanent tables instead of temporary ones. Permanent tables are saved in your Lakehouse or Data Warehouse and can be used across different activities. This way, you will not have session-related issues. Permanent tables stay available in all sessions and activities, so the tables won’t disappear.
-
If you don’t want to use permanent tables and your work is in only one Script activity, use table variables (like temp). These variables work only during the execution of that activity.
If you have any more questions, please feel free to ask the Microsoft Fabric community.
Thank you.
-
Thankyou, nilendraFabric, for your response.
Hi DominilMs,
We appreciate your question on the Microsoft Fabric Community Forum.
From what I understand, @Temp TABLE refers to table variables, which are limited to the current batch or block of the script. This means they work only inside a single Script activity if all operations happen within that same script. On the other hand, #Temp TABLE are temporary tables that only exist for the current SQL session.
In Microsoft Fabric Pipelines, every Script activity runs in its own separate session. Because of this, the #Temp table created in one activity or statement is not accessible in the next activity, even if it is inside the same pipeline. This is why you see the error: 'Invalid object name '#temp'.'
To keep data available across different activities or to avoid this problem, please follow the steps below:
- Use permanent tables by creating a normal table in your Lakehouse or Warehouse for temporary data. Permanent tables stay available across sessions, so you will not face the scope problem.
DROP TABLE IF EXISTS dbo.TempStorage;
CREATE TABLE dbo.TempStorage (sCode VARCHAR(30));
INSERT INTO dbo.TempStorage (sCode) VALUES ('1');
SELECT * FROM dbo.TempStorage; - If you prefer to use temporary structures like @Temp, make sure all related operations (creation, insert, and select) happen inside one script only. This works because @Temp is available only during the execution of one activity.
DECLARE @Temp TABLE (sCode VARCHAR(30));
INSERT INTO @Temp (sCode) VALUES ('1');
SELECT * FROM @Temp;
If you find this response helpful, please mark it as the accepted solution and give kudos. This will help other community members facing the same problem.
If you have any more questions, please feel free to ask the Microsoft Fabric community.
Thank you.
Thanks for your response
v-pnaroju-msft wrote:Thankyou, nilendraFabric, for your response.
In Microsoft Fabric Pipelines, every Script activity runs in its own separate session. Because of this, the #Temp table created in one activity or statement is not accessible in the next activity, even if it is inside the same pipeline. This is why you see the error: 'Invalid object name '#temp'.'
The problem is that all these #temp table instructions are in the same activities in the same Script, thats why I can't understand why it doesn't work
- TTAZNG__6 months agoFrequent Visitor
My exact question!