ストアドプロシージャをSQL Serverエージェントジョブとして設定しようとしていますが、次のエラーが表示されます。
ファイル「P:\ file.csv」を開けなかったため、一括読み込みできません。オペレーティングシステムエラーコード3(このエラーのテキストの取得に失敗しました。理由:15105)。 [SQLSTATE 42000](エラー4861)
おかしなことは、ストアドプロシージャを手動で実行するとうまく機能することです。
ドライブP:は、Samba共有を介したLINUXからのWindows SQL Server上の共有ドライブであり、次のコマンドを実行してセットアップされました。
EXEC xp_cmdshell 'Net Use P: "\ lnxusanfsd01\Data" Password/user:username/Persistent:Yes'
これに関するヘルプは非常に高く評価されます
この問題を解決したかどうかはわかりませんが、同じ問題が発生しました、インスタンスがローカルの場合、ファイルへのアクセス許可を確認する必要がありますが、コンピューターからサーバーにアクセスする場合(リモートアクセス)は指定する必要がありますサーバー内のパス、つまりサーバーディレクトリにファイルを含めることを意味します。
例:
BULK INSERT Table
FROM 'C:\bulk\usuarios_prueba.csv' -- This is server path not local
WITH
(
FIELDTERMINATOR =',',
ROWTERMINATOR ='\n'
);
これをシンプルに保つために、サーバー上のローカルフォルダーにデータをインポートしていたディレクトリを変更しました。
ファイルを共有フォルダーに配置しました。サーバー上の「c:\ TEMP\Reports」にファイルをコピーしました(クエリを新しいフォルダーからBULK INSERTに更新しました)。エージェントタスクが正常に完了しました:)
久しぶりに、エージェントジョブを介して自動的に挿入を一括処理できます。
宜しくお願いします。
私はこの問題を解決しました、
sQL Serverがインストールされているサーバーコンピューターにログインすると、サーバーコンピューター上のcsvファイルが取得され、クエリが実行されてレコードが挿入されます。
データ型の互換性の問題を与える場合は、その列のデータ型を変更します
P:ドライブは、sqlサーバーが起動したアカウントにマップされていないことをお勧めします。
おそらくアクセス許可の問題ですが、トラブルシューティングを行うには、次の手順を試してください:
sa
として実行するように構成し、Net Use
およびNet Use /delete
コマンドを前後に追加します変更を元に戻すことを忘れないでください(特にsa
として実行)。何も機能しない場合は、データベースサーバーまたはbcpがインストールされている別のサーバーで実行される一括タスクをスケジュールされたタスクに変更してみてください。
Windows認証を介したSQL接続の使用:「Kerberosダブルホップ」が発生しています。1つ目のホップはSQL Serverに接続するクライアントアプリケーションで、2つ目のホップはリモートの「\\ NETWORK_MACHINE \」に接続するSQL Serverです。このような二重ホップは、制約付き委任の制限下にあり、匿名ログインとして共有にアクセスすることになり、そのためアクセスが拒否されます。
この問題を解決するには、SQL Serverサービスアカウントの制約付き委任を有効にする必要があります。 それを非常によく説明している良い投稿についてはこちらをご覧ください
SQL認証を使用するSQL Server SQLログインの資格情報を作成し、それを使用して特定のネットワークリソースにアクセスする必要があります。 こちらを参照