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.


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.


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ć.


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.


-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


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.