Результаты, которые не отображаются при запуске таблиц, связанных с запросом SQL Server, из разных источников

Примечание

Office 365 ProPlus переименован в Майкрософт 365 корпоративные приложения. Для получения дополнительной информации об этом изменении прочитайте этот блог.

Исходный номер статьи базы знаний:   824169

Примечание

Эта статья относится к файлу базы данных Microsoft Access (. mdb) или к файлу базы данных Microsoft Access (ACCDB). Требуются основные навыки работы с макросами, написанием кода и взаимодействием.

Симптомы

При выполнении запроса в базе данных Microsoft Access, которая присоединяет связанные таблицы Microsoft SQL Server из разных источников или баз данных, запрос может не вернуть никаких данных.

Однако при выполнении аналогичного запроса, ссылающегося на связанные таблицы SQL Server из одного источника или базы данных, эта проблема не возникает.

Обходной путь

Чтобы обойти эту проблему, используйте один из указанных ниже способов.

Переопределение запроса

Вы можете переписать запрос Microsoft Access, чтобы использовать условия соединения с ключевым словом LIKE. Оператор LIKE можно использовать для сравнения одного поля с другим полем в связанных таблицах из разных баз данных, а не с помощью ANSI JOIN.

Например, если исходным запросом является следующий запрос, в котором dbo_db1_table1 связан из базы данных SQL Server DB1 и dbo_db2_table1, dbo_db2_table2 связываются из базы данных SQL Server DB2:

SELECT 
dbo_db1_table1.db1_table1_col1, 
dbo_db2_table1.db2_table1_col1, 
dbo_db2_table2.db2_table2_col1
FROM 
(
dbo_db1_table1 INNER JOIN dbo_db2_table1 
ON
dbo_db1_table1.db1_table1_col2 = dbo_db2_table1.db2_table1_col2
) INNER JOIN dbo_db2_table2 
ON 
dbo_db2_table1.db2_table1_col3 = dbo_db2_table2.db2_table2_col3;

Измените запрос следующим образом:

SELECT 
dbo_db1_table1.db1_table1_col1, 
dbo_db2_table1.db2_table1_col1, 
dbo_db2_table2.db2_table2_col1
FROM 
dbo_db1_table1, 
dbo_db2_table1 INNER JOIN dbo_db2_table2 
ON 
dbo_db2_table1.db2_table1_col3 = dbo_db2_table2.db2_table2_col3;
WHERE 
(((dbo_db1_table1.db1_table1_col2 LIKE dbo_db2_table1.db2_table1_col2));

Примечание

Здесь в одном запросе отображаются синтаксис присоединения к ANSI и не в формате ANSI.

Использование проекта базы данных Access

Чтобы избежать проблемы, описанной в разделе "признаки" этой статьи, используйте проект базы данных Microsoft Access вместо базы данных Microsoft Access. Свяжите соответствующие таблицы SQL Server в проекте базы данных Microsoft Access, а затем создайте хранимую процедуру, чтобы включить следующий запрос (где dbo_db1_table1 связан из базы данных SQL Server DB1 и dbo_db2_table1, dbo_db2_table2 связан из базы данных SQL Server DB2):

SELECT 
dbo_db1_table1.db1_table1_col1, 
dbo_db2_table1.db2_table1_col1, 
dbo_db2_table2.db2_table2_col1
FROM 
(
dbo_db1_table1 INNER JOIN dbo_db2_table1 
ON
dbo_db1_table1.db1_table1_col2 = dbo_db2_table1.db2_table1_col2
) INNER JOIN dbo_db2_table2 
ON 
dbo_db2_table1.db2_table1_col3 = dbo_db2_table2.db2_table2_col3;

Результирующий набор будет отображаться при выполнении этой хранимой процедуры.

Импорт таблиц SQL Server

Чтобы избежать проблемы, описанной в разделе "признаки" этой статьи, импортируйте таблицы SQL Server в базу данных Microsoft Access, а не связывая таблицы SQL Server с базой данных Access.

Примечание

Если вы импортируете таблицы SQL Server в базу данных Access, вы не сможете использовать последние данные в импортированной таблице, так как импортированная таблица содержит моментальный снимок данных во время импорта таблицы.

Дополнительная информация

Вы можете отфильтровать данные в Microsoft Access, используя ключевое слово JOIN в запросах. Ключевое слово JOIN классифицируется как присоединение к ANSI и не СОЕДИНЕНное с ANSI. При СОЕДИНЕНии ANSI в запросе используются ключевое слово JOIN и ON. При СОЕДИНЕНии без ANSI в запросе используется предложение WHERE.

СОЕДИНЕНИЕ не в формате ANSI использовалось чаще, чем развитие ANSI 92 SQL и было преобразовано в присоединение к ANSI. Корпорация Майкрософт рекомендует использовать присоединение к ANSI в запросах для фильтрации данных.

Ссылки

Для получения дополнительных сведений о том, как запустить мастер преобразования в формат SQL Server, выберите в меню Справка команду Справка по Microsoft Office , введите в поле поиска в области поиска Мастер изменения размера и нажмите кнопку начать поиск , чтобы просмотреть раздел.