1

誰かがc#とSMOまたは任意のAPIを使用してリモートSqlserverインスタンスを取得する方法を教えてもらえますか?

リモートサーバー名が「RemoteMC」で、SQLサーバーのインスタンスが「RemoteMc」と「RemoteMC\sqlexpress」の2つあります。

私は次のようなコードでインスタンスを取得しようとします:

Server srv=new Server("RemoteMC");
DataTable dt=SmoApplication.EnumAvailableSqlServer(true);

ただし、「Host\sqlexpress」を返します

何が悪かったのかわかりません。結果を次のように戻すにはどうすればよいですか。

RemoteMC
RemoteMC \ sqlexpress;

4

3 に答える 3

6

方法はSmoApplication.EnumAvailableSqlServersあなたが探しているものです。string3つのオーバーロードがあり、そのうちの1つはサーバー名のパラメーターを取ります。

行に、、、などのDataTableフィールドがあるaを返します。VersionnameIsLocal

using Microsoft.SqlServer.Management.Smo;SMOライブラリへの参照を追加する必要があり、C#ファイルの先頭に「」を付けることをお勧めします。

SQL SMOの概要については、http: //www.sqldbatips.com/showarticle.asp?ID=34を参照してください。

編集:この特定の問題に対処するためのいくつかのコード(私はこれをコンパイルまたは実行していません):

編集:。行をforeachに追加して、コンパイルできるようにします。

DataTable dataTable = SmoApplication.EnumAvailableSqlServers(false);

foreach (DataRow dataRow in dataTable.Rows)
{
    if ((dataRow["Server"] as string) == "MyServerName")
        Console.WriteLine(dataRow["Instance"] as string);
}
于 2009-07-08T09:29:14.310 に答える
1

組み込みの方法を使用します。

System.Data.Sql.SqlDataSourceEnumerator
于 2009-07-08T13:43:39.997 に答える
0

これを行う1つの方法は、ローカルマシンの下のレジストリエントリ "" Software \ Microsoft \ Microsoft SQL Server \ Instance Names \ SQL \ "を読み取ることです。ソリューションでレジストリを読み取ることは許可されていますか?

于 2009-07-08T09:27:37.323 に答える