Простой запрос создает ошибку 3078 «Ядро базы данных Microsoft Jet не может найти входную таблицу или запрос» - PullRequest
0 голосов
/ 04 декабря 2018

Любые предложения, как реструктурировать этот простой запрос?

Попадание в базу данных SQL Server с использованием DAO через VB6 (обновленный старый код для работы с новой базой данных), и каким-то образом этот запрос в одном из приложений дает свои результаты.

Select I.sType, Count(I.BarcodeID) AS CountOfID 
FROM (SELECT DISTINCT sType, BarcodeID From [Ready]) as I 
GROUP BY I.sType 
ORDER BY sType

Я вставил запрос в SQL Enterprise Manager, и он работает нормально, как и ожидалось.Это работало отлично, ударяя оригинальную БД Доступа.Но каким-то образом DAO через ODBC, попадающий на SQL Server, генерирует:

"Ядро базы данных Microsoft Jet не может найти входную таблицу или запрос"

То, что я пробовал:

  • Удаление ()
  • Удаление «как я» и «я».нотация.
  • Скобки вокруг [Готово] и без (думая, что это может быть зарезервированное ключевое слово).
  • Подтверждено, что соединение с ODBC для Sql Server (это соединение используется длядругие запросы тоже.

Проверено средство профилирования SQL и запрос делает его на сервер (отредактировано, я проверял неправильный инструмент в SQL Express)

РЕДАКТИРОВАТЬ: просто чтобы удовлетворить всеобщее беспокойство, что я на самом деле не обращаюсь к SQL Server, я отредактировал команду SQL на еще более простой

SELECT DISTINCT sType, BarcodeID From [Ready]

, и она работает правильно на том же соединении, поэтомусоединение на 100% подтверждено как SQL Server, сообщение об ошибке находится в состоянии ошибки (сообщается «Access»).

Таким образом, проблема, без сомнения, является запросом FROM запроса.

ОБНОВЛЕНИЕ:

Определенно подтвердил мои подозрения, что запрос, хотя и обычный, не работает с ADO-> ODBC-> Sql Server.

Первый шаг, который делает SQL, это пытается проверитьolumns и т. д. таблицы "from" (которая в данном случае является не таблицей, а самим запросом).

Когда я запускаю базовый SELECT DISTINCT sType, BarcodeID From [Ready] SQL, проверяет столбцы, ключи, индексы и т. Д. Таблицы с именем «Готово» (exec sp_special_columns N'Ready',NULL,NULL,N'V',N'T',N'U'), а затем переходит к возвращению результатов.

Когда я использую подзапрос, SQL запускает ту же проверку таблицы def, но для таблицы с именем SELECT DISTINCT sType, BarcodeID From [Ready], которая, конечно, не существует и возвращает ошибку (exec sp_special_columns N'SELECT DISTINCT sType, BarcodeID From [Ready]',NULL,NULL,N'V',N'T',N'U').VB6 / ADO правильно сообщает, что SQL говорит, что таблица не найдена.Таким образом, очевидно, что этот запрос из запроса ставит в тупик возможности ADO-> ODBC ...

1 Ответ

0 голосов
/ 04 декабря 2018

, поскольку проблема, очевидно, заключается в структуре Select FROM (Select From) запроса несовместимого запроса с ADO-> ODBC-> SQL Server, мое решение состояло в том, чтобы просто сделать подзапрос представлением в SQL и изменить запрос для выбора из этого.

...