MySQLリンクサーバーをSQL Serverに追加するにはどうすればよいですか?


8

SQL Server上のリンクサーバーをMySQLサーバーに追加しようとしています。

SQL Serverは、異なるドメイン名を持つ別のマシンにインストールされていることに注意してください。

SQL Serverは10.0.1.1old_domain.comにあります。

MySQLサーバーは10.0.1.2new_domain.comにあります。

サーバーにODBCデータソースを追加し10.0.1.1、接続をテストしましたが、問題は報告されていません。

次に、Microsoft SQL Server Management Studioを開いてに移動しましたSQL SERVER > Server Object > Linked Servers

リンクサーバーを追加するためのウィザードが表示され、次のように構成しました。

  1. リンクサーバー:「MySQLNewServer」
  2. 「その他のデータソース」プロバイダー「Microsoft OLE DBプロバイダーfor ODBC」を選択しました製品名「MySQLへの接続」データソース「MySQL」は、最初のステップで追加したデータソースと同じ名前です。
  3. [セキュリティ]タブで[このセキュリティコンテキストを使用して作成する]を選択し、SQL Serverユーザー名とSQL Serverパスワードを入力しました
  4. 「OK」を押します

注:私はこのリンクhttp://dbperf.wordpress.com/2010/07/22/link-mysql-to-ms-sql-server2008/の指示に従いました

しかし、私はこのエラーを受け取ります:

リンクサーバー「MySQLNewServer」のOLE DBプロバイダー「MSDASQL」がメッセージ「[MySQL] [ODBC 5.2(w)Driver]を返しました。10.0.1.1上のMySQLサーバーに接続できません(10055)Microsoft SQL Serverエラー:7303。

誰かが私が間違っていることを教えてもらえますか?これらの2つのサーバーを通信させるにはどうすればよいですか?

回答:


1

MySQLサーバーを指すSQL上のリンクサーバーがあります。リンクサーバーの作成は非常に簡単です。

トリッキーな部分は、パーミッションを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。これは、問題の性質についての洞察を検索するために使用するより有用なコードである場合や、実際の問題の副作用である注意散漫になる場合があります。

良い知らせがあれば、MySQL Serverが「返す」エラーではないため、少なくともトラブルシューティングを半​​分にしてSQL Server側のみに集中できると確信しています。つまり、これは「接続中」の失敗ではなく、実際に接続のプロセスを開始するときの失敗です。MySQLサーバーに実際に接続することはないため、MySQLサーバー側の権限やその他の構成を問題の一部として安全に除外し、この特定の条件を通過して、以下のことを試行することさえできなくなるはずです。接続します。

では、ここで別の質問、エラーコードは同じであった、と私はそのような場合には、それはリンクサーバーが、普通のクライアント接続、および問題のコンピュータではなかったと思いますが、問題は、MySQLサーバに接続できないことでした明らかにネットワークの問題がありました。

他のエラーコード7303は、SQL Server側の権限の問題を示しているようです。また、ここに。申し訳ありませんが、具体的に試してみることはできませんが、ここで何かをすると、役に立つ方向に進むことができます。


よくわかりません。ある時点で、それはうまくいきました。しかし、数日前に壊れていることに気づきました。それ以来、mysqlサーバーでDNSルックアップをオフにしました。MySQLはIPアドレスのみを調べます。しかし、mysqlへの接続に使用しているユーザーはroot @%であるため、それは問題になりません。mysqlに「skip-name-resolve」を追加することでこの問題が発生したのかどうかはわかりません。変更が行われてからしばらくしてからこの問題が発生したためです。
Mike
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.