2017-03-21 29 views
0

SQL ServerにPDFファイルを挿入します。PDFをSQL Serverに挿入

私は2つの異なるクエリを試してみましたが、それでも同じエラーになっ:

Msg 4861, Level 16, State 1, Line 11
Cannot bulk load because the file "C:\Users\XXX\Desktop\filename.pdf" could not be opened. Operating system error code 3(The system cannot find the path specified.).

マイコード:

INSERT INTO [Testing].[dbo].[table00](FileContent) 
    SELECT BulkColumn 
    FROM OPENROWSET(BULK N'C:\Users\XXX\Desktop\filename.pdf', SINGLE_BLOB) as TheFile 

INSERT INTO [Testing].[dbo].[table00](FileContent, Blob) 
    SELECT 0, * 
    FROM OPENROWSET(BULK N'C:\Users\XXX\Desktop\filename.pdf', SINGLE_BLOB) rs 

何かアドバイスを?このエラーを解決するには?ありがとう!

背景:

私は私のテーブルtesting.dbo.table00内の画像のデータ型と、この特定のカラムFileContentにPDFファイルを挿入しようとしています。

+3

MSSQLはリモートまたはローカルですか?ファイルパスはMSSQLサーバのためにローカルに評価され、あなたのdevマシンにアクセスすることはできません! – Matten

+3

すべては、SQL Serverスタジオのインターフェイスではなく、SQL Server(Windows)サービスのコンテキストで評価されます。サービスが実行されているセキュリティコンテキストには、ローカルであってもその場所へのアクセス許可が必要です。 – Igor

+2

'image'データ型は、将来のバージョンのSQL Serverで削除されます。新しい開発作業でこのデータ型を使用しないようにし、現在使用しているアプリケーションを変更する予定です。代わりに 'varbinary(max)'を使用してください。 [詳細はこちら](http://msdn.microsoft.com/en-us/library/ms187993.aspx) –

答えて

0

ファイルが存在しないか、SQL Serverにアクセスできないような音がします。

OPENROWSET BULKに渡されるパスは、クエリが実行されているコンピュータ(そのコンピュータがSQL Serverでない場合)のではなく、であることに注意してください。したがって、クエリが成功するためには、C:\Users\XXX\Desktop\filename.pdfのSQL Serverに存在する必要があります。

ファイルがサーバー上に存在し、このエラーが引き続き発生する場合、SQL Serverにファイルへのアクセス権がない可能性があります。これを確認するには、ファイルを右クリックし、[プロパティ]、[セキュリティ]、[詳細設定]の順に選択し、SQL Serverアカウントの有効なアクセスを確認します。アカウントにファイルへのアクセス権がない場合は、必要な権限を割り当てます。

関連する問題