web-dev-qa-db-ja.com

「異種クエリ」とは何ですか?

プログラムで実行しているSQLクエリに関する次のエラーメッセージが表示されました。 SQL Server 2005 T-SQL。

異種クエリでは、接続にANSI_NULLSおよびANSI_WARNINGSオプションを設定する必要があります。これにより、一貫したクエリのセマンティクスが保証されます。これらのオプションを有効にしてから、クエリを再発行してください。 (重大度16)

修正は簡単で、ANSI_NULLSANSI_WARNINGSONを設定しますが、知りたいと思ったwhat異種クエリです。 Google検索で何十もの結果が表示され、ANSI_NULLSANSI_WARNINGSを設定するように指示されますが、この用語の意味を説明するものは何もありません。クエリは次のとおりです。

UPDATE SRV.DB.DBO.TABLE SET Column=
            (SELECT Column 
            FROM SRV1.DB.DBO.TABLE)

これは他の方法ではこのエラーを取得したことがないため、1つのクエリで複数のデータベースエンジンに接続するためであると考えています。
「異種」とは、このコンテキストで2つの異なるデータベースエンジンにクエリを実行することを指しますか?

14
Ben Brocka

「異種」とは、このコンテキストで2つの異なるデータベースエンジンにクエリを実行することを指しますか?

基本的にそうです。 「異機種間」クエリは、「異機種間リンクサーバー」で実行されます。 このリンクサーバーへのすべてのクエリは、異種混合になります。

そして「異種」は 分散クエリ のサブセットです

  • SQL Serverの複数のインスタンスに格納されている分散データ。
  • OLE DBプロバイダーを使用してアクセスされるさまざまなリレーショナルデータソースおよび非リレーショナルデータソースに格納されている異種データ。

しかし、時々「異種」がポップアップします。

MSDNの linking servers を参照してください

企業全体の異種データソースに対して分散クエリ、更新、コマンド、およびトランザクションを発行する機能。

sp_addlinkedserver

リンクサーバーは、OLE DBデータソースに対する分散異種)クエリへのアクセスを許可します。

"Joining Heterogeneous Data" でのActive DirectoryへのクエリのMSDNの例

そして再びMSDN "Heterogeneous Database Replication"

8
gbn

はい、私の知る限りです。

クエリで発生する問題は、リンクされたテーブルからどの行が返されるかを知る方法がないことです。これは単なるダミーコードですか、それともクエリはこのように記述されていますか?

6
mrdenny

異機種混在は、単に異なることを意味します。したがって、異種クエリは1つのデータベースにあり、異なるデータベースをクエリしています。データベースが異なるため、設定が異なる可能性があり、意図したものとは異なる結果が生じる可能性があります。

1
Robert Harrison