SELECT * FROM MySQL Linked Server с использованием SQL Server без OpenQuery

Я пытаюсь запросить связанный сервер MySQL с помощью SQL Server.

Следующий запрос выполняется просто отлично.

SELECT * FROM OPENQUERY([Linked_Server], 'SELECT * FROM Table_Name')

Можно ли запустить тот же запрос без использования вызова OpenQuery?

Ответ 1

Нашел ответ здесь. Теперь я могу запросить трехточечные нотации. Благодаря

http://www.sparkalyn.com/2008/12/invalid-schema-error/

Перейдите на экран параметров поставщика. В SQL Server 2005 вы можете увидеть список поставщиков в папке выше связанного сервера (при условии, что у вас есть соответствующие разрешения). Щелкните правой кнопкой мыши на MSDASQL и перейдите к свойствам. В SQL Server 2000 кнопка "Параметры поставщика" находится в диалоговом окне, где вы создаете связанный сервер. Установите флажок "Только нулевой уровень"

Ответ 2

вы можете использовать инструкцию ниже

выберите * из [linkedServerName]... [databaseName.TableName]

но перед выполнением кода выше, вы должны внести некоторые изменения.

в SQL Server Management Studio, перейдите в папку "Связанные серверы", откройте папку "Поставщики", найдите MSDASQL и получите ее свойство  затем установите флажок "Только уровень нуля" нажмите Ok... затем выполните над запросом и наслаждайтесь им.

Ответ 3

Попробуйте вот так:

SELECT * FROM [Linked_Server]...[db_name.table_name]

Работаем правильно, однако есть проблемы с преобразованием типов данных. Безопаснее и надежнее использовать OPEQUERY.

SELECT * FROM OPENQUERY([Linked_Server], 'SELECT * FROM db_name.table_name')

Ответ 4

Вы должны иметь возможность просто запросить связанный сервер напрямую.

select * from mylinkedserver.database.schema.mytable

EDIT:

Попробуйте с трехточечной нотацией, как отмечено в этом посте: http://www.ideaexcursion.com/2009/02/25/howto-setup-sql-server-linked-server-to-mysql/

SELECT * FROM MYSQLAPP...tables

Сообщение 7399, Уровень 16, Состояние 1, Строка 1 Поставщик OLE DB "MSDASQL" для связанный сервер "MySQLApp" сообщил об ошибке. Провайдер не дал любая информация об ошибке. Msg 7312, уровень 16, состояние 1, строка 1 Неправильное использование схемы или каталога для поставщика OLE DB "MSDASQL" для связанный сервер "MySQLApp". Имя из четырех частей было предоставлено, но поставщик не предоставляет необходимые интерфейсы для использования каталога или схемы.

Эта ошибка из четырех частей связана с ограничением в MySQL ODBC драйвер. Вы не можете переключать каталоги/схемы, используя пунктир нотации. Вместо этого вам придется зарегистрировать еще один DSN и связанный Сервер для разных каталогов, к которым вы хотите получить доступ. Будь уверен и следуйте трехточечному обозначению, указанному в примере запроса.

Ответ 5

Есть важный момент для использования этого:

SELECT * FROM [Linked_Server]...[db_name.table_name]

Вы должны идти

Linked Server → provider-> MSDASQL:

и убедитесь, что эти три параметра были проверены

  • Динамический параметр
  • Только нулевой уровень
  • Разрешить в процессе

https://www.sqlteam.com/forums/topic.asp?TOPIC_ID=153024