トラブルシューティングの目的で、SQL Serverに接続できない可能性のあるアプリケーションとは関係なく、クライアントがSQL Serverインスタンスに接続できるかどうかを確認できるようにしたいと思います。
デフォルトのWindowsシステムツールを使用してこれを行う簡単な方法(つまり、サードパーティのソフトウェアをインストールする必要がない)はありますか?おそらくスクリプトまたはネットワークアプリケーションを使用していますか?
サーバーがTCP/IPを使用している場合、簡単な方法は、SQL ServerポートにTelnetで接続しているかどうかを確認することです。デフォルトでは、これはポート1433なので、これは機能するはずです。
telnet servername 1433
それはおそらくほとんどの場合適切でしょう。
別のポートまたは動的ポート(名前付きインスタンスで一般的)を使用している場合は、現在リッスンしているポートを判別する必要があります。 SQL Server構成マネージャーをチェックして、それが特定のポートか動的ポートかを確認します。動的ポートを使用している場合は、サーバーに複数のインスタンスがない限り、netstat -abn
は、おそらくそれが使用しているものを見つける最も簡単な方法です。それ以外の場合は、WindowsイベントログまたはSQL Serverエラーログを調べて、インスタンスで使用されているポートを示すメッセージを探します。
SQL Serverが名前付きパイプを使用している場合、マシン上の共有にアクセスできれば、私は信じるので、十分なネットワーク接続が確立されています。この記事では、さらに進んでIPC $共有への接続を試すことができると説明しています。
http://msdn.Microsoft.com/en-us/library/aa275787%28v=sql.80%29.aspx
Net Use \\servername\IPC$
これはSQL Server 2000用に書かれていますが、この側面が大きく変わったとは思いません。
Microsoft.SqlServer.Smo
ローカルマシン上のGACでのアセンブリ。これはPowerShellで簡単に実行できます。
[Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.Smo') | Out-Null
$server = New-Object Microsoft.SqlServer.Management.Smo.Server("YourSqlServerName")
# do a simple operation to see if you can get data
Try {
$server.Version | Out-Null
Write-Host "SQL Server connection successful!!!"
}
Catch [System.Exception] {
Write-Host "Error connecting to SQL Server..."
}