如何确定链接服务器上是否存在数据库?

时间:2011-04-27 15:46:40

标签: sql-server-2005 sql-server-2008

我知道你可以这样做:

select count(*) as Qty from sys.databases where name like '%mydatabase%'

但你怎么能这样做:

select count(*) as Qty from linkedServer.sys.databases where name like '%mydatabases%'

我想我可以在链接服务器上放置一个存储过程并执行第一个选择,但有没有办法查询链接服务器它所拥有的数据库?

4 个答案:

答案 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'

此处已经回答了选择链接服务器的正确格式:

SQL Server Linked Server Example Query

答案 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