2017-06-20 8 views
0

J'essaie de trouver des données dans une base de données qui n'a pas été utilisée beaucoup.exec sp_tables_ex ne renvoie rien sur un serveur Je peux trouver en utilisant exec sp_linkedservers

Je l'ai vu qu'il est un serveur lié à l'aide:

exec sp_linkedservers 

qui retourne le servername, TheSRV avec par exemple son nom de catalogue S100.

Ensuite, j'essaie de trouver des informations sur les tables présentes dans le serveur lié, TheSRV.

Pour cela, j'essaie d'utiliser:

exec sp_tables_ex TheSRV 

mais renvoie uniquement les en-têtes, sans aucune donnée.

que je peux faire une requête en utilisant openquery comme ceci:

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

qui renvoie des données valides.

Comment puis-je trouver les informations dont j'ai besoin sur les tables présentes, lorsque je ne trouve pas de liste de tables?

+0

Que voulez-vous dire par rapport aux en-têtes? Êtes-vous à la recherche d'une liste de tables, d'une liste de colonnes pour chacune de ces tables ou recherchez-vous quelque chose qui sélectionne quelques lignes de chaque table pour que vous puissiez voir des exemples de données? – Bridge

+0

@Bridge Avec seulement les en-têtes je veux dire que quand j'essaie d'utiliser Exec sp_tables_ex TheSRV, je ne fais que corréler les en-têtes à cette requête, c'est-à-dire TABLE_CAT, TABLE_SCHEM parmi trois autres, mais pas les en-têtes. Je veux trouver une liste de tables. – Cenderze

Répondre

1

Vous devriez être en mesure d'utiliser l'une des méthodes standard de la liste des objets de schéma, qualifiant le nom du serveur dans le cadre de la convention de nommage quatre parties:

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

Pour voir les colonnes dans chacune de ces tables:

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