【问题标题】:Check if external database is online检查外部数据库是否在线
【发布时间】:2013-01-30 15:55:03
【问题描述】:

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

select databasepropertyex('MyDatabase', 'Status')

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

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

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

【问题讨论】:

  • 哪个平台?哪个数据库服务器?哪个环境?
  • 对不起 SQL Server 2008R2 和 Windows 2008
  • “我知道这句话告诉我‘MyDatabase’数据库在线” 不完全是。该 SQL 语句尝试选择数据库的特定属性。该语句可能因与数据库的联机或脱机状态无关的原因而失败。

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    Some online examples of connection strings>

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

    打开数据库时可能会返回 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
    

    【讨论】:

    • 我只是想从存储过程中的 SQL Server 执行此操作
    猜你喜欢
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 2021-11-30
    • 2014-07-08
    • 2019-06-24
    • 2014-04-03
    • 1970-01-01
    相关资源
    最近更新 更多