2017-06-20 21 views
0

私はそれほど使用されていないデータベースでデータを検索しようとしています。exec sp_tables_exは、exec sp_linkedserversを使用して見つけることができるサーバでは何も返しません。

exec sp_linkedservers 

インスタンスのカタログ名S100のために一緒にサーバー名、TheSRVを返します。

私はそれを使用してリンクサーバーがあることを見てきました。

次に、リンクされたサーバーに存在するテーブルの情報(TheSRV)を見つけようとします。このため

私が使用しよう:

exec sp_tables_ex TheSRV 

が、これはどのようなデータなしで、ヘッダのみを返します。

私はこのようなOPENQUERY使用してクエリを実行できます。有効なデータを返す

Select name, date From OPENQUERY(TheSRV, 'Select Name, Date from S100.F1.TableName') 

テーブルのリストが見つからない場合は、テーブルに関する必要な情報をどのように見つけることができますか?

+0

ヘッダーだけはどういう意味ですか?あなたは、テーブルのリスト、それらのテーブルのそれぞれの列のリストを探していますか、または例のデータを見ることができるようにそれぞれからいくつかの行を選択する何かを探していますか? – Bridge

+0

@Bridgeヘッダーだけでは、Exec sp_tables_ex TheSRVを使用しようとすると、そのクエリに関連付けられたヘッダー、つまり3つのうちの「TABLE_CAT」、「TABLE_SCHEM」のヘッダーが取得されますが、ヘッダーに対応するデータはありません。テーブルのリストを探したい。 – Cenderze

答えて

1

あなたは4つのパートの命名規則の一部としてサーバー名を修飾する、スキーマ・オブジェクトをリストの標準的な方法のいずれかを使用することができるはずです。

SELECT * 
FROM TheSRV.S100.INFORMATION_SCHEMA.TABLES T 
WHERE T.TABLE_TYPE = 'BASE TABLE' 

これらのテーブルのそれぞれの列を表示するには:

SELECT C.* 
FROM TheSRV.S100.INFORMATION_SCHEMA.TABLES T 
     INNER JOIN TheSRV.S100.INFORMATION_SCHEMA.COLUMNS C 
       ON T.TABLE_NAME = C.TABLE_NAME 
        AND T.TABLE_SCHEMA = C.TABLE_SCHEMA 
WHERE T.TABLE_TYPE = 'BASE TABLE' 
ORDER BY C.TABLE_NAME, C.ORDINAL_POSITION 
関連する問題