5

MS-SQL で「永続的な」一時テーブルを持つことは可能ですか? 私が言いたいのは、現在、グローバル一時テーブルを生成するバックグラウンド タスクがあり、それが他のさまざまなタスクで使用されているということです (これが、グローバルにした理由です)。残念ながら、テーブルが使用されなくなると、SQL によって自動的に削除されます。これは、再構築するためにキューに入れるだけなので、システムによって適切に処理されますが、理想的には、1 日に 1 回だけ構築されるようにしたいと考えています。したがって、理想的には、「1時間これに何も触れない場合は削除する」など、タイムアウトパラメータを設定するようなものを設定できます。

DB の管理 (断片化、ログの増加など) に関連する頭痛の種が増えるため、既存の DB には本当に入れたくありません。これは、データを効果的にロールアップし、24 時間のみ有用であり、より多くを占有するためです。 1 ギガバイト以上の HD スペース。

最悪の場合、私の計画は、tempdb と同じドライブに別の DB を作成し、それを PseudoTempDB のように呼び、自分で削除を処理することです。

どんな洞察も大歓迎です!

4

5 に答える 5

9

テーブルを tempdb.dbo.TempTable として作成すると、次の時点まで削除されません。

a - SQL Server が再起動されます

b - 明示的にドロップします

常に利用できるようにしたい場合は、モデルでそのテーブルを作成して、再起動中にtempdbにコピーされるようにすることができます(ただし、後で作成する新しいデータベースにも作成されるため、削除する必要があります手動で作成するか、スタートアップ ストアド プロシージャを使用して作成します。ただし、再起動してもデータを永続化する方法はありません。

于 2009-05-11T13:48:49.700 に答える
4

私はあなたのプラン B を採用します。「tempdb と同じドライブに別の DB を作成し、それを PseudoTempDB のように呼び、自分で削除を処理するだけです。」

于 2009-05-10T19:47:20.923 に答える
3

恒久的なテーブルを作成するのはどうですか?たとえば、MyTable。24 時間ごとに 1 回、次のようにデータを更新します。

  1. 新しいテーブル MyTableNew を作成して入力します
  2. トランザクション内で、MyTable を削除し、rename_object を使用して名前を MyTableNew から MyTable に変更します。

このようにして、毎日テーブルを再作成しています。

ログ ファイルが心配な場合は、テーブルを別のデータベースに保存し、復旧モデル: シンプルに設定します。

于 2009-05-10T20:25:01.267 に答える
2

私はこの質問を二重に考えていることを認めなければなりません: 「永続的」と「一時的」は通常一緒にはなりません! 少し常識にとらわれない考え方はいかがですか?おそらく、バックグラウンド タスクで簡単なクエリを定期的に実行して、SQL がテーブルを未使用としてマークしないようにすることができます。そうすれば、作成と破棄をかなり直接的に制御できます。

于 2009-05-10T19:31:19.560 に答える