web-dev-qa-db-ja.com

共有物理フォルダーをファイルストリームにマッピングする

SQL Serverで作業する必要のある大量の画像、テキストなどがあるプロジェクトに取り組んでいます。 Filestreamとfiletable機能の使用を考えていました。ただし、ネット上の多くのデータを調べた後でも、以下のクエリに対する回答を見つけることができません。

  1. システム上に共有フォルダーを作成し、それをファイルストリームにマッピングしようとしています。したがって、すべてのユーザーに対してフルアクセスに設定されたアクセスレベルを持つ共有フォルダー(D:\ Ftableとしましょう)を作成しています。ここで、SQL Server構成マネージャーに移動して、このフォルダーをfilstreamの共有フォルダーとして設定しようとすると(ファイルストリームアクセスを有効にするプロパティタブ)、エラーが発生します。Windows共有フォルダー名は有効なWindows共有ではありません。 filestreamフォルダーはローカルフォルダーでなければならないことがわかっていますが、別のローカルフォルダーパス(D:\ testなど)を配置しようとしただけでもエラーが発生します。

  2. また、マップされたドライブにファイルストリーム共有ディレクトリを作成できるかどうかも知りたいですか? 1つのシステムに共有フォルダーを作成し、そのフォルダーを別のシステムにマッピングしました(ローカルとして表示されるように)。ただし、もう一度、マップされたドライブの特定のフォルダーをfilestream共有フォルダーとして設定しようとすると、エラーがスローされます。

トピックへのポインタ/ヘルプを本当に感謝します。私たちの主なアクセスは、リモートまたはツールを介してデータを転送できるように、共有されている選択した物理的な場所にファイルストリーム共有を作成することです。

7
Prashant Kumar

これは、filestreamとfiletablesが正確に機能する方法ではなく、SQLサーバーがSQL Server構成マネージャーで指定した共有を作成しようとするため、既存の共有の名前を指定することはできません。これは、共有が通常の共有のようにファイルシステム上のフォルダーに直接マップされているのではなく、データベース用に作成されたファイルストリームファイルグループに存在するNTFSデータコンテナーにマッピングされているためです。

Filestream/filetableには誤解があります。データはファイルシステムに保存されているため、これは単なる通常のフォルダーであり、これは完全に正しいわけではありません。

データベースを作成するときに、ファイルグループの1つがファイルストリームファイルグループであることを指定します。これは通常のファイルグループとは異なり、実際にはデータコンテナーと呼ばれる一連のNTFSフォルダーです。ここにファイルが実際に保存されます。 tこのフォルダーを直接変更しますが、内容を見ることができます(ただし、ここには人間が読めるものは多くありませんが、GUID =フォルダと奇妙な名前のファイル:))。

ファイルをテーブルにコピーするために使用するファイル共有は、実際にはこれらのデータコンテナー内のデータの表現であり、ストリーミングAPIを使用してデータコンテナーに変更を加え、追加するフィルタードライバーを介してWindowsエクスプローラーに提示されます。ファイルテーブルなどへの行.

そのため、ファイルが物理的に保存される場所を指定する場合は、その場所をファイルストリームファイルグループの保存場所として指定する必要があります。その後、共有名を任意の名前に変更できます。

7
steoleary