从远程服务器上的 schema_id 获取 schema_name (MSSQL)

问题描述 投票:0回答:0

我必须在多个数据库上运行各种查询并收集结果作为结果集,因此 sp_MSforeach 方法不起作用。我实际上是在收集有关这些服务器中的数据库、模式和对象的数据,以提供一些实用功能。

信息模式在工作时效果很好,但对于某些事情,您需要 sys 视图,例如 sys.synonyms。这个,通过链接服务器:

   select *
   from <remote_server>.<database>.sys.synonyms

gets me,例如,schema_id。我需要从 schema_id 中获取模式名称。我不能使用 SCHEMA_NAME() 因为它在 this 数据库的上下文中工作,在 this 服务器上,而不是在远程服务器上的 that 数据库的上下文中;我需要的是这样的东西(发明的语法):

select *, 
    <remote_server>.<database>.SCHEMA_NAME(schema_id)
from <remote_server>.<database>.sys.synonyms

据我所知,不存在。

我可以使用 information_schema.schemata 视图,除了 1。它们不能很好地与 MS 的目录视图(通常只报告事物的内部 ID 号)混合 2。BOL 不断警告您不要相信来自 information_schema 结果的模式信息.

所以有几个问题,首先,当从远程服务器获取 schema_id 时,如何从 schema_id 获取模式名称?

其次,有没有人知道任何全面的文档或更好的好书,其中涵盖了这些目录视图,这些视图取代了旧的 information_schema 视图,因为使用它们非常痛苦。

sql-server information-schema
© www.soinside.com 2019 - 2024. All rights reserved.