2

server1 に WebTrends ODBC ソースがあり、server2 に SQL Server 2005 があります。server2 の SQL Server からこの ODBC に接続したいと考えています。これまでのところ、リンク サーバーの次の定義を使用して、同じサーバー上にある SQL Server からこの ODBC に接続できました。

EXEC sp_addlinkedserver 
@server = N'WT_ODBC', 
@provider=N'MSDASQL', 
@datasrc=N'WT_ODBC_test'

EXEC sp_addlinkedsrvlogin 
@rmtsrvname=N'WT_ODBC',
@useself=N'False',
@locallogin=N'sa',
@rmtuser=N'administrator',
@rmtpassword='########'

このリンク サーバーを次のようにクエリできます。

SELECT *
FROM OPENQUERY(WT_ODBC, 'SELECT * FROM CompleteViewV85.DownloadedFiles'); 

ところで、次のような 4 部構成の名前でクエリを実行することはできません。

SELECT *
FROM WT_ODBC.[Complete View V8.5].CompleteViewV85.DownloadedFiles

次のエラーが表示されます。

Invalid use of schema or catalog for OLE DB provider "MSDASQL" for linked server   
"WT_ODBC". A four-part name was supplied, but the provider does not expose the  
necessary   interfaces to use a catalog or schema.

..そして、オプション「レベルゼロのみ」がチェックされていないことを確認しました。しかし、最初のクエリが機能するため、これはそれほど問題ではありません。

私の問題は、このODBCに接続する方法ですが、別のサーバーからですか? 私はserver2に行き、そこでSQL Serverに次のリンクサーバーを作成しました:

EXEC sp_addlinkedserver 
@server = N'WT_ODBC', 
@srvproduct=N'Microsoft OLE DB Provider for ODBC', 
@provider=N'MSDASQL', 
@datasrc=N'WT_ODBC_test',
@location=N'10.254.251.20'

EXEC sp_addlinkedsrvlogin 
@rmtsrvname=N'WT_ODBC',
@useself=N'False',
@locallogin=N'sa',
@rmtuser=N'administrator',
@rmtpassword='########'

..server1 の IP アドレスを @location パラメータとして配置しました。この方法で作成されたリンク サーバーは、server1 の ODBC に接続できません。server1 で動作するのと同じクエリを実行しようとすると、次のエラーが発生します。

Cannot get the column information from OLE DB provider "MSDASQL" for linked server  
"WT_ODBC".

ヘルプ?誰か?お願いします?:)

前もって感謝します。

4

2 に答える 2

0

接続をテストするとき、Windows の ODBC ソースから動作しますか? のAdministrative Tools\Data Sources (ODBC)

ところで、OPENQUERYクエリはパススルーであるため、「異常な」(より適切な単語がないため) ソースからデータを取得するための良い方法です。クエリ コマンドはリモート サーバーに送信され、そこで実行され、結果のみが返されます。

オープンクエリを使用しない場合は、オプティマイザーに依存します。リモート サーバーが SQL サーバー、DB2、Oracle の場合、オプティマイザがそれを判断します。異常な場合は、すべてのテーブル データの移動を開始してから、ローカル マシンで列と行のフィルタリングを開始することを決定する場合がありますが、これはかなり遅くなります。

于 2009-12-08T13:11:25.603 に答える
0

パラメータを使用しないでください。@location代わりに、WT_ODBC_testODBC データ ソースを適切に構成してください。もちろん、server2で構成する必要があります。

于 2009-12-08T15:06:18.630 に答える