Wstaw luzem przez sieć

13

Czy ktoś może mi w tym pomóc?

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

Błąd pokazuje, nie można otworzyć:

Nie można wstawić zbiorczo, ponieważ nie można otworzyć pliku „\ SERVERNAME \ FOLDERNAME \ textFile.txt”. Kod błędu systemu operacyjnego 5 (Odmowa dostępu.)

Ścieżka znajduje się na innym komputerze w sieci.

Jonas Ivy V. Imperial
źródło
8
Czy konto, na którym działa program SQL Server, ma uprawnienia dostępu '\\COMPUTER01\FOLDER01\TextFile.txt'? Pamiętaj, że konto zasadniczo różni się od Twojego konta.
Damien_The_Unbeliever
3
Czy możesz również dodać dokładnie otrzymany błąd?
ypercubeᵀᴹ
oprócz @Damien_The_Unbeliever: „Aby określić udostępniony plik danych, użyj jego nazwy UNC, która przyjmuje ogólną postać: \\ Nazwa serwera \ Nazwa udziału \ Ścieżka \ Nazwa
pliku
@ypercube - Nie można wstawić zbiorczo, ponieważ nie można otworzyć pliku \\ SERVERNAME \ FOLDERNAME \ textFile.txt. Kod błędu systemu operacyjnego 5 (Odmowa dostępu.). dziękuję panu
Jonas Ivy V. Imperial
Mam ten sam problem przy użyciu tej samej domeny i domeny (kod błędu systemu operacyjnego 5 (odmowa dostępu.)). Co ciekawe, jeśli używam XP_CMDSHELL do testowania, czy plik istnieje lub mogę go nawet przenieść, ale wkładka zbiorcza zgłasza odmowę dostępu. Konto usługi sql i moje konto Windows mają uprawnienia do tego folderu.

Odpowiedzi:

14

Zrobię skok wiary i założę, że łączysz się z programem SQL Server przy użyciu uwierzytelniania systemu Windows. W takim przypadku masz podwójny przeskok Kerberos: jeden przeskok to aplikacja kliencka łącząca się z SQL Server, drugi przeskok to SQL Server łączący się ze zdalnym \\COMPUTER01. Taki podwójny przeskok podlega ograniczeniom ograniczonej delegacji, a Ty uzyskujesz dostęp do udziału jako logowanie anonimowe, a zatem odmowa dostępu.

Aby rozwiązać problem, należy włączyć ograniczone delegowanie konta usługi SQL Server. Ten blog Porady: Wstawianie zbiorcze programu SQL Server z ograniczoną delegacją (odmowa dostępu) zawiera przykład tego, jak to zrobić, i naprawdę mam nadzieję, że krok „włączania nieograniczonej delegacji” to tylko literówka, ponieważ delegacja nieograniczona jest po prostu zło.

W przypadku, gdy wskoczyłem do pistoletu i logujesz się do SQL Server przy użyciu uwierzytelniania SQL, musisz utworzyć poświadczenie logowania do SQL i użyć go do uzyskania dostępu do zasobów sieciowych. Zobaczyć CREATE CREDENTIAL.

Remus Rusanu
źródło
1

Serwer Sql próbował otworzyć plik, serwer plików powiedział „Odmowa dostępu”, ponieważ konto, na którym działa SQL Server, nie ma uprawnień do otwierania pliku. Zmień odpowiednio ustawienia bezpieczeństwa pliku i będzie działać.

TomTom
źródło
1

Uruchomiłbym skrypt pod loginem SQL (z pozwoleniem bulkadmin) i pozwoliłbym, aby zezwolenie na folder sieciowy uwierzytelniło się na koncie SQL Service lub SQL Server Agent.

Cozzaro Nero
źródło
-2

Powiem ci, co działa dla mnie za każdym razem, gdy otrzymuję tę wiadomość. otwieram plik csv jako tekst w notatniku i usuwam wszystkie spacje w pliku, nie widzę tych pustych linii w pliku programu Excel. Zwykle jest to ostatni wiersz, który wydaje się pojawiać, mimo że jest pusty

Dimius
źródło
Czy jesteś pewien, że to ten sam błąd?
dezso,
Nie ma to nic wspólnego z błędami odmowy dostępu. To tylko naprawia błędy formatu pliku.
Julien Vavasseur,