誰かがこれらを手伝ってくれる?
BULK INSERT DATABESE01.dbo.TABLE01
FROM '\\COMPUTER01\FOLDER01\TextFile.txt'
WITH
(
FIELDTERMINATOR = ' ',
rowterminator = '\n',
tablock
)
エラーが表示され、開けませんでした:
ファイル '\ SERVERNAME\FOLDERNAME\textFile.txt'を開けなかったため、一括挿入できませんでした。オペレーティングシステムエラーコード5(アクセスが拒否されました。)
パスはネットワーク上の別のコンピューター上にあります。
私は飛躍を遂げ、あなたが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
。
SQL Serverがファイルを開こうとしましたが、SQL Serverが実行されているアカウントにファイルを開く権限がないため、ファイルサーバーは「アクセスが拒否されました」と報告しました。それに応じてファイルのセキュリティ設定を変更すると、機能します。
SQLログイン(bulkadmin権限を使用)でスクリプトを実行し、ネットワークフォルダーの権限でSQLサービスアカウントまたはSQLサーバーエージェントアカウントを認証します。