简体   繁体   English

通过链接服务器查询master_files表

[英]Query master_files table via linked server

I am on SQL2008R2, and I try to query database files remotely via linked server, but the remote one (A) mix up the id's, and different database id's got totally different filenames next to it. 我使用的是SQL2008R2,我尝试通过链接服务器远程查询数据库文件,但是远程的一个(A)将ID混合在一起,并且不同的数据库ID旁边的文件名完全不同。 If I query the files locally on the target server, I got the proper file list. 如果我在目标服务器上本地查询文件,则会得到正确的文件列表。

--A - 一种

--remotely querying target server 
SELECT DB_NAME(a.database_id), a.* FROM [myLinkedServer].master.sys.master_files AS a WHERE DB_NAME(a.database_id) IN('db1','db2',...)

--B --B

--Run locally on target server
SELECT DB_NAME(a.database_id), a.* FROM master.sys.master_files AS a WHERE DB_NAME(a.database_id) IN('db1','db2',...)

Query A and B should be has the same result set. 查询A和B应该具有相同的结果集。

What am I missing here? 我在这里想念什么?

As Gordon wrote DB_NAME is evaluated on the local server. 正如Gordon所写,在本地服务器上评估DB_NAME。 I solved it to JOIN to sys.databases on the remote server, and get the name from there. 我解决了该问题,以便将其加入远程服务器上的sys.databases,并从那里获取名称。

Thank you Gordon! 谢谢戈登!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM