我知道这句话告诉我“MyDatabase”数据库已在线:
select databasepropertyex('MyDatabase', 'Status')
如果我需要从另一台服务器检查数据库怎么办?假设我已经有一个链接服务器,调用应该是这样的:
select databasepropertyex('[192.168.111.33].MyOtherDatabase', 'Status')
但是不起作用,有人知道如何检查吗? 谢谢你。
可能必须作为传递查询运行,例如
OPENQUERY ( [192.168.111.33] ,'select databasepropertyex(MuOtherDatabase, ''Status'')' )
(假设您已经设置的链接服务器名为 [192.168.111.33],如上面所暗示的 - 似乎是使用 IP 的可疑命名约定?)
通常,您只是尝试连接到数据库,如果连接失败则捕获错误。但根据您的网络设置和安全性,“可能”无法直接连接到数据库服务器。 具体如何操作取决于您使用的语言和提供商。
一些连接字符串的在线示例>要查看 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
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}"