我知道你可以这样做:
select count(*) as Qty from sys.databases where name like '%mydatabase%'
但你怎么能这样做:
select count(*) as Qty from linkedServer.sys.databases where name like '%mydatabases%'
我想我可以在链接服务器上放置一个存储过程并执行第一个选择,但有没有办法查询链接服务器它所拥有的数据库?
答案 0 :(得分:3)
假设您的链接服务器登录对master.sys.databases表具有读取权限,您可以使用以下命令:
select * from linkedserver.master.sys.databases
过去,我在SQL Server 2008 R2上使用了这个非常查询。
答案 1 :(得分:0)
下面列出了一个有效的游标链接: http://jasonbrimhall.info/2012/03/05/are-my-linked-servers-being-used/
查询将需要一些返工来包括所有函数和触发器。
答案 2 :(得分:0)
我认为这只是一个阻止你的语法问题,尝试在数据库名称周围使用单引号而不是%%:
SELECT COUNT(*) as Qty FROM LinkedServer.master.sys.databases where name like 'mydatabase'
此处已经回答了选择链接服务器的正确格式:
答案 3 :(得分:0)
我不确定远程master
数据库是否始终可以通过链接服务器使用。
我将使用以下TRY CATCH探针
BEGIN TRY
EXEC ('SELECT TOP 1 1 FROM MyLinkedServer.MyTestDb.INFORMATION_SCHEMA.TABLES')
END TRY
BEGIN CATCH
PRINT 'No MyTestDB on MyLinkedServer'
END CATCH