Inserción masiva a través de la red

13

¿Alguien puede ayudarme con esto?

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

El error muestra, no se pudo abrir:

No se pudo insertar en masa porque el archivo '\ SERVERNAME \ FOLDERNAME \ textFile.txt' no se pudo abrir. Código de error del sistema operativo 5 (acceso denegado).

La ruta está en otra computadora en la red.

Jonas Ivy V. Imperial
fuente
8
¿La cuenta con la que se ejecuta SQL Server tiene permiso de acceso '\\COMPUTER01\FOLDER01\TextFile.txt'? Tenga en cuenta que la cuenta generalmente será diferente de su cuenta.
Damien_The_Unbeliever
3
¿También puede agregar el error exacto que obtiene?
ypercubeᵀᴹ
además de @Damien_The_Unbeliever: "Para especificar un archivo de datos compartidos, use su nombre de convención de nomenclatura universal (UNC), que toma la forma general, \\ Servername \ Sharename \ Path \ Filename"
JoseTeixeira
@ypercube: no se pudo insertar en masa porque el archivo '\\ SERVERNAME \ FOLDERNAME \ textFile.txt' no se pudo abrir. Código de error del sistema operativo 5 (acceso denegado). gracias señor
Jonas Ivy V. Imperial
Tengo el mismo problema al usar el mismo dominio y dominio cruzado (código de error del sistema operativo 5 (acceso denegado)). Curiosamente, si uso XP_CMDSHELL para probar si el archivo existe o incluso puedo mover el archivo, pero la inserción masiva arroja acceso denegado. La cuenta de servicio sql y mi cuenta de Windows tienen permisos para la carpeta.

Respuestas:

14

Voy a dar un salto de fe y asumir que te conectas a SQL Server usando la autenticación de Windows. En tal caso, tiene un doble salto Kerberos: un salto es su aplicación cliente que se conecta al servidor SQL, un segundo salto es el servidor SQL que se conecta al control remoto \\COMPUTER01. Tal doble salto cae bajo las restricciones de la Delegación restringida y terminas accediendo al recurso compartido como Acceso anónimo y, por lo tanto, Acceso denegado.

Para solucionar el problema, debe habilitar la delegación restringida para la cuenta de servicio de SQL Server. Este blog: Cómo: la inserción masiva de SQL Server con delegación restringida (acceso denegado) tiene un ejemplo de cómo hacerlo, y realmente espero que el paso sobre cómo 'habilitar la delegación sin restricciones' sea solo un error tipográfico ya que la delegación sin restricciones es Simplemente malvado.

En el caso de que saltara el arma y esté iniciando sesión en SQL Server usando la autenticación de SQL, necesitará crear una credencial para su inicio de sesión de SQL y usarla para acceder a los recursos de la red. Ver CREATE CREDENTIAL.

Remus Rusanu
fuente
1

SQL Server intentó abrir el archivo, el servidor de archivos le dijo "Acceso denegado" porque la cuenta con la que se ejecuta SQL Server no tiene permiso para abrir el archivo. Cambie la configuración de seguridad en el archivo en consecuencia y funcionará.

TomTom
fuente
1

Ejecutaría el script bajo un inicio de sesión SQL (con permiso de bulkadmin) y permitiría que el permiso en la carpeta de red se autentique con la cuenta de servicio SQL o la cuenta del Agente SQL Server.

Cozzaro Nero
fuente
-2

Te diré lo que funciona para mí cada vez que reciba este mensaje. Abro el archivo csv como un texto en un bloc de notas y elimino todas las líneas de espacio en el archivo, no puedo ver esas líneas en blanco en el archivo de Excel. Por lo general, es solo la última línea que parece aparecer a pesar de que está vacía

Dimius
fuente
¿Estás seguro de que es el mismo error?
dezso
Esto no tiene nada que ver con los errores de acceso denegado. Esto solo corrige errores de formato de archivo.
Julien Vavasseur