Ошибка имени объекта, но таблица найдена в схеме? - PullRequest
1 голос
/ 18 июня 2019

Я использую соединения ADODB для подключения к базе данных, к которой никто из моих коллег не понимает, как подключаться. До сих пор я был в состоянии увидеть все доступные таблицы с помощью 2 методов:

Dim ado as object
set ado = CreateObject("ADODB.Connection")
Call ado.open("...")

set rs = ado.Execute("SELECT * FROM sys.objects WHERE type='U'")

, а также

const adTable = 20
Set rstSchema = ado.OpenSchema(adTable)
Do Until rstSchema.EOF
    Debug.Print rstSchema("TABLE_NAME")
    rstSchema.MoveNext
Loop

Но часть, которая меня смущает, - это выбор из таблиц напрямую ... Я ожидал, что смогу сделать:

select * from <<TABLENAME>>

, где <<TABLENAME>> было одним из имен таблиц, возвращенных двумя вышеуказанными методами. Однако всякий раз, когда я делаю это, я получаю ошибку в заголовке:

Invalid object name '<<TABLENAME>>'.

Итак, как именно я имею в виду доступ к данным в таблицах, определенных методом OpenSchema (). Есть ли другой метод, с которым я не знаком?

1 Ответ

0 голосов
/ 20 июня 2019

Как обсуждено с itsLex в комментариях:

В терминах SQL Server:

select * from <<Database>>.<<Owner>>.<<TableName>>

В качестве альтернативы вы можете использовать оператор USE следующим образом:

USE <<Database>>;
select * from <<TableName>>;
...