現在オフラインです。再接続するためにインターネットの接続を待っています

[SQL]INF: tempdb を別のデバイスに移動する方法

この記事は、以前は次の ID で公開されていました: JP187824
サポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。
概要
デフォルトで tempdb は master デバイスにあります。完全に他のデバイスに存在するように、tempdb を移動したいことがあるかもしれません。この記事は、別のデバイスに tempdb を移動する方法について説明しています。
詳細
tempdb を別のデバイスに移動するための基本的な手順は、最初に tempdb を tempdb in RAM に置き、それから、tempdb を置きたいデバイスだけがデフォルト デバイス (少なくとも 2 MB の利用可能な領域があること) であることを確認し、そして最後に RAM からの tempdb の取り出しになります。これは、SQL Enterprise Manager (SEM) GUI ツール、または ISQL コマンドの実行のいずれでも行うことができます。

注意: ここに記述された各オプションは、tempdb を置く新しいデバイスを作成するための手順を含んでいます。ただし、新しいデバイスを作成しなくても、既存のデバイスを利用することができます。既存のデバイスを使用する場合、新しいデバイスの作成について扱っている以降の手順をスキップして、残りの手順にしたがってください。同様に、既存のデバイスを使用する場合、tempdb を RAM から取り出す時に使用するデバイスには、少なくとも 2 MB の利用可能な空き領域があることを確認してください。

SQL Enterprise Manager を使用して tempdb を移動する

  1. Master.dat ファイルの最新のバックアップがあることを確認してください。これを行うには、SQL Server をシャットダウンし、Master.dat ファイルを別の場所にコピーしてください。
  2. SQL Enterprise Manager を起動します。以下の手順を実行して tempdb の新しいデバイスを作成します。
    1. データベース デバイス フォルダで右クリックして、ショートカット メニュー上の新規デバイスをクリックします。あるいは、管理メニューのデータ ベースデバイスをクリックして、そしてツール バーの "新規デバイス" ボタンをクリックすることもできます。
    2. 名前ボックスで、"TEMPDEVICE" (クォーテーション マークを除きます) と入力して、デフォルト デバイス オプションを選択するためクリックします。
    3. サイズ ボックスで、新しいデバイスに必要とするメガバイト単位の数を入力します (たとえば、100-MB のデバイスのためには 100 と入力します)。
    4. すぐに作成をクリックします。
  3. 一時的に RAM に置くために tempdb を設定します。これを行うには、以下の手順を実行してください。
    1. サーバー名を右クリックし、ショートカット メニュー上の環境設定をクリックします。あるいは、サーバー メニューをクリックして、SQL Server を指して環境設定をクリックすることもできます。
    2. 設定タブをクリックします。
    3. "tempdb in RAM (MB)" 設定オプションが見えるまでスクロール ダウンします。カレント列で、tempdb に割り当てる RAM のメガバイト単位の数を入力します (たとえば、2)。これは、一時的なものです。そして、OK をクリックします。
  4. master デバイスや他のデバイスがデフォルト デバイスにならないようにします。これを行うには、以下を実行します。
    1. データベース デバイス フォルダの下の master デバイスをダブルクリックするか、master デバイスを右クリックしてショートカット メニュー上の編集をクリックします。あるいは、管理メニューのデータベース デバイスをクリックして、master デバイスを選択し、それからツール バーの "デバイスの編集" ボタンをクリックすることもできます。
    2. デフォルト デバイス チェック ボックスをクリアするためにクリックし、すぐに変更をクリックします。
    3. この手順の手順 2 で作成した TEMPDEVICE を除いた、その他のデフォルト デバイスに対して a から b の手順を繰り返します。
  5. SQL Server をシャットダウンし再起動します。この時 tempdb は master デバイス上でなく RAM にあるはずです。
  6. tempdb を RAM から取り出します。これを行うには、この手順の手順 3 を繰り返し実行しますが、カレント列の "tempdb in RAM (MB)" 設定オプションでは 0 を入力します。
  7. 再度 SQL Server をシャットダウンし再起動します。既に master はデフォルトデバイスではないので、tempdb はデフォルト デバイスとして定義した新しいデバイス (すなわち、TEMPDEVICE) に移動します。
  8. SQL Server の再起動後、tempdb にはデフォルト オプションが設定され、2 MB のデフォルト サイズになっています。tempdb データベースのオプションは変更することが可能で、そのサイズは以降の手順を実行することで拡張できます。
    1. データベース フォルダの下の tempdb をダブルクリックするか、tempdb を右クリックしてショートカット メニュー上の編集をクリックします。あるいは、管理メニューのデータベースをクリックして、tempdb を選択し、それからツール バーの "データベースの編集" ボタンをクリックすることもできます。
    2. オプション タブで、以下の (どんな場合でも望ましいと思われる) オプションの設定を確認してください。
      • Select Into/Bulk Copy が有効になっている。
      • チェックポイント時のログ切捨てが有効になっている。
      • シングル ユーザーが無効になっている。
      • DBO 専用が無効になっている。
    3. データベース タブで、サイズ ボックス内の拡張ボタンをクリックします。
    4. データ デバイスの中で、TEMPDEVICE を選択します。
    5. サイズ (MB) ボックスの中で tempdb に追加するメガバイト単位の数を入力します。たとえば、8 と入力した場合、tempdb に 8 MB 追加し合計サイズが 10 MB になります。
    6. すぐに拡張ボタンをクリックします。
    データベース サイズの拡張に関する詳細は、SQL Server Books Online のトピック "データベースの拡張と縮小" をご覧ください。

