Are table variables thread safe on sql server 2008 r2?
For example, I am going to use the following table variable inside one of my stored procedures;
DECLARE @MyTempTable TABLE
(
someField int,
someFieldMore nvarchar(50)
)
Is this variable thread safe? if multiple request comes at the same time, do you think there would be a confl开发者_如何学JAVAict?
Yes.
"Thread safe" would be "scope-safe" or "connection-safe" in SQL Server. Scope-safe implies connection-safe too.
Table variables are like normal variables: local to that scope. Each connection is isolated from each other, and each connection is a series of scopes
The best example of this is the difference between
- SCOPE_IDENTITY = scope safe
- @@IDENTITY = connection safe, not scope safe
- IDENT_CURRENT = not safe either way
See: @@IDENTITY vs SCOPE_IDENTITY() vs IDENT_CURRENT [sql server 2005]
The table variable is local in the scope where it is created. Two simultanious connections does not share the table variable.
精彩评论