SQLデータベースにバイナリデータとして内部的に保存されているかなりの数の画像ファイルをエクスポートしようとしています。
SQLでストアドプロシージャを作成するのはかなり新しいので、これをアーカイブする方法について非常に役立つガイドをいくつか見つけましたが、何かが足りないようです。
SQL Server 2008 R2をローカルで実行していて、C:\ドライブ上のフォルダーにファイルを書き込もうとしています。
これが私がこれまでに持っているもののビジネスの部分です:
BEGIN
DECLARE @cmd VARCHAR(8000)
DECLARE @result int
DECLARE curExportBinaryDocs CURSOR FAST_FORWARD FOR
SELECT 'BCP "SELECT Photograph_Data FROM [ALBSCH Trial].[dbo].[Photograph] WHERE Photograph_ID = '
+ CAST(Photograph_ID AS VARCHAR(500)) + '" queryout "' + @OutputFilePath
+ CAST(Photograph_ID AS VARCHAR(500)) + '.jpg"' + ' -n -T'
FROM dbo.Photograph
OPEN curExportBinaryDocs
FETCH NEXT FROM curExportBinaryDocs INTO @cmd
WHILE @@FETCH_STATUS = 0
BEGIN
--PRINT @cmd
EXEC @result = xp_cmdshell @cmd
FETCH NEXT FROM curExportBinaryDocs INTO @cmd
END
CLOSE curExportBinaryDocs
DEALLOCATE curExportBinaryDocs
END
xp_cmdshellの呼び出し後、「@ result」は常に「1」(失敗)に設定されます。すべてのテーブル名/フィールドが正しいので、BCP呼び出しに問題があると思われますが、次に何を試すべきかわかりません。
どんな助けやアドバイスも大歓迎です。