No se puede realizar la carga masiva porque no se ha podido abrir el archivo. Código de error 3 del sistema operativo

Estoy intentando configurar un Stored Procedure como un SQL Server Agent Job y me da el siguiente error,

No se puede realizar la carga masiva porque el archivo "P:\file.csv" no se pudo abrir. Operating system error code 3(failed to retrieve text for this error. Reason: 15105). [SQLSTATE 42000] (Error 4861)

Lo curioso es que el procedimiento almacenado funciona perfectamente cuando lo ejecuto manualmente.

La unidad P: es una unidad compartida en Windows SQL Server desde LINUX a través de Samba Share y se configuró ejecutando el siguiente comando,

EXEC xp_cmdshell 'net use P: "\lnxusanfsd01\Data" Password /user:username /Persistent:Yes'

Cualquier ayuda en esto sería muy apreciada

No se si lo solucionaste, pero yo tenia el mismo problema, si la instancia es local debes verificar el permiso para acceder al archivo, pero si estas accediendo desde tu computadora a un servidor (acceso remoto) debes especificar la ruta en el servidor, es decir incluir el archivo en un directorio del servidor, eso soluciono mi caso.

ejemplo:

BULK INSERT Table
FROM 'C:\bulk\usuarios_prueba.csv' -- This is server path not local
WITH 
  (
     FIELDTERMINATOR =',',
     ROWTERMINATOR ='\n'
  );
Comentarios (3)

Para simplificarlo, simplemente cambié el directorio desde el que importaba los datos a una carpeta local en el servidor.

Tenía el archivo ubicado en una carpeta compartida, simplemente copié mis archivos a "c:\TEMP\Reports" en mi servidor (actualicé la consulta a BULK INSERT desde la nueva carpeta). La tarea de Agente se completó con éxito :)

Por fin despues de mucho tiempo puedo hacer BULK INSERT automaticamente a traves de la tarea agente.

Un saludo.

Comentarios (0)

Probablemente se trate de un problema de permisos, pero asegúrate de seguir estos pasos para solucionarlo:

  • Coloque el archivo en una unidad local y compruebe si la tarea funciona (no necesita necesariamente acceso RDP si puede asignar una letra de unidad de su estación de trabajo local a un directorio del servidor de base de datos).
  • Coloque el archivo en un directorio remoto que no requiera nombre de usuario y contraseña (permite a todos leer) y utilice la ruta UNC (\server\directory\file.csv)
  • Configure el trabajo SQL para que se ejecute con su propio nombre de usuario
  • Configure el trabajo SQL para que se ejecute como sa y añada los comandos net use y net use /delete antes y después de

Acuérdate de deshacer cualquier cambio (especialmente el de ejecutar como sa). Si nada más funciona, puedes intentar cambiar la carga masiva a una tarea programada, que se ejecute en el servidor de base de datos o en otro servidor que tenga bcp instalado.

Comentarios (4)