マシンにインストールされている SQL Server のすべてのインスタンスを返すはずのコードがあります。次のようになります。
DataTable dtLocalServers = SmoApplication.EnumAvailableSqlServers(true);
foreach (DataRow dServer in dtLocalServers.Rows)
{
Console.WriteLine(dServer.ToString());
}
動作し、コンパイルされ、実行されます。ただし、結果のデータテーブルはあまり役に立ちません。次のようになります。
Name | Server | Instance | IsClustered | Version | IsLocal
IAN-PC | IAN-PC | | True | | True
問題は、これは結果を返しますが、サーバーに関する情報が得られないことです。特に、バージョン (SQL Server 2008 Express R2 または SQL Server Express 2012) を取得しようとしていますが、これは「バージョン」フィールドにあるはずです。このテストのためにローカルで 2 つのコピーを実行していることは事実です。
より良い結果を得るために他にできることはありますか?
編集: IAN-PC は私のコンピューターの名前です。私のコンピューターには、IANSQLEXP (SQL Server 2008 Express R2) と SQLEXPRESS (SQL Server Express 2012) の 2 つの SQL Server インスタンスが実行されています。SQL Server 構成マネージャーには、実行されていない 2 つのエージェントと、実行されていない SQL Server ブラウザーもあります。