2012-02-23 6 views
0

SQLクエリを実行しています。これには、一時テーブルを作成して処理します。私の質問は複数のユーザーが自分のアプリケーションを使用している場合、mssqlの一時テーブルはどうなりますか?

BEGIN TRANSACTION; 
BEGIN TRY 
IF OBJECT_ID('tempdb..#Temp') IS NOT NULL BEGIN DROP TABLE #Temp; END 
Select * Into #Temp From  [Booking] where purchaseorder='123' 
-- Do some processing on temp table and 
-- save data into some other table. 
IF OBJECT_ID('tempdb..#Temp') IS NOT NULL BEGIN DROP TABLE #Temp; END 

END TRY 
BEGIN CATCH 
    IF @@TRANCOUNT > 0 
     ROLLBACK TRANSACTION; 
END CATCH; 

IF @@TRANCOUNT > 0 
    COMMIT TRANSACTION; 
GO 

が、それは私の一時的ないくつかによって廃棄されますことを指定でき、次のように作成し、テーブルにデータを挿入しています私のapp.Iを使用して10Kのユーザーを言うことができますならば、私の一時的なSQLテーブルに何が起こるかでありますそれを作成したユーザー以外の他のユーザー 私のアプリケーションは、asp.netで

おかげ

答えて

1

テーブルは、クエリの特定の範囲に対してのみ活性で良いだろう、実行している複数のユーザー同じクエリは異なるスコープにあり、相互に影響を与えることはできませんでした。 ##テンポラリテーブルはグローバルで、他のセッションが影響を与える可能性があります。

1

いいえ、地元の一時テーブル(単一#で始まるもの)での接続に固有のものです。別の接続でテーブルを削除する方法はありません。

を試す防御コードを書いているという事実は、事前にのテーブルをドロップするとかなり奇妙です。最も単純なクエリについて

(それらがより容易に範囲を理解しているので)、テーブル変数は、おそらく#で始まる

関連する問題