33

奇妙な理由で、一括挿入の実行に問題があります。

BULK INSERT customer_stg
FROM 'C:\Users\Michael\workspace\pydb\data\andrew.out.txt'
WITH
(
    FIRSTROW=0,
    FIELDTERMINATOR='\t',
    ROWTERMINATOR='\n'
)

これを読んだ後、私は自分のユーザーロールを正しく設定したと確信しています...

Bulkadmin固定サーバーの役割のメンバーは、BULKINSERTステートメントを実行できます。

Login Propertiesサーバー全体のアクセス許可を付与するために、Windows認証のを正しく設定しました(以下を参照)。bulkadmin

Windows認証
(出典:iforce.co.nz

このコマンドEXEC sp_helpsrvrolemember 'bulkadmin'は、上記の情報が成功し、現在のユーザーMichael-PC\Michaelbulkadmin権限があることを示しています。

バルク管理者
(出典:iforce.co.nz

しかし、私が知る限り、すべてを正しく設定しましたが、それでもエラーが発生します。SQL ServerManagementStudioから直接一括挿入を実行します。

メッセージ4861、レベル16、状態1、2行目
ファイル「C:\ Users \ Michael \ worksheet \ pydb \ data \ andrew.out.txt」を開くことができなかったため、一括ロードできません。オペレーティングシステムのエラーコード5(アクセスが拒否されました)。

bulkadminsどうやらステートメントを実行できるので意味がありませんが、bulkadmin動作を再構成するつもりですか?(私はとても迷っています)。それを修正する方法について何かアイデアはありますか?

4

12 に答える 12

13

SQL Serverを再インストールしてもこれが修正されるとは思いません。しばらくすると、問題が発生するだけです。

  1. ユーザーアカウントに問題のフォルダへの読み取り権限があることを確認してください。
  2. Process Monitorなどのツールを使用して、実際にファイルにアクセスしようとしているユーザーを確認します。
  3. 私の推測では、それはMichael-PC\Michaelファイルにアクセスしようとしているのではなく、SQLServerサービスアカウントを試みているのだと思います。この場合、少なくとも3つのオプションがあります(ただし、おそらく他のオプションもあります)。

    a。SQLServerサービスを自分のように実行するように設定します。
    b。SQLServerサービスアカウントにそのフォルダーへの明示的なアクセスを許可します。
    c。SQL Serverがアクセスできる、またはアクセスできるようにすることができる、より論理的な場所にファイルを配置します(例C:\bulk\)。

これが封じ込められたローカルワークステーションであると仮定して、これらのことを提案します。実稼働マシンについて話しているとき、SQL Serverからのローカルファイルシステムアクセスに関しては、間違いなくより深刻なセキュリティ上の懸念があります。もちろん、c.上記を使用して、サービスアカウントに必要なフォルダーへのアクセスのみを許可することで、これを大幅に軽減できます。触れることができる。

于 2013-01-28T05:33:09.143 に答える
4

「MSSQLSERVER」ユーザー (または SQL Server サービスがWindows ServicesでLog On Asに設定されている任意のユーザー)に対して、CSV およびフォーマット ファイルの読み取りアクセス許可を含むフォルダーを付与してみてください。

于 2015-01-20T18:19:54.850 に答える