web-dev-qa-db-ja.com

ネットワーク経由の一括挿入

誰かがこれらを手伝ってくれる?

BULK INSERT DATABESE01.dbo.TABLE01
FROM '\\COMPUTER01\FOLDER01\TextFile.txt'
WITH
(
    FIELDTERMINATOR = ' ',
    rowterminator = '\n',
    tablock
)

エラーが表示され、開けませんでした:

ファイル '\ SERVERNAME\FOLDERNAME\textFile.txt'を開けなかったため、一括挿入できませんでした。オペレーティングシステムエラーコード5(アクセスが拒否されました。)

パスはネットワーク上の別のコンピューター上にあります。

13

私は飛躍を遂げ、あなたがWindows認証を使用してSQL Serverに接続すると仮定します。このような場合、Kerberosダブルホップがあります。1つのホップはSQL Serverに接続するクライアントアプリケーションで、2番目のホップはリモートに接続するSQL Serverです\\COMPUTER01。このようなダブルホップは制約付き委任の制限に該当し、最終的に匿名ログインとして共有にアクセスすることになるため、アクセスが拒否されます。

問題を解決するには、SQL Serverサービスアカウントの制約付き委任を有効にする必要があります。このブログ How To:SQL Server Bulk Insert with Constrained Delegation(Access is Denied) にはその方法の例があり、「制約のない委任を有効にする方法」のステップが制約のない委任は単なる悪であるので、単なるタイプミスです。

銃を飛び越え、SQL認証を使用してSQL Serverにログインしている場合、SQLログイン用の認証情報を作成し、それを使用してネットワークリソースにアクセスする必要があります。見る - CREATE CREDENTIAL

14
Remus Rusanu

SQL Serverがファイルを開こうとしましたが、SQL Serverが実行されているアカウントにファイルを開く権限がないため、ファイルサーバーは「アクセスが拒否されました」と報告しました。それに応じてファイルのセキュリティ設定を変更すると、機能します。

1
TomTom

SQLログイン(bulkadmin権限を使用)でスクリプトを実行し、ネットワークフォルダーの権限でSQLサービスアカウントまたはSQLサーバーエージェントアカウントを認証します。

1
Cozzaro Nero