Road to DBD

Road to DBD

PR

×

カレンダー

バックナンバー

2026.05
2026.04
2026.03
2026.02
2026.01

キーワードサーチ

▼キーワード検索

プロフィール

ジャムシード

ジャムシード

コメント新着

mayggW@ продвижение раскрутка сайта договор Заказать seo поисковую оптимизацию сайт…
通りすがりプログラマー@ Re:複数テーブルによるUPDATE(02/11) 随分前の記事にコメント失礼します。 rown…
ワンコ0995 @ Re:包含データベース(06/02) ((データベース)データベース,)デー…
しぐしぐ@ Re:TOP 100 PERCENT(05/08) お世話になっております。 最近、旧システ…
ハニー@ Re:INSTEAD OFトリガの限界(07/16) 1SQLでやらずに変数に入れればいいじゃん
2009.01.02
XML
カテゴリ: DB-SQL Server 2008
FileStreamを有効にする手順
○InstanceLevel
1) SQL Server構成ツールのサービスのプロパティでFILESTREAMを有効にする
  ・Transact-SQLアクセスに対してFILESTREAMを有効にする
  ・ファイルI/Oストリームアクセスに対してFILESTREAMを有効にする
  の2つをチェックする
 2) sp_configure 'filestream access level',2を実行する
  ・アクセスレベルは上記のサービスのプロパティとリンクしており、
   level=1は「Transact-SQLアクセスに対して。。」に相当する


○DatabaseLevel
データベースにFileStream用のファイルが必要
 CREATEならば以下の通り
 CREATE DATABASE DB1
ON PRIMARY (NAME=DB1,FILENAME='C:\...\DB1.mdf'),
FILEGROUP FS1 CONTAINS FILESTREAM (NAME=FS1,FILENAME='C:\...\FS1')
LOG ON (NAME=DB1LOG,FILENAME='C:\...\DB1LOG.ldf')
GO

ALTERならば以下の通り
 ALTER DATABASE DB1 ADD FILEGROUP FS1 CONTAINS FILESTREAM
GO

GO

○TableLevel
テーブルの項目型はvarbinary(MAX)で、ROWGUIDのフィールドが必須
 CREATE TABLE TB1
(ID uniqueidentifier ROWGUIDCOL PRIMARY KEY,


Transact-SQLを使ってINSERTする方法は以下の通りで変わらない。

INSERT INTO TB1(ID,FILEDATA)
SELECT NEWID() AS ID,
* FROM OPENROWSET(BULK N'C:\...\BINARY.xxx', SINGLE_BLOB) AS FILEDATA

ただし、従来型に比べると以下のように制約が多い。
・テーブルには前述の通り、ROWGUIDを収録するフィールドが必要
・APIを使って更新する場合、まずGUIDを取得してレコードを作成し、それから更新するという2段階のステップが必要で手間がかかる
・スナップショットとデータベースミラーリングがFILESTREAMをサポートしていない

こうやって出来上がったFILESTREAM型のテーブルと、2005から実装可能だった通常のBLOBとの違いはパフォーマンスなのだという。
500MBほどのファイルをアップロードしてみると、わずかながらFILESTREAMの方が早いが、そうやって1GB以上のファイルをテーブルに入れてみると、フルスキャンのスピードは明らかに従来型の方が早い。
そうしてみると、上記制約を考えても敢えてFILESTREAMを使うべきなのかどうかは判断が分かれるところだと思う。





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2009.01.02 22:16:04
コメント(0) | コメントを書く
[DB-SQL Server 2008] カテゴリの最新記事


■コメント

お名前
タイトル
メッセージ
画像認証
上の画像で表示されている数字を入力して下さい。


利用規約 に同意してコメントを
※コメントに関するよくある質問は、 こちら をご確認ください。


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: