ファイルが開けなかったため、一括ロードできません。オペレーティング・システム・エラー・コード 3
SQLサーバーのエージェントジョブとしてストアドプロシージャを設定しようとしているのですが、以下のエラーが発生します、
ファイル "P:File.csv"を開くことができないため、一括ロードできません。オペレーティングシステムエラーコード3(このエラーのテキストを取得できませんでした。理由: 15105)。[SQLSTATE 42000] (エラー 4861)
おかしなことに、このストアド・プロシージャは手動で実行しても問題なく動作します。
P:ドライブはLINUXからSamba Share経由でWindows SQL Server上の共有ドライブであり、以下のコマンドを実行してセットアップした、
EXEC xp_cmdshell 'net use P: " \lnxusanfsd01Data" Password /user:username /Persistent:Yes';
この件に関するヘルプがあれば、非常に感謝します。
35
7
インスタンスがローカルにある場合は、ファイルへのアクセス許可をチェックする必要がありますが、自分のコンピュータからサーバーにアクセスする(リモートアクセス)場合は、サーバーのパスを指定する必要があります。
例
シンプルにするために、データをインポートするディレクトリをサーバー上のローカル・フォルダに変更しました。
ファイルを共有フォルダに置いていたので、ファイルをサーバ上の"c:˶TEMPReports"にコピーしただけです(クエリを新しいフォルダからBULK INSERTに更新しました)。エージェントタスクは正常に完了しました。)
長い時間をかけて、ようやくエージェントジョブで自動的に BULK INSERT ができるようになりました。
よろしくお願いします。
私はこの問題を解決しました。
datatype互換性の問題を与える場合は、その列のdatatypeを変更します。
P:ドライブは、sqlサーバーが起動したアカウントにマップされないことをお勧めします。
Windows認証を介したSQL接続の使用: 「Kerberosダブルホップ」が発生しています。1つのホップはSQLサーバーに接続するクライアントアプリケーション、2番目のホップはリモート「\ NETWORK_MACHINE」に接続するSQLサーバーです。 このようなダブルホップは制約付き委任の制限に該当し、匿名ログインとして共有にアクセスするため、アクセスは拒否されます。
この問題を解決するには、SQL Serverサービスアカウントの制約付き委任を有効にする必要があります。 それをかなりよく説明する良い投稿については、こちらを参照してください。
SQL認証を使用するSQL Server。 SQLログインの資格情報を作成し、それを使用してその特定のネットワークリソースにアクセスする必要があります。 ここを参照。
おそらくパーミッションの問題だと思いますが、トラブルシューティングのために以下の手順を試してみてください:
sa
として実行するように設定し、その前後にnet use
とnet use /delete
コマンドを追加する。変更(特に
sa
として実行)を行った場合は、忘れずに元に戻してください。他の方法がうまくいかない場合は、データベースサーバーまたは bcp がインストールされている他のサーバーで実行する、バルクロードをスケジュールタスクに変更してみてください。フォルダへのアクセスを許可しようとしましたが、それは役に立ちませんでした。 私の解決策は、ログインしたユーザーに対して、以下の強調表示されたオプションを赤で選択することでした。
。![これは、右クリックして、Windows認証モードにログインしたユーザー名を選択したときに表示されるものです。](https://i.stack.imgur.com/ZtqCQ.png。)。