web-dev-qa-db-ja.com

SQL ServerSmo.Serverオブジェクトが有効であることを確認するPowershellコマンド

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

2
8kb
$server.ConnectionContext.Connect()

サーバーに接続できない場合はエラーになります。

4
Chad Miller

私の知る限り、プロパティを取得しようとする(またはサーバー接続と明示的に接続する)まで、SQLサーバーへの接続をテストすることはできません。$conn = new-object Microsoft.SqlServer.Management.Common.ServerConnection

現在はテストできませんが、接続に失敗するとエラーになると思います。そうでない場合は、プロパティを取得しようとするとすべきです。

1
Jim B