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
$server.ConnectionContext.Connect()
サーバーに接続できない場合はエラーになります。
私の知る限り、プロパティを取得しようとする(またはサーバー接続と明示的に接続する)まで、SQLサーバーへの接続をテストすることはできません。$conn = new-object Microsoft.SqlServer.Management.Common.ServerConnection
現在はテストできませんが、接続に失敗するとエラーになると思います。そうでない場合は、プロパティを取得しようとするとすべきです。