We have seen a lot of differences between the temporary variable and the temporary table. Here is a nice difference in the Transaction perspective.
A temporary table is transaction dependent and it abides by the database transaction whereas a temporary variable is not transaction bound.
Sample Query
Temporary table
drop table #temp
create table #temp (id int, val varchar(100))
begin tran ins
insert into #temp values (1,'Venkat')
rollback tran ins
select * from #temp
We are not getting any records indicating the temporary table will bound to the transaction strategies.
Temporary variable
declare @tempval table(id int, val varchar(100))
begin tran ins
insert into @tempval values (1,'Venkat')
rollback tran ins
select * from @tempval
Even we have provided rollback transactions. Records are available in the table variable.


Ankit RanaPosted Aug 15, 2018, 6:20 AM
HI, As you told that temp variable always stored in tempdb, I think you need to reconsider this because the temp variable and temp table are in data memory cache if the recordset is small in size. please see this article: https://www.developerfusion.com/article/84397/table-variables-v-temporary-tables-in-sql-server/
Vivek TripathiPosted Jun 6, 2015, 12:35 PM
Nice
Gowtham KPosted Jun 6, 2015, 8:07 AM
Nice one
Pankaj Kumar ChoudharyPosted Jun 6, 2015, 4:47 AM
Thanks @Santhakumar Sir..........
Santhakumar MunuswamyPosted Jun 6, 2015, 2:17 AM
Thanks for nice article
Rahul PrajapatPosted Jun 5, 2015, 11:32 AM
Nice article panka sir
Atul GuptaPosted Jun 5, 2015, 8:04 AM
Well explained !
NitinPosted Jun 5, 2015, 6:16 AM
nice
Ayush JaiswalPosted Jun 5, 2015, 5:03 AM
Good info