$server.ConnectionContext.Connect()
será erro se você não conseguir se conectar ao servidor.
Eu tinha o seguinte código em um script do 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
E nada foi retornado. Após cerca de 20 minutos de pesquisa, percebi que esqueci de incluir o nome do computador ao criar o objeto $ server.
O código deveria ter sido:
$sql_instance = "MYSERVER\SQLEXPRESS"
A minha pergunta é: como posso verificar se o objeto do servidor criado está realmente representando uma instância válida do SQL Server?
Eu imagino algo como: If $server.IsNotValid -eq "True" Then Throw Exception
Até onde eu sei, você não pode testar uma conexão com o SQL Server até tentar recuperar uma propriedade (ou fazer explicitamente uma conexão com a conexão do servidor) $conn = new-object Microsoft.SqlServer.Management.Common.ServerConnection
Não posso testá-lo agora, mas acredito que você receberá um erro se a chamada de conexão falhar. Caso contrário, você deve tentar recuperar alguma propriedade.