[linkedname].sys.sysdatabases
будет ссылаться на базу данных linkedname
, а не на сервер.
Вам необходимо использовать 4 части именования LinkedServerName.DatabaseName.SchemaName.ObjectName
.Для вашего примера это будет: [linkedname].master.sys.sysdatabases
Поскольку, однако (как указал Дэн Гузман), это связанный запрос, HAS_DBACCESS
будет выполняться локально.Вы можете обойти это, используя OPENQUERY
:
SELECT [name]
FROM OPENQUERY(linkedname,N'SELECT [name] FROM master.sys.sysdatabases WHERE HAS_DBACCESS(name) = 1;');