Как добавить связанный с MySQL сервер в SQL Server?


8

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

Обратите внимание, что SQL Server установлен на отдельном компьютере с другим именем домена.

SQL-сервер находится 10.0.1.1на old_domain.com.

Сервер MySQL находится 10.0.1.2на new_domain.com.

Я добавил ODBC Data Source на сервер 10.0.1.1и протестировал соединение без проблем.

Затем я открыл Microsoft SQL Server Management Studio и перешел к SQL SERVER > Server Object > Linked Servers.

Я попал в мастер, чтобы добавить связанный сервер, и настроил его так:

  1. Связанный сервер: «MySQLNewServer»
  2. Я выбрал «Другой источник данных» Поставщик «Microsoft OLE DB Provider для ODBC» Имя продукта «Подключение к MySQL» Источник данных «MySQL» с тем же именем в источнике данных, который был добавлен на первом шаге.
  3. На вкладке «Безопасность» я выбрал «Сделать с помощью этого контекста безопасности» и поместил имя пользователя SQL Server и пароль SQL Server.
  4. Я ударил "ОК"

Примечание: я следовал инструкции по этой ссылке http://dbperf.wordpress.com/2010/07/22/link-mysql-to-ms-sql-server2008/

Тем не менее, я получаю эту ошибку:

Поставщик OLE DB «MSDASQL» для связанного сервера «MySQLNewServer» вернул сообщение «[MySQL] [Драйвер ODBC 5.2 (w)] Не удается подключиться к серверу MySQL на 10.0.1.1 (10055) Ошибка Microsoft SQL Server: 7303.

Может кто-нибудь сказать, пожалуйста, что я делаю не так? Как я могу заставить эти 2 сервера общаться?

Ответы:


1

У нас есть связанный сервер на SQL, указывающий на сервер MySQL. Создать связанный сервер довольно просто.

Сложнее всего получить разрешения, отсортированные на стороне MySQL.

Если память служит моему праву, вам нужно создать локальную учетную запись на сервере SQL и создать имя входа на сервере MySQL для полного имени компьютера, на котором будет работать связанный сервер.

На сервере SQL у меня есть логин для Sqltest. Это учетная запись SQL

В свойствах связанного сервера я имею «Безопасность»> Быть сделанным используя этот контекст безопасности> Имя пользователя и пароль входа MySQL

В окне MySQL у меня есть логин для Sqltest@myserver.com. Это где мой связанный сервер вышел из строя в течение довольно долгого времени.


1

Я считаю, что и MySQL, и MS-SQL должны разрешать удаленные подключения. Роль ODBC состоит в том, чтобы создать канал, который является двунаправленным с точки зрения передачи данных (даже если отправлять ACK для подключения к связанному серверу), то есть также проверять удаленный вход со стороны MS-SQL. убедитесь, что порт 3306 разрешен через брандмауэр 10.0.1.1.


0

Я полагаю, что это не совсем то, что вы делаете неправильно, скорее, Windows не собирается испытывать особых трудностей, чтобы рассказать вам, в чем именно заключается проблема.

Число в скобках (10055) - системная ошибка, возвращаемая, когда драйвер ODBC пытался подключиться к MySQL.

C:\>perror 10055
Win32 error code 10055: An operation on a socket could not be performed because
the system lacked sufficient buffer space or because a queue was full.

Не очень полезно. Ошибка 10055 - это WSAENOBUFS, возможно, более полезный код, который можно использовать для поиска информации о природе проблемы, или же это может отвлечь внимание, побочный эффект реальной проблемы.

Хорошая новость, если есть хорошие, заключается в том, что я уверен, что вы, по крайней мере, сможете сократить ваши неполадки в два раза и сосредоточиться только на стороне SQL Server, потому что это не ошибка, которую MySQL Server «вернет» вам. Я имею в виду, что это не ошибка "при подключении", это ошибка даже в самом начале процесса подключения. На самом деле вы никогда не подключаетесь к MySQL Server, поэтому вы должны быть в состоянии безопасно исключить разрешения и другие настройки на стороне MySQL Server как часть проблемы, пока вы не преодолеете это конкретное условие, которое не позволяет вам даже пытаться соединение.

В другом вопросе здесь код ошибки был тем же, и проблема заключалась в невозможности подключения к MySQL Server, хотя я думаю, что в этом случае это был не связанный сервер, а просто обычное клиентское соединение, и рассматриваемый компьютер видимо были проблемы с сетью.

Другой код ошибки, 7303, кажется, подразумевает проблему с разрешениями на стороне SQL Server. Также здесь . Извините, я не могу быть более конкретным с вещами, чтобы попробовать, но, возможно, что-то здесь поможет вам в полезном направлении.


Я не слишком уверен. В какой-то момент все работало нормально. но я заметил, что пару дней назад сломался. С тех пор я отключил поиск DNS на сервере MySQL. поэтому MySQL будет смотреть только на IP-адрес. Но это не должно иметь значения, потому что пользователь, с которым я подключаюсь к mysql, является пользователем root @%. Я не знаю, вызвало ли добавление «skip-name-resolution» в mysql эту проблему или нет, поскольку я кашлял этой проблемой некоторое время спустя после того, как это изменение произошло.
Майк
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.