SQL Serverインスタンスのルートディレクトリを別のドライブに置くと便利ですか?


29

SQL Serverのインストール時にデフォルトのパスの多くを変更できることはわかっています。一般的に、インストールを行うと、データフォルダーとログフォルダーを別々のドライブ(通常はDとE)に変更しますが、最近、デフォルト以外のインスタンス名を実行し、mdfファイルとともにDドライブ上にあるインスタンスルートディレクトリを設定しているプレインストールマシン。これは、通常はフォルダーとデータベースファイルだけが含まれる比較的クリーンなドライブに、SQL Serverバイナリも完全にインストールできるようになったことを意味します。

すなわち、私は今次のものを持っています:

C:\Program Files\Microsoft SQL Server\ --Base Install
D:\Microsoft SQL Server\MSSQL10_50.MyInstance --Instance Binaries
D:\Microsoft SQL Server\MSSQL10_50.MyInstance\MSSQL\DATA --Data Files
E:\Microsoft SQL Server\MSSQL10_50.MyInstance\MSSQL\LOGS --Log Files

通常、私は次のようなもので実行します:

C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\ --Base Install & Default Instance Binaries
D:\MSSQL\DATA --Data Files
E:\MSSQL\LOGS --Log Files

別のインスタンスバイナリフォルダーが必要な理由は理解できますが、これらすべてのバイナリを別のドライブに配置することがなぜ役立つのかわかりません。

なぜそれが妥当なことなのか、誰にも教えてもらえますか?それとも、まったく違いはありませんか?私にはそれはひどく乱雑に見える...

回答:


23

インスタンスルートの分割に関して、それを行うことを支持するいくつかの議論があります。

  1. 一部の人々は、OSおよびOSバイナリ専用の「C」ドライブを保持することに賛成しています。これにより、Cドライブでクラッシュが発生した場合の回復のためのいくつかの異なるオプションが提供され、OSが他のアプリと共有することでスペース関連の問題を引き起こしたり受け取ったりするのを防ぐことができます。
  2. SQL Serverのバイナリを他のプログラムから分離し、エラーログが保存されるLogsフォルダーなどの重要なフォルダーの可用性を確保しています。このフォルダーは、SQL Serverの起動時にアクセスできる必要があります。基本的に、あなたは他人から身を守っています。

SQL Serverのバイナリ/インスタンスファイルは、他のプログラムファイルを配置するのと同じ場所に配置できます。しかし、そうする場合は、少なくともシステムデータベースファイルと、場合によってはデフォルトのバックアップ場所を取得し、別の場所に移動するようにしてください。

ここで、再生するドライブ文字の数に制限がない場合に私がする傾向があります(少なくとも、ここでは文字は重要ではありません)。

  • C-OSおよびシステムレベルのファイル。のみ
  • D-すべてのアプリのプログラムファイル(SQL Serverを含む)
  • S-通常、インスタンスレベルのファイル/ SQL Serverシステムデータベースとログファイル(TempDBを除く)(注。複数のインスタンスがある場合、これらのうち4つは作成しません。すべてのインスタンスのすべてのSQLバイナリを配置しますほとんどの状況ではS、フォルダーが分離を提供します)

ED-別の注意-私はしばしば「S」ドライブを利用できません。1日の終わりに、Master、Model、MSDB、およびResource dbのシステムデータベースファイルをユーザーの一部と同じドライブに配置しますデータベースファイルがありますが、混乱を少なくするために論理的に分離するために別のフォルダーに配置することは、世界の終わりではありません。)

  • F-ユーザーデータベースのデータファイル
  • L-ユーザーデータベースのログファイルドライブ
  • T-TempDB
  • X-バックアップドライブ(ただし、多くの場合、バックアップ後のコピーに料金を支払うことなく、ネットワークドライブにバックアップをストリーミングすることを選択し、すぐに別の場所のストレージにバックアップします。)

多くの場合、より多くのデータドライブとログドライブがあり、時には別のTempDBドライブがあります。複数のインスタンスを追加すると、ドライブ文字がすぐになくなる可能性があります。インスタンスレベルのファイルをC:に置くことで、確実に逃げることができます。そして、私はそのようにセットアップされたクライアントのために多くのヘルスチェックを行います-そして、私は「ああすごい..私たちは今それを修正しなければなりません」と言うことはありません。それらを変えてもらいます。マスターデータベースとMSDBデータベースも移動する場合があります。

しかし、これらを分割しないと、世界は終わりません。利点は、ファイルを個別に保持するだけだと思います。DBAとしては、会社の他の役割、他のアプリケーション、他のインストールなどに関して健全な妄想を抱えている必要があります。また、競合の可能性から自分を孤立させることができれば、それだけ良くなります。また、再インストールと回復のためのオプションがいくつか提供されます。したがって、バイナリをCから分離します。しかし、私のアドバイスは、インスタンスごとに別々のドライブに夢中になることではありません。


3

さて、Windowsには26個のドライブ文字しかありません。1
ただし、マウントポイントを使用する可能性があります。2

したがって、25台の異なる(SQL、Web、...)サーバーを1台のマシンにインストールする必要がある場合、サーバーの1つに1つのドライブ文字を使用するのが理にかなっています。
ただし、サーバーが1つしかない場合は、ログファイル、データベース、およびプログラムファイルに異なるドライブ文字を使用する方が合理的です。
また、ログ/データベース/プログラムファイルが異なるフォルダーにある場合は、それらを分割することもできます。

  1. SQLサーバーを停止します
  2. パーティションを追加する
  3. すべてのデータベースファイルをパーティションにコピーします
  4. マウントポイントを、データベースファイルがあるフォルダーに変更します(例:d:\ database)
  5. 終わった

これは質問にまったく答えません。ドライブ文字やマウントポイントについて尋ねるのではなく、インスタンスルートを別のドライブに配置するのが理にかなっている理由を尋ねていました。これらはシステムファイルであるため、私にとっては、システムドライブに残すことは理にかなっています。
adhocgeek

1
誤解して申し訳ありません。SQLに属するすべてのものを1つのドライブにまとめる良い点は、バックアップスクリプトの単純さです。バックアップスクリプトはこのドライブでのみ実行する必要があります。ただし、すべてを1つのドライブに入れる場合は、データベース、バイナリ、およびログを別々のフォルダーに入れる必要があります。そして、システム全体を変更することなく、異なるパーティションでデータを再編成できるというマウントポイントがありました。

@gnomix回答(および質問)の下にある[編集]リンクをクリックすると、いつでも編集できます。
dezso

@gnomix潜在的なバックアップスクリプトの単純さは、データとログを独自のドライブに配置する傾向がある主な理由の1つですが、システムファイルをバックアップする必要はありませんでした。これが一般的な要件であるかどうかを知りたい。私の本能は、システムファイルをシステムドライブ以外に置くと問題が生じる可能性があることを示唆しています。
adhocgeek

1
さらに、ドライブを2つ以上のパーティションに分割しても、ディスクI / Oにはあまり役立ちません。しかし、はい、あなたに完全に同意します。データベースファイルをドライブのルートに配置すると、物事が非常に見やすくなり、物事を見つけやすくなります。通常、すべてをD:\ Data E:\ Logs F:\ Backupなどのディレクトリに配置します
...-user1207758
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.