none
MySQLにリンクサーバーにてリンクしたい RRS feed

  • 質問

  • SQLServer2012 Expressにてリンクサーバー機能を使用し、

    MySQLに接続したいです。

    以下の手順にて接続はできるのですが、SELECTが出来ない状態です。

    1.MySQL ODBCドライバー(5.1.13)インストール

    2.SQL Server Management Studioにsaでログイン

    3.新しいリンクサーバーを選択

    4.リンクサーバーを「MYSQL」と入力

    5.プロパイダーをその他の「Microsoft OLE DB Provider for ODBC Drivers」を選択

    6.プロパイダー文字列に「Driver={MySQL ODBC 5.1 DRIVER};SERVER=192.168.100.200;Port=3306;DATABASE=データベース名;USER=MySQLのユーザー名;PASSWORD=MySQLのパスワード;」を入力

    7.それ以外はデフォルト

    カタログの中にMySQL上のデータベースが表示されていることを確認したが、

    テーブル名を選択後のテーブルをスクリプト化のSELECTを選択するとクエリウィンドウが表示され、

    内容が、「[MYSQL].[wms_db]..[employeetable] に選択できる列が含まれていないか、または現在のユーザーにそのオブジェクトに対する権限がありません。」と表示されてしまいます。

    2013年11月27日 3:00

すべての返信

  • フォーラム オペレーターの星 睦美です。
    ofena さん、投稿ありがとうございます。

    トラブルシューティングの手がかりになりますので、メッセージに出力された内容に関してofena さんが確認した結果も質問に追記していただけるとコミュニティのユーザーからのアドバイスが集まりやすくなると思います。

    ※フォーラムで役立つ回答がありましたら、投稿者からの[回答としてマーク]をお願いします。


    フォーラム オペレーター 星 睦美 - MSDN Community Support


    • 編集済み 星 睦美 2013年11月27日 4:22 リンク追加
    2013年11月27日 4:21
  • テーブル名を選択後のテーブルをスクリプト化のSELECTを選択するとクエリウィンドウが表示され、

    内容が、「[MYSQL].[wms_db]..[employeetable] に選択できる列が含まれていないか、または現在のユーザーにそのオブジェクトに対する権限がありません。」と表示されてしまいます。

    この表示があったので、以下のことを行い、確認していました。

    1.リンクサーバーにて作成された「MYSQL」のプロパティを開き、セキュリティの「このセキュリティコンテキストを使用する」に、MySQLのユーザー名とパスワードを設定しました。

    結果としては、ダメでした。

    その次に以下のことを行いました。

    1.「セキュリティコンテキストを使用したい」のままで、ローカルサーバーのログインとリモートサーバーのログインのマッピングにて

    ローカルログイン「sa」,権限の借用はoff,リモートユーザーとリモートパスワードにMySQLのユーザー名とパスワードを設定しました。

    結果としては、ダメでした。

    ※そもそも、MySQLに接続できているか否かは、Access VBAにてADO接続しており確認済みです。

    • 編集済み ofena 2013年11月27日 5:24
    2013年11月27日 5:16
  • 状況は良く書かれていると思うのですが、なかなかレスがつかないようですね。

    MySQLはあまり詳しくないのですが、先ずはリンクサーバー経由での接続時にODBCログや一般クエリログをtailするなどしてMySQL側にどのようなクエリが届いているか、接続がどのような権限で行われているか、もしくは接続が出来ていないか、等々を確認して、原因を絞り込んでみてはいかがでしょうか。
    http://dev.mysql.com/doc/refman/5.1/ja/myodbc-configuration-trace.html
    http://dev.mysql.com/doc/refman/5.1/ja/query-log.html


    MCITP(Database Developer/Database Administrator)

    2013年12月3日 0:56
  • 先ずはリンクサーバー経由での接続時にODBCログや一般クエリログをtailするなどしてMySQL側にどのようなクエリが届いているか、接続がどのような権限で行われているか、もしくは接続が出来ていないか、等々を確認して、原因を絞り込んでみてはいかがでしょうか。
    http://dev.mysql.com/doc/refman/5.1/ja/myodbc-configuration-trace.html
    http://dev.mysql.com/doc/refman/5.1/ja/query-log.html

    「SQL Server Management Studio」を用いてのリンクサーバー(MySQLへのリンク)への接続は、

    データベース名が閲覧できるので、出来ていると思います。

    トレースをしてみたいと思いましたが、「SQL Server Management Studio」からのトレースが上記方法ではできないと思いますが、

    例えばVBAなどを用いてODBC接続をし、リンクサーバー先のデータベースをトレースすれば良いのでか?  


    • 編集済み ofena 2013年12月6日 2:50
    2013年12月6日 2:20
  • なぜMySQLのトレースをSQL Server Management Studioから行うのでしょうか?
    トレースはURLのページに記載されている通りの手順で可能です。
    ただ、トレース自体が目的ではなく、接続した先のどこで何が起きているかの判断を目的とした一手法の提案でしたので、先の内容が理解できていない状況では無理にトレースする必要はありません。

    現状挙げられている情報ですと接続が出来ているらしいというだけでその先で何が起きているのか判断が付かないかと思われます。
    先ずはそこの状況を把握された上で詳細を追記されるとアドバイスが集まりやすくなるかと思われます。


    MCITP(Database Developer/Database Administrator)

    2013年12月9日 1:22
  • SELECT * FROM OPENQUERY(MYSQL, 'SELECT * FROM wms_db.employeetable')
    2019年2月28日 5:30