Масове вставлення через мережу


13

Чи може хтось мені допомогти з цим?

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

Помилка показує, не вдалося відкрити:

Неможливо вставити об'ємну програму, оскільки файл "\ SERVERNAME \ FOLDERNAME \ textFile.txt" не вдалося відкрити. Код помилки операційної системи 5 (доступ заборонено.)

Шлях знаходиться на іншому комп’ютері в мережі.


8
Чи має обліковий запис , під яким працює SQL Server, дозвіл на доступ '\\COMPUTER01\FOLDER01\TextFile.txt'? Зауважте, що обліковий запис, як правило, відрізнятиметься від вашого .
Damien_The_Unbeliever

3
Чи можете ви також додати точну помилку, яку ви отримали?
ypercubeᵀᴹ

на додаток до @Damien_The_Unbeliever: "Щоб вказати спільний файл даних, використовуйте його загальну назву конвенції іменування (UNC), яка приймає загальну форму, \\ ім'я сервера \ ім'я Sharename \ шлях \
ім'я

@ypercube - Не вдалося вставити групову вставку, оскільки файл "\\ SERVERNAME \ FOLDERNAME \ textFile.txt" не вдалося відкрити. Код помилки операційної системи 5 (доступ заборонено.) дякую сер
Йонас Айві В. Імператорський

У мене однакова проблема з використанням одного і того ж домену та міждоменного коду (код помилки операційної системи 5 (доступ заборонений.)). Цікаво, що якщо я використовую XP_CMDSHELL, щоб перевірити, чи існує файл, або я навіть можу перемістити файл, але вбудована об'ємна вставка перешкоджає доступу. Обліковий запис служби sql та мій обліковий запис Windows мають дозволи на папку.

Відповіді:


14

Я збираюся зробити стрибок віри і припускаю, що ви підключаєтесь до SQL Server за допомогою аутентифікації Windows. У такому випадку у вас є подвійний скачок Kerberos: один перехід - це ваша клієнтська програма, що підключається до SQL Server, друга - це підключення до віддаленого сервера \\COMPUTER01. Такий подвійний скачок підпадає під обмеження обмеженої делегації, і ви в кінцевому підсумку отримуєте доступ до акції як анонімний вхід, а значить, і заборонено доступ.

Для усунення проблеми потрібно включити обмежене делегування для облікового запису послуги SQL Server. У цьому блозі Як: Масова вставка SQL Server із обмеженою делегацією (доступ заборонено) , є приклад того, як це зробити, і я дуже сподіваюся, що крок щодо того, як "включити необмежену делегацію", є лише помилковою помилкою делегування. просто зло.

У випадку, якщо я стрибнув пістолет, і ви входите в SQL Server за допомогою аутентифікації SQL, вам потрібно буде створити обліковий запис для входу в SQL і використовувати його для доступу до мережевих ресурсів. Див CREATE CREDENTIAL.


1

Сервер Sql намагався відкрити файл, файловий сервер сказав йому "Доступ заборонено", оскільки обліковий запис, на якому працює SQL Server, не має дозволу на відкриття файлу. Змініть відповідні налаштування безпеки у файлі, і він запрацює.


1

Я запустив би скрипт під SQL Login (з дозволом bulkadmin) і дозволив дозволу в мережевій папці підтвердити автентифікацію щодо облікового запису служби SQL або облікового запису агента SQL Server.


-2

Я скажу вам, що працює для мене щоразу, коли отримую це повідомлення. я відкриваю файл CSV як текст у блокноті та видаляю всі пробіли у файлі, я не можу бачити ці порожні рядки у файлі excel. Зазвичай це лише останній рядок, який, здається, видається, навіть якщо він порожній


Ви впевнені, що це та сама помилка?
dezso

Це не має нічого спільного з помилками відхиленого доступу. Це лише виправлення помилок у форматі файлу.
Жульєн Вавассер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.