ISQL を使って tempdb を移動する

  1. master.dat ファイルの最新のバックアップがあることを確認します。
  2. 以下のようなステートメントを使用して tempdb の新しいデバイスを作成します。
         DISK INIT     NAME = 'TEMPDEVICE',     PHYSNAME = 'C:\MSSQL\DATA\TEMPDEV.DAT',     SIZE = 51200,     VDEVNO = 250
    注意: この例は tempdb 用に 100-MB のデバイスを作成します。SIZE オプションは必要に応じて調整可能です。
  3. 以下のステートメントを実行し、tempdb を RAM に置いて、master デバイスがデフォルト デバイスとならないようにし、デフォルト デバイスを新しく作成された TEMPDEVICE にします。
         sp_configure 'allow updates', 1     go     reconfigure with override     go     sp_configure 'tempdb in ram', 2     go     sp_diskdefault master, defaultoff     go     sp_diskdefault tempdevice, defaulton     go     reconfigure with override     go
    注意事項:
    • sp_configure の 'tempdb in ram' オプションは MB で指定します。'memory'パラメータのように 2-KB ページではありません。
    • 他にもデフォルト デバイスがある場合、これらのデバイスに対しても同様に、sp_diskdefault を defaultoff オプションで実行する必要があります。sp_helpdevice ストアド プロシージャを実行して、他にデフォルト デバイスがあるかどうか調べることができます。
  4. SQL Server をシャットダウンし再起動します。この時 tempdb は master デバイス上でなく RAM にあるはずです。
  5. ここで sp_configure を使って tempdb を RAM から取り出します。
         sp_configure 'tempdb in ram', 0     go     reconfigure with override     go
  6. 再度 SQL Server をシャットダウンし再起動します。既に master はデフォルトデバイスではないので、tempdb はデフォルト デバイスとして定義した新しいデバイスに移動します。
  7. SQL Server の再起動後、tempdb はデフォルト サイズの 2 MB になっています。このサイズは、以下のような ALTER DATABASE ステートメントを使って拡張することができます。
         ALTER DATABASE tempdb     ON TEMPDEVICE = 8
    このステートメントは、合計サイズが 10 MB になるよう 8 MB だけサイズを増やしています。ALTER DATABASE ステートメントに関する詳細は SQL Server BooksOnline のトピック "ALTER DATABASE ステートメント" をご覧ください。
  8. tempdb に設定されている、以下のデータベース オプションを確認してください。
    • Select Into/Bulk Copy が有効になっている。
    • チェックポイント時のログ切捨てが有効になっている。
    • シングル ユーザーが無効になっている。
    • DBO 専用が無効になっている。
    これを行うには、sp_dboption ストアド プロシージャを使用します。データベース オプションの参照や変更のための sp_dboption の使用方法に関する詳細は、SQL Server Books Online のトピック "sp_dboption システム ストアド プロシージャ" をご覧ください。
その他の詳細については、以下の Microsoft Knowledge Base の記事をご覧ください。
文書番号:401955
タイトル: [SQL] tempdb in RAM を使用するべきとき


ARTICLE-ID:158586
TITLE : PRB: 'Temp_db' Device Causes Problems Starting SQL Server


ARTICLE-ID:141183
TITLE : PRB: Log Segment Moved to Device Incorrectly if TempdbExpanded


ARTICLE-ID:110139
TITLE : INF: Causes of SQL Transaction Log Filling Up
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID187824(最終更新日 1998-07-31) をもとに作成したものです。

dev temp db
プロパティ

文書番号:187824 - 最終更新日: 11/11/2003 15:58:57 - リビジョン: 3.0

  • Microsoft SQL Server 6.5 Standard Edition
  • db dev enough for in kbhowto not temp tempdb KB187824
フィードバック