人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【SQL Server 2000】
SQL Serverでテンポラリ・テーブルを作成した際、そのテンポラリ・テーブルが存在を持続できる時間ってどれくらいでしょうか?
テンポラリ・テーブルを作り、別なテーブルから取り出した値を入れて、テンポラリ・テーブルを参照するプログラムを書いたのですが、テンポラリ・テーブルに値を入れる処理に時間がかかった際に、値が入っているテンポラリ・テーブルからデータを取り出そうとしても空で返ってくる場合があり、もしかしたらテンポラリ・テーブル自体が時間が経って消えてしまったのではないかと思いこの質問をしました。

●質問者: 敷守ほむら
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:SQL Server テンポ データ プログラム 作成
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● hijk05
●5ポイント

コネクションが切られるまでです。

http://q.hatena.ne.jp/answer

◎質問者からの返答

それは分かっています。

コネクションを切っていないから問題なのです。

ただ、質問文の書き方も悪かったですね。申し訳ありません。


2 ● fester
●65ポイント

テーブル名の先頭に# 記号を付けた一時テーブル(ローカル一時テーブル)のことでしょうか?

記載のURLに

「明示的に削除するか、テーブルを作成したセッションが切断されるまで保持されます。」とあります。

時間の経過の具合でそのような現象が発生するということは無いはずです。


考えられることは、

1.「処理途中で一旦セッションが切断された(切断するロジックを通った)」

「空で返ってくる」時点ではもう別セッション(別の一時テーブルを参照)になっている。

2.テーブル名の先頭に## 記号を付けた一時テーブル(グローバル一時テーブル)を使用しており、他のセッションでレコードを消されてしまった。

3.ストアドで一時テーブルを使用しており、ストアドをまたがっている

等だと思います。

http://www.microsoft.com/japan/sql/prodinfo/compare/fororacle/sq...

◎質問者からの返答

>テーブル名の先頭に# 記号を付けた一時テーブル(ローカル一時テーブル)のことでしょうか?

はい、そうです。呼称を間違っていたようで、すみません。


処理途中でセッションを切断するということはまずありえません。質問文に書いている処理を、連続した流れで行っています。

グローバル一時テーブルを使用して他のセッションでレコードを消されてしまったというのもありえません。データベースの該当テーブルにタッチできるのはボク一人だけですが、ボクが他でプログラムを動かさない限りレコードを消すというミスはないですし、その辺の流れは把握しているつもりです。また、今回使っているのはローカル一時テーブルです。(説明不足でした。)

ストアドをまたいでいるというのもありえません。というか、ストアドプロシージャ自体今回のプログラムでは使っていません。


すみません、詳しくデバッグしてみたら、作成したローカル一時テーブルにデータを入れる際、nullではないはずの列にnullの値が来ていたために処理に失敗していました。テンポラリ・テーブルが消えていた訳ではなかったみたいですね。お騒がせいたしました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