0

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

select databasepropertyex('MyDatabase', 'Status')

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

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

但它不起作用,有人知道如何检查吗?谢谢你。

4

2 回答 2

0

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

一些连接字符串的在线示例>

要查看 SQL Server 2008 数据库是否可以接受连接,请查看 Collat​​ion 属性。我知道这听起来有多奇怪,但这是有记录的方式

当数据库正在打开且尚未恢复时,可能会返回 ONLINE 状态。要确定数据库何时可以接受连接,请查询 DATABASEPROPERTYEX 的 Collat​​ion 属性。

例如,许多数据库服务器设置为拒绝来自除一个之外的所有 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
于 2013-01-30T16:25:17.247 回答
0

可能必须作为直通查询运行,例如

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

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

于 2013-01-30T16:31:11.913 回答