2

基本的に私はPDFの内容をテーブルに選択することを探しています。

私はこのクエリを使用しています:

SELECT *
FROM   OPENROWSET(BULK N'\\Server\Share\filename.pdf', SINGLE_BLOB) rs

私のユーザー名にはそのサーバーに対する権限がないため(また、そうすべきではありません)、クエリは実行されませんが、このクエリを実行するには、別のユーザーとして認証できる必要があります。

コマンドを実行しているアカウントには適切な権限があると思うので、本番環境ではおそらく問題にはなりませんが、そのまま、このユーザー(私は明らかにその資格情報を持っています)を「偽装」して実行できるようにしたいと思います私のアカウントからのクエリ。これを行う方法についてのアイデアはありますか?

ありがとう...

4

3 に答える 3

2

接続文字列の詳細は、 OPENROWSETで指定できます。{ 'datasource';'user_id';'password' | 'provider_string' }以下の構文の部分を参照してください。

OPENROWSET 
( { 'provider_name', { 'datasource';'user_id';'password' 
   | 'provider_string' } 
   , {   [ catalog. ] [ schema. ] object 
       | 'query' 
     } 
   | BULK 'data_file', 
       { FORMATFILE ='format_file_path' [ <bulk_options> ]
       | SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }
} )<bulk_options> ::=
   [ , CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ] 
   [ , ERRORFILE ='file_name' ]
   [ , FIRSTROW = first_row ] 
   [ , LASTROW = last_row ] 
   [ , MAXERRORS = maximum_errors ] 
   [ , ROWS_PER_BATCH =rows_per_batch ] 
于 2010-10-25T15:42:23.197 に答える
0

ストアドプロシージャでラップして、を使用しますEXECUTE AS。サーバー権限とSQL権限を持つになりすます必要があります。

http://msdn.microsoft.com/en-us/library/ms188354.aspx

于 2010-10-25T15:41:20.393 に答える
0

頻繁に実行する場合は、OSQLコマンドラインクエリとして(バッチファイルなどを使用して)実行できます。

OSQL -U [username] -p [password] -S [server] -D [database] -q "EXIT(SELECT * FROM OPENROWSET(BULK N'\\Server\Share\filename.pdf', SINGLE_BLOB) rs)"

クレデンシャルをデータベースに保存するか、本番環境に到達したら削除できるファイルに保存するかを決定する必要があります。

于 2010-10-25T15:43:31.537 に答える