1. ホーム
  2. sql-server

[解決済み] バルクロードステートメントエラーを使用する権限がない

2022-03-14 04:25:45

質問内容

VARBINARY(MAX)カラムに画像を挿入しようとしています。このエラーが発生します。

一括読み込みステートメントを使用する権限を持っていません。

以下は私のコードです。

INSERT INTO Stickers (Name, Category, Gender, ImageData)
       SELECT   
           'Red Dress',
           'Dress',
           'F',
           BulkColumn FROM OPENROWSET(Bulk '\\Mac\Home\Documents\MMImages\reddress.png', 
                                      SINGLE_BLOB) AS BLOB

私はこのトピックに関する多くの答えがあることを認識していますが、それらのどれも私には機能しませんでした。 この回答 しかし、オブジェクトエクスプローラを使用して、セキュリティ > ログイン > でユーザーを右クリックしても、quot;properties" メニューアイテムが表示されません。

私はSql Server Management Studioを使用しています。プログラムによるユーザー権限の設定はどれもうまくいかなかったので、私が思っているような SQL Server のバージョンを使用していないのかもしれません。私は、SQL Server 2012を使用していると思います。おそらく、私のコンピュータには、いくつかのバージョンのSQL Serverがあると思います。ヘルプをクリックすると、様々なコンポーネントのバージョン情報の上に、ロゴ "Microsoft SQL Server 2012" が表示されます(SQL Server のバージョン情報は表示されません)。

EDIT: データベースが MirrorMirror、テーブルが Stickers、ユーザーが Amber、サーバーが gonskh1ou0.database.windows.net である場合、挿入文の上で私が使用する正確なコードをどなたか教えていただけませんでしょうか。

どのように解決するのですか?

BULKコマンドを使用するための正しい権限があることを確認するには、次のようにします。

  • 拡大する セキュリティ
  • 拡大する ログイン
  • ユーザー名を右クリックし プロパティ (ダイアログウィンドウが表示されます)
  • 選択 サーバーの役割
  • 選択 バルクアドミン を使えば、一括コマンドを使えるようになるか システム管理者 を選択すると、データベースに対して任意のコマンドを使用することができます。

さて、あなたが使っているクエリについてですが、これはちょっとおかしいですね。

テーブルを作成する場合

CREATE TABLE [dbo].[Stickers] (
        [name] varchar(10)
        , [category] varchar(10)
        , [gender] varchar(1)
        , [imageData] varchar(max)
)

大きな値のデータを挿入する場合

INSERT INTO  [dbo].[Stickers] ([name], [category], [gender], [imageData])
SELECT 'Red dress'
        , 'Dress'
        , 'F'
        , photo.*
FROM OPENROWSET(BULK 'C:\Users\username\Desktop\misc-flower-png-55d7744aca416.png', SINGLE_BLOB) [photo]

2,3の注意点。

  • FROM句([写真])の後に、バルク行セットの相関名を設定する必要があります。
  • バルク行セットの相関に使用されている右列プレフィックスを使用します (photo.*)
  • 一括挿入を行う列は、以下のように設定する必要があります。 varchar(max)

MSDN の記事で紹介されています。 こちら