Inserimento di massa attraverso la rete


13

Qualcuno può aiutarmi con questi?

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

L'errore mostra, impossibile aprire:

Impossibile inserire in blocco perché non è stato possibile aprire il file '\ SERVERNAME \ FOLDERNAME \ textFile.txt'. Codice di errore del sistema operativo 5 (accesso negato.)

Il percorso si trova su un altro computer in rete.


8
L' account con cui è in esecuzione SQL Server dispone delle autorizzazioni per accedere '\\COMPUTER01\FOLDER01\TextFile.txt'? Tieni presente che l'account sarà generalmente diverso dal tuo account.
Damien_The_Unbeliever il

3
Puoi anche aggiungere l'errore esatto che ricevi?
ypercubeᵀᴹ

oltre a @Damien_The_Unbeliever: "Per specificare un file di dati condiviso, utilizzare il nome della convenzione di denominazione universale (UNC), che assume la forma generale, \ Nome
server

@ypercube - Impossibile inserire in blocco perché non è stato possibile aprire il file '\\ SERVERNAME \ FOLDERNAME \ textFile.txt'. Codice di errore del sistema operativo 5 (accesso negato.). grazie signore
Jonas Ivy V. Imperial,

Ho lo stesso problema utilizzando lo stesso dominio e interdominio (codice di errore del sistema operativo 5 (accesso negato.)). È interessante notare che se uso XP_CMDSHELL per verificare se il file esiste o posso persino spostare il file, ma l'inserimento di massa genera l'accesso negato. L'account del servizio sql e il mio account Windows dispongono entrambi delle autorizzazioni per la cartella.

Risposte:


14

Farò un salto di fiducia e presumo che ti connetti a SQL Server utilizzando l'autenticazione di Windows. In tal caso hai un doppio hop Kerberos: un hop è l'applicazione client che si collega a SQL Server, un secondo hop è lo SQL Server che si collega al telecomando \\COMPUTER01. Tale doppio hop rientra nelle restrizioni della delega vincolata e si finisce per accedere alla condivisione come Accesso anonimo e quindi Accesso negato.

Per risolvere il problema è necessario abilitare la delega vincolata per l'account del servizio SQL Server. Questo blog Procedura: l'inserimento di massa di SQL Server con delega vincolata (accesso negato) contiene un esempio di come eseguire questa operazione e spero davvero che il passaggio su come "abilitare la delega non vincolata" sia solo un errore di battitura poiché la delega non vincolata è semplicemente un male.

Nel caso in cui avessi saltato la pistola e tu accedessi a SQL Server usando l'autenticazione SQL, dovrai creare una credenziale per il tuo login SQL e usarla per accedere alle risorse di rete. Vedere CREATE CREDENTIAL.


1

Sql Server ha tentato di aprire il file, il file server gli ha detto "Accesso negato" perché l'account con cui viene eseguito SQL Server non dispone dell'autorizzazione per aprire il file. Modificare le impostazioni di sicurezza sul file di conseguenza e funzionerà.


1

Avrei eseguito lo script con un accesso SQL (con autorizzazione bulkadmin) e avrei autorizzato l'autorizzazione nella cartella di rete rispetto all'account del servizio SQL o all'account agente SQL Server.


-2

Ti dirò cosa funziona per me ogni volta che ricevo questo messaggio. Apro il file CSV come testo in un blocco note ed elimino tutte le righe di spazio nel file, non riesco a vedere quelle righe vuote nel file Excel. Di solito è solo l'ultima riga che sembra apparire anche se è vuota


Sei sicuro che sia lo stesso errore?
dezso,

Ciò non ha nulla a che fare con gli errori di accesso negato. Questo risolve solo gli errori di formato del file.
Julien Vavasseur,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.