web-dev-qa-db-ja.com

SELECT * FROM OpenQueryなしのSQL Serverを使用するMySQLリンクサーバー

SQL Serverを使用してMySQLリンクサーバーを照会しようとしています。

以下のクエリは問題なく実行されます。

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

OpenQuery呼び出しを使用せずに同じクエリを実行することは可能ですか?

12
Kevin

ここで答えを見つけました。これで、3つのドット表記クエリを実行できます。ありがとう

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

プロバイダーオプション画面に移動するSQL Server 2005では、リンクサーバーの上のフォルダーにプロバイダーのリストを表示できます(適切なアクセス許可がある場合)。 MSDASQLを右クリックして、プロパティに移動します。 SQL Server 2000では、リンクサーバーを作成するダイアログボックスにプロバイダーオプションボタンがあります。 「レベル0のみ」というボックスをオンにします

17
Kevin

以下のステートメントを使用できます

select * from [linkedServerName] ... [databaseName.TableName]

しかし、上記のコードを実行する前に、いくつかの変更を行う必要があります。

sQL Server Management Studioで、「リンクサーバー」フォルダーに移動し、プロバイダーフォルダーを開き、MSDASQLを見つけてそのプロパティを取得し、「レベルゼロのみ」をチェックしますOk ...次に上記のクエリを実行しますそれをお楽しみください!!!

10
vahid basirat

このようにしてみてください:

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

適切に動作しますが、データ型の変換には問題があります。より安全で信頼性の高い使用方法はOPEQUERYです。

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

リンクサーバーに直接クエリを実行できる必要があります。

select * from mylinkedserver.database.schema.mytable

編集:

この投稿に記載されている3つのドット表記を試してください。 http://www.ideaexcursion.com/2009/02/25/howto-setup-sql-server-linked-server-to-mysql/ =

SELECT * FROM MYSQLAPP...tables

メッセージ7399、レベル16、状態1、行1リンクサーバー "MySQLApp"のOLE DBプロバイダー "MSDASQL"はエラーを報告しました。プロバイダーはエラーに関する情報を提供しませんでした。メッセージ7312 、レベル16、状態1、行1無効なスキーマまたはカタログの使用OLEリンクサーバー "MySQLApp"のDBプロバイダー "MSDASQL"。4部構成の名前が提供されましたが、プロバイダーは提供しますカタログまたはスキーマを使用するために必要なインターフェースを公開しないでください。

この「4部構成の名前」エラーは、MySQL ODBCドライバの制限によるものです。ドット表記法を使用してカタログ/スキーマを切り替えることはできません。代わりに、別のDSNとリンクサーバーを登録する必要がありますアクセスするさまざまなカタログに対応するため、クエリ例に記載されている3ドット表記法を確認してください。

4
duffn

これを使用するための重要なポイントがあります:

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

続けなければならない

リンクサーバー->プロバイダー-> MSDASQL:

そして、これらの3つのオプションがチェックされていることを確認してください

  • 動的パラメータ
  • レベル0のみ
  • インプロセスを許可する

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

0
sanaz amini