检查外部数据库是否在线

时间:2013-01-30 15:55:04

标签: sql sql-server sql-server-2008-r2 windows-server-2008

我知道这句话告诉我'MyDatabase'数据库在线:

select databasepropertyex('MyDatabase', 'Status')

如果我需要从另一台服务器检查数据库怎么办?假设我已经有一个链接服务器,调用应该是这样的:

select databasepropertyex('[192.168.111.33].MyOtherDatabase', 'Status')

但它不起作用,任何人都知道如何检查这个? 谢谢。

2 个答案:

答案 0 :(得分:0)

通常,您只是尝试连接到数据库,并在连接失败时捕获错误。但是,根据您的网络设置和安全性,可能无法直接连接到数据库服务器。具体如何,取决于您使用的语言和提供程序。

Some online examples of connection strings>

要查看SQL Server 2008数据库是否可以接受连接,请查看Collat​​ion属性。我知道听起来有多奇怪,但那是the documented way

  

打开数据库时可能会返回ONLINE状态   并且尚未恢复。识别数据库何时可以接受   连接,查询DATABASEPROPERTYEX的Collat​​ion属性。

例如,许多数据库服务器设置为拒绝来自除 one 之外的所有IP地址的连接。这在基于Web的设置中尤为常见;这是一项基本的安全措施。在这种情况下,这样的连接(紧接在下面)将起作用。应用程序服务器或Web服务器上的代码尝试连接到数据库服务器,如果失败则返回错误。

Your server      -->  Application server   -->  Database server
or workstation        or web server

但是这样的连接不会,因为数据库服务器被配置为仅接受来自应用程序服务器或Web服务器的连接。

Your server      ---------------------------->  Database server
or workstation        
                      Application server
                      or web server

答案 1 :(得分:0)

可能必须作为传递查询运行,例如

OPENQUERY ( [192.168.111.33] ,'select databasepropertyex(MuOtherDatabase, ''Status'')' )

(假设您已设置的链接服务器被称为[192.168.111.33],如上所述 - 似乎是使用IP的可疑命名约定?)