SQLServerでBULK INSERTを実行しようとすると以下のようなエラーが出る…
-
一括読み込みステートメントを使用する権限がありません。
-
ファイルを開けなかったので、一括読み込みできません。オペレーティング システム エラー コード 5(アクセスが拒否されました)
以下の方法で解決できると思われる
Windows認証
SQLServer構成マネージャーを開き、下記の赤枠の【ログオン】の欄を確認してください。
今回は「NT Service\MSSQLSERVER」となっているので、BULK INSERTで挿入するテキストorCSVが保存されているフォルダに対して「MSSQLSERVER」でアクセスできるようにアクセス権限を付与(【プロパティ】⇒【セキュリティ】⇒【編集】⇒【追加】)します。
これで出来るはず。
これで出来ない場合は対象ユーザにsysadminが付与されていないと思われるので管理者ユーザでログインし付与してあげる
SQLServer認証
上記のアクセス付与に加えてユーザ自体にも権限を付与する必要があります。
SSMSでデータベースにログインしBULK INSERTを実行するユーザに対して以下の権限を付与します。
1.【セキュリティ】⇒【ログイン】⇒【対象ユーザ】⇒【プロパティ】⇒【サーバーロール】の順に進みbulkadminという項目にチェックを入れてOKします
2.【セキュリティ】⇒【ログイン】⇒【対象ユーザ】⇒【プロパティ】⇒【ユーザマッピング】の順に進み対象データベースのdb_datareaderとdb_datawriterという項目にチェックを入れます
これでこちらも大丈夫なはず。