[解決済み] SQL Serverへのファイルの保存
質問
古い質問ですが、SQL Server 2012 では、データベースにファイルを保存してもよいのでしょうか。それとも、ファイルはファイルシステムに保存し、データベースでは参照するだけでよいのでしょうか。
もし、データベースにファイルを格納することが最近許容されると考えられるなら、それを行う最も効果的な方法は何でしょうか?
暗号化を施す予定なので、処理が軽快でないことは承知しています。
どのように解決するのですか?
Microsoft Research による、次のような非常に優れた論文があります。 ブロブ化するかしないか .
多くのパフォーマンステストと分析の後の彼らの結論はこうです。
-
画像やドキュメントのサイズが通常 256K 未満である場合、それらをデータベースの VARBINARY カラムに格納する方が効率的である。
-
写真やドキュメントのサイズが通常 1 MB を超える場合、ファイルシステムに格納する方が効率的です (SQL Server 2008 の FILESTREAM 属性により、それらはまだトランザクション制御下にあり、データベースの一部です)。
-
この 2 つの間で、用途に応じて使い分けが必要です。
写真を SQL Server テーブルに入れることにした場合、それらの写真を保存するために別のテーブルを使用することを強くお勧めします。従業員の写真を Employee テーブルに保存しないで、別のテーブルに保存してください。そうすれば、Employee テーブルは無駄がなく、非常に効率的で、クエリーの一部として従業員の写真も常に選択する必要がないと想定されるからです。
ファイルグループについては ファイルおよびファイルグループ アーキテクチャ を参照してください。基本的には、最初から大きなデータ構造用に別のファイルグループを使ってデータベースを作成するか、後で追加のファイルグループを追加します。これを "LARGE_DATA" と呼ぶことにします。
これで、VARCHAR(MAX) または VARBINARY(MAX) カラムを格納する必要がある新しいテーブルを作成するときはいつでも、このファイルグループを大規模データ用に指定することができるようになりました。
CREATE TABLE dbo.YourTable
(....... define the fields here ......)
ON Data -- the basic "Data" filegroup for the regular data
TEXTIMAGE_ON LARGE_DATA -- the filegroup for large chunks of data
ファイルグループに関する MSDN のイントロをチェックして、遊んでみてください!
関連
-
[解決済み] SQL Serverでマテリアライズド・ビューを作成する方法は?
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] SQL Server にテーブルが存在するかどうかを確認する
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】各GROUP BY式は、外部参照でない列を少なくとも1つ含む必要があります。
-
[解決済み] SQL Server MS 2012の現在のセキュリティコンテキストでは、サーバープリンシパルはデータベースにアクセスできません。
-
[解決済み] 「ストアドプロシージャが見つかりませんでした
-
[解決済み] try catch ブロックで @@trancount > 0 を確認する必要があるのはどのような場合ですか?
-
[解決済み] Microsoft OLE DB Provider for SQL Server エラー '80040e14' '=' 付近の構文が正しくない
-
[解決済み] データ損失の可能性があるため、スキーマの更新を終了します。
-
[解決済み] T-SQL XOR 演算子
-
[解決済み] SSRS 2つ目の文字列の前にある文字列から部分文字列を抽出する
-
[解決済み] 変数に値を代入するSELECT文は、データ検索操作と組み合わせてはいけません。
-
[解決済み] SQL ServerでCreateステートメントを使用してtempテーブルを作成する方法は?