アーカイブ

Accessで画像ファイルを登録・更新

AccessでSQLServerのへ画像ファイルを登録する際に
下記のようなINSERT文を書いたのですが

INSERT INTO TestTbl(id, filedata)
SELECT 0, BulkColumn
FROM OPENROWSET(BULK N’C:\image\sample.jpg’, SINGLE_BLOB)

エラーが発生しました。

エラー内容:FROM 句の一括行セットには相関名を指定してください。

というエラーが表示されてしまいました。
色々調べた結果、次のように記述すると上手く動作しました。

■insert文
INSERT INTO TestTbl(id, filedata)
SELECT 0, t1.*
FROM OPENROWSET(BULK N’C:\image\sample.jpg’, SINGLE_BLOB) AS t1

■update文
UPDATE TestTbl
SET filedata = (SELECT t1.* FROM OPENROWSET(BULK N’C:\image\sample.jpg’, SINGLE_BLOB) AS t1)”
WHERE id = ‘1111’

上記を応用して、画像以外の項目も一緒に登録 or 更新も出来ました。
でも、画像ファイル等のバイナリデータは、極力DBへ登録するのではなく
外部ファイルとして持っておいてDBには、ファイル名のみ保持している方が
DBのファイルサイズが膨大になったりという問題もなくなるし
管理もしやすいと個人的には思っています。
(今回は、クライアントさんの要望により登録してしまいました)

なお、SQLServerのimage型は将来削除されるようで
varbinary(MAX)を使用することを推奨されているようです。

参考サイト:http://chiebukuro.spn.yahoo.co.jp/detail/q1126411971?fr=pofee_pc

SQLServer2008のデバッグ方法

SQLServerの関数を作成しました。
デバッグ方法に少し悩んだので覚え書きしておきます。

1.関数を登録します
CREATE FUNCTION getXXX(@p1 DATE) ~

2.クエリを作成
DECLARE @date1 date
SET @date1 = ‘2010-9-25’
SELECT dbo.getXXX(@date1) AS ‘@date’

3.デバッグ
関数の止めたい箇所にブレークポイントを設定します。
  ↓
クエリの画面でデバッグ→デバッグ開始
  ↓
ステップ実行
  ↓
結果がクエリの下部に表示される

以上です。
私は、SQLServer2000は少し使ったことありますが、もう覚えていなくて
色々調べると、ちょっと前まではSQLアナライザというツールで
こういうのをチェックしていたようですが、2005から変わったようです。
全て、「SQL Server Management Studio」で出来るようです。

デル株式会社