ローカルマシンでSQLサーバーインスタンスを見つけるためにこれを書きました:
using System;
using System.Data;
using Microsoft.SqlServer.Management.Smo;
namespace Application3
{
class Program
{
static void Main(string[] args)
{
string srvname = string.Empty; string srvnames = null;
DataTable dt = SmoApplication.EnumAvailableSqlServers(true);
Console.WriteLine("------------->" + dt.Rows.Count);
foreach (DataRow dr in dt.Rows)
{
try{
Console.WriteLine("-->Instance " + dr["name"]);
Server srv = new Server((string)dr["name"]);
foreach (Database db in srv.Databases)
Console.WriteLine(db.Name);
}catch(Exception e)
{
Console.writeLine(e.toString());
}
}
}
}
ローカル マシンに 3 つのインスタンスがあります
- rk2k3-vm-sr (sql2008 インスタンス)
- rk2k3-vm-sr\sql2k8express (sql2k8 インスタンス)
- rk2k3-vm-sr\sqlexpress (sql2k5 インスタンス)
しかし、2 と 3 しか表示されていません。1 は表示されません。また、サーバー オブジェクトを使用して接続すると、sql2k8express で失敗します。
これが出力です....
-->インスタンス RK2K3-VM-SR\SQLEXPRESS
マスター
モデル
msdb
tempdb
-->インスタンス RK2K3-VM-SR\SQL2K8EXPRESS
Microsoft.SqlServer.Management.Common.ConnectionFailureException: サーバー RK2K3-VM-SR\SQL2K8EXPRESS への接続に失敗しました。---> Microsoft.SqlServer.Management.Com mon.ConnectionFailureException: この SQL Server バージョン (10.0) はサポートされていません。Microsoft.SqlServer.Management.Common.ConnectionManager.CheckServerVersion (ServerVersion バージョン) で Microsoft.SqlServer.Management.Common.ConnectionManager.InternalConnect (Wi ndowsIdentity impersonatedIdentity) で Microsoft.SqlServer.Management.Common.ConnectionManager.Connect() ---内部例外スタック トレースの終了 --- Microsoft.SqlServer.Management.Common.ConnectionManager.Connect() で Microsoft.SqlServer.Management.Common.ConnectionManager.PoolConnect() で Microsoft.SqlServer.Management.Common.ConnectionManager.get_ServerVersion( ) マイクロソフトで。
どうすればこれを修正できますか? 私のシステムのファイアウォールは無効になっており、すべての SQL サービスが実行されています。