有什么方法可以仅列出使用链接服务器访问的数据库?

时间:2019-07-02 11:19:15

标签: sql sql-server

当我登录sql server时。我看到许多数据库,但没有访问某些数据库。所以我只想列出使用链接名称访问数据库。

select name FROM sys.sysdatabases WHERE HAS_DBACCESS(name) = 1

我在本地运行此代码,它正在工作。但是我想运行这段代码

select name FROM [linkedname].sys.sysdatabases WHERE HAS_DBACCESS(name) = 1

它不起作用。

1 个答案:

答案 0 :(得分:2)

[linkedname].sys.sysdatabases将引用数据库 linkedname,而不是服务器。

您需要使用4部分命名LinkedServerName.DatabaseName.SchemaName.ObjectName。以您的示例为例:[linkedname].master.sys.sysdatabases

但是,因为(如Dan Guzman所指出的)这是一个链接查询,所以HAS_DBACCESS将在本地运行。您可以使用OPENQUERY来解决此问题:

SELECT [name]
FROM OPENQUERY(linkedname,N'SELECT [name] FROM master.sys.sysdatabases WHERE HAS_DBACCESS(name) = 1;');