Ошибка 3146: ODBC- сбой вызова при сквозной массовой вставке

Я пытаюсь сделать оператор массовой вставки с помощью сквозного запроса. У меня есть следующий код:

sSQL = "BULK INSERT tbl_Name "
sSQL = sSQL & "FROM 'C:\Users\UserName\Desktop\File.txt' "
sSQL = sSQL & "WITH "
sSQL = sSQL & "("
sSQL = sSQL & "FIELDTERMINATOR = ',',  "
sSQL = sSQL & "ROWTERMINATOR='\n'"
sSQL = sSQL & ");"

Set db = CurrentDb

    Set qdf = db.CreateQueryDef("")

        qdf.Connect = db.TableDefs("dbo_tbl_Name").Connect
        qdf.ReturnRecords = False
        qdf.SQL = sSQL
        qdf.Execute dbFailOnError

    Set qdf = Nothing

Set db = Nothing

Я получаю ошибку: 3146 с описанием ODBC--call failed.

Если я изменю оператор sSQL на оператор INSERT STATEMENT или оператор SELECT, запрос выполняется просто отлично.

Почему мой BULK INSERT не работает в PASS через запрос? Я распечатываю строку sSQL, чтобы убедиться, что она правильная, и кажется, что это:

BULK INSERT tbl_Name FROM 'C:\Users\UserName\Desktop\File.txt' WITH (FIELDTERMINATOR=',', ROWTERMINATOR='\n');

1 ответ

Решение

Я выяснил ответ на эту проблему. По-видимому, для соединений ODBC существует тайм-аут. Добавив код qdf.ODBCTimeout = 900 '15 Min основная вставка была в состоянии завершить.

Спасибо за все время в этом!

Другие вопросы по тегам