整个实例中所有数据库和相应同义词的列表
List of all databases and corresponding synonyms in entire instance
我想查看一个实例中所有数据库中所有同义词的列表。在大多数数据库中只有 1 个同义词,但每个实例中有数百个数据库。理想情况下,我希望结果看起来像这样:
第 1 列:数据库名称
第 2 列:同义词名称
第 3 列:基本对象名称(或任何其他将显示同义词确切文本的内容)
这个查询做的更多而不是我想要它做的,但它只适用于单个数据库。
select db_id(parsename(base_object_name, 3)) as dbid
, object_id(base_object_name) as objid
, base_object_name
from sys.synonyms;'
我试图更改上面的查询以显示所有数据库的结果,结果我得到了下面的查询。虽然它不会导致执行失败,但它也不会产生结果。它打印数百个具有正确列名的空表。
DECLARE @command varchar(1000)
SELECT @command = 'select db_id(parsename(base_object_name, 3)) as dbid
, object_id(base_object_name) as objid
, base_object_name
from sys.synonyms;'
EXEC sp_MSforeachdb @command
如果您能帮助我找到一种方法来获取实例上每个数据库的所有同义词的干净列表,我将不胜感激。
你非常接近。你需要添加一个use
,否则你所有的语句运行都在master
:
DECLARE @command varchar(1000)
SELECT @command = 'use [?] select ''[?]'', db_id(parsename(base_object_name, 3)) as dbid
, object_id(base_object_name) as objid
, base_object_name
from sys.synonyms;'
EXEC sp_MSforeachdb @command
我已将数据库名称添加为另一列,以便您可以看到数据库名称,而且我相信您可能希望进一步调整此查询,因为它实际上是 运行ning每个单独的数据库。
我想查看一个实例中所有数据库中所有同义词的列表。在大多数数据库中只有 1 个同义词,但每个实例中有数百个数据库。理想情况下,我希望结果看起来像这样:
第 1 列:数据库名称
第 2 列:同义词名称
第 3 列:基本对象名称(或任何其他将显示同义词确切文本的内容)
这个查询做的更多而不是我想要它做的,但它只适用于单个数据库。
select db_id(parsename(base_object_name, 3)) as dbid
, object_id(base_object_name) as objid
, base_object_name
from sys.synonyms;'
我试图更改上面的查询以显示所有数据库的结果,结果我得到了下面的查询。虽然它不会导致执行失败,但它也不会产生结果。它打印数百个具有正确列名的空表。
DECLARE @command varchar(1000)
SELECT @command = 'select db_id(parsename(base_object_name, 3)) as dbid
, object_id(base_object_name) as objid
, base_object_name
from sys.synonyms;'
EXEC sp_MSforeachdb @command
如果您能帮助我找到一种方法来获取实例上每个数据库的所有同义词的干净列表,我将不胜感激。
你非常接近。你需要添加一个use
,否则你所有的语句运行都在master
:
DECLARE @command varchar(1000)
SELECT @command = 'use [?] select ''[?]'', db_id(parsename(base_object_name, 3)) as dbid
, object_id(base_object_name) as objid
, base_object_name
from sys.synonyms;'
EXEC sp_MSforeachdb @command
我已将数据库名称添加为另一列,以便您可以看到数据库名称,而且我相信您可能希望进一步调整此查询,因为它实际上是 运行ning每个单独的数据库。