我在 PowerShell 脚本中有以下代码:
$sql_instance = "SQLEXPRESS"
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO')
$server = New-Object ('Microsoft.SqlServer.Management.Smo.Server') $sql_instance
Write-Host $server.InstanceName
什么也没有返回。经过大约 20 分钟的研究,我意识到在创建 $server 对象时忘记包含计算机名称。
代码应该是:
$sql_instance = "MYSERVER\SQLEXPRESS"
我的问题是:如何验证创建的服务器对象实际上代表有效的 SQL Server 实例?
我想象这样的事情:If $server.IsNotValid -eq "True" Then Throw Exception
答案1
$server.ConnectionContext.Connect()
如果您无法连接到服务器,将会出错。
答案2
据我所知,您无法测试与 SQL 服务器的连接,直到您尝试检索属性(或明确与服务器连接建立连接)$conn = new-object Microsoft.SqlServer.Management.Common.ServerConnection
我现在无法测试,但我相信如果连接调用失败,您将收到错误。如果没有,您应该尝试检索任何属性。