exec sp_tables_ex returns 在我使用 exec sp_linkedservers 找不到的服务器上没有任何内容
exec sp_tables_ex returns nothing on a server I can find using exec sp_linkedservers
我正在尝试在数据库中查找未经常使用的数据。
我看到它是一个链接服务器,使用:
exec sp_linkedservers
其中 returns 服务器名称,TheSRV
及其目录名称 S100
。
然后我尝试查找有关链接服务器中存在哪些表的信息,TheSRV
。
为此我尝试使用:
exec sp_tables_ex TheSRV
但是这个returns只有headers,没有任何数据。
我可以像这样使用 openquery 进行查询:
Select name, date From OPENQUERY(TheSRV, 'Select Name, Date from S100.F1.TableName')
哪个returns有效数据。
当我找不到表格列表时,如何才能找到我需要的关于现有表格的信息?
您应该能够使用列出架构对象的标准方法之一,将服务器名称限定为四部分命名约定的一部分:
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
我正在尝试在数据库中查找未经常使用的数据。
我看到它是一个链接服务器,使用:
exec sp_linkedservers
其中 returns 服务器名称,TheSRV
及其目录名称 S100
。
然后我尝试查找有关链接服务器中存在哪些表的信息,TheSRV
。
为此我尝试使用:
exec sp_tables_ex TheSRV
但是这个returns只有headers,没有任何数据。
我可以像这样使用 openquery 进行查询:
Select name, date From OPENQUERY(TheSRV, 'Select Name, Date from S100.F1.TableName')
哪个returns有效数据。
当我找不到表格列表时,如何才能找到我需要的关于现有表格的信息?
您应该能够使用列出架构对象的标准方法之一,将服务器名称限定为四部分命名约定的一部分:
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