exec sp_tables_ex在使用exec sp_linkedservers找到的服务器上什么都不返回

时间:2017-06-20 07:41:11

标签: sql-server linked-server openquery

我正在尝试在数据库中查找尚未使用过多的数据。

我已经看到它是一个链接服务器使用:

exec sp_linkedservers

返回服务器名TheSRV以及例如其目录名S100

然后,我尝试查找有关链接服务器TheSRV中存在哪些表的信息。

为此,我尝试使用:

exec sp_tables_ex TheSRV

但这只返回标题,没有任何数据。

我可以使用这样的openquery进行查询:

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

返回有效数据。

当我找不到表格列表时,如何找到关于表格所需的信息?

1 个答案:

答案 0 :(得分:1)

您应该能够使用列出架构对象的标准方法之一,将服务器名称限定为四部分命名约定的一部分:

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