プログラムで実行しているSQLクエリに関する次のエラーメッセージが表示されました。 SQL Server 2005 T-SQL。
異種クエリでは、接続に
ANSI_NULLS
およびANSI_WARNINGS
オプションを設定する必要があります。これにより、一貫したクエリのセマンティクスが保証されます。これらのオプションを有効にしてから、クエリを再発行してください。 (重大度16)
修正は簡単で、ANSI_NULLS
とANSI_WARNINGS
ON
を設定しますが、知りたいと思ったwhat異種クエリです。 Google検索で何十もの結果が表示され、ANSI_NULLS
とANSI_WARNINGS
を設定するように指示されますが、この用語の意味を説明するものは何もありません。クエリは次のとおりです。
UPDATE SRV.DB.DBO.TABLE SET Column=
(SELECT Column
FROM SRV1.DB.DBO.TABLE)
これは他の方法ではこのエラーを取得したことがないため、1つのクエリで複数のデータベースエンジンに接続するためであると考えています。
「異種」とは、このコンテキストで2つの異なるデータベースエンジンにクエリを実行することを指しますか?
「異種」とは、このコンテキストで2つの異なるデータベースエンジンにクエリを実行することを指しますか?
基本的にそうです。 「異機種間」クエリは、「異機種間リンクサーバー」で実行されます。 このリンクサーバーへのすべてのクエリは、異種混合になります。
そして「異種」は 分散クエリ のサブセットです
- SQL Serverの複数のインスタンスに格納されている分散データ。
- OLE DBプロバイダーを使用してアクセスされるさまざまなリレーショナルデータソースおよび非リレーショナルデータソースに格納されている異種データ。
しかし、時々「異種」がポップアップします。
MSDNの linking servers を参照してください
企業全体の異種データソースに対して分散クエリ、更新、コマンド、およびトランザクションを発行する機能。
リンクサーバーは、OLE DBデータソースに対する分散異種)クエリへのアクセスを許可します。
"Joining Heterogeneous Data" でのActive DirectoryへのクエリのMSDNの例
そして再びMSDN "Heterogeneous Database Replication"
はい、私の知る限りです。
クエリで発生する問題は、リンクされたテーブルからどの行が返されるかを知る方法がないことです。これは単なるダミーコードですか、それともクエリはこのように記述されていますか?
異機種混在は、単に異なることを意味します。したがって、異種クエリは1つのデータベースにあり、異なるデータベースをクエリしています。データベースが異なるため、設定が異なる可能性があり、意図したものとは異なる結果が生じる可能性があります。