检查外部数据库是否在线

问题描述 投票:0回答:3

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

select databasepropertyex('MyDatabase', 'Status')

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

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

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

sql sql-server sql-server-2008-r2 windows-server-2008
3个回答
0
投票

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

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

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


0
投票

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

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

要查看 SQL Server 2008 数据库是否可以接受连接,请查看 Collation 属性。 我知道这听起来有多奇怪,但这就是

记录的方式

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

例如,许多数据库服务器设置为拒绝来自除
一个

之外的所有 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



0
投票

Import-Module SQLPS -DisableNameChecking $serverName = "localhost\SQL2017" $DatabaseName = "your_database" $SQLServer = New-Object ('Microsoft.SqlServer.Management.Smo.Server') $ServerName $status = $SQLServer.Databases[$DatabaseName].IsAccessible Write-Host "Database ${DatabaseName} online status: ${status}"

	
© www.soinside.com 2019 - 2024. All rights reserved.