2012-01-18 15 views
1

ローカルSQLサーバインスタンスを取得する方法が全くわかりません。私が受け取るのはサーバー名だけです。ローカルSQLサーバのインスタンス名を取得

DataTable availableServers = SmoApplication.EnumAvailableSqlServers([All of the 3 inputs]); 
foreach (DataRow serverRow in availableServers.Rows) 
{ 
    // foreach row list "Name", "Server", "Instance" etc... 
} 

SqlDataSourceEnumerator sdse = SqlDataSourceEnumerator.Instance; 
DataTable table = sdse.GetDataSources(); 
foreach (DataRow row in table.Rows) 
{ 
    // foreach row list "ServerName", "InstanceName", "IsClustered" and "Version" 
} 

ManagedComputer mc = new ManagedComputer(); 
ServerInstance instance = mc.ServerInstances; 

私はローカルのSQL Serverインスタンス名を取得することができますいくつかの他の方法があります:ここで私が試してみました異なるアプローチがありますか?

私は、管理スタジオのSQLサーバーに接続するときに、接続ダイアログにローカルインスタンスを。\ sqlexpressまたは(local)\ sqlexpressとして表示することを知っています。また、InstallShieldにデータベースインストールを展開するときに、InstallShieldの「locate sqlserver」-dialogがローカルホストの正しいインスタンスを取得します。彼らは何を正しくしていますか?

答えて

1

あなただけの私が使用している技術見せたかったので、私はこれらの行を左ManagedComputer

using Microsoft.SqlServer.Management.Smo.Wmi; 
.... 

ManagedComputer mc = new ManagedComputer(); 

foreach (ServerInstance si in mc.ServerInstances) 
{ 
    Console.WriteLine("The installed instance name is " + si.Name); 
} 
+0

それは私が私の質問に表示された3回目の試みでした。名前は空です。 – humcfc

+1

設定に問題がある可能性があります。インスタンスが同じマシンにあると仮定します。 [ProviderArchitecture](http://social.msdn.microsoft.com/Forums/en-US/sqlsmoanddmo/thread/32201c6b-a67d-4a40-9504-cc073ee2a20c/)を設定しようとしましたか? mc.ConnectionSettings.ProviderArchitecture = ProviderArchitecture.XXX –

+0

ありがとうございました! ProviderArchitecture.Use64bitを設定しなければならなかった – humcfc

0

投稿した2番目のコードサンプルで既に半ばに達しました。 DataTableが返された4列(列のコレクション)

ServerNameの のInstanceName IsClustered バージョン

を持つことになりますが、このように、DataTableの値を取得するには、このコレクションを列挙することができます。

foreach (System.Data.DataRow row in table.Rows) 
{ 
    foreach (System.Data.DataColumn col in table.Columns) 
    { 
    Console.WriteLine("{0} = {1}", col.ColumnName, row[col]); 
    }  
} 
+0

を使用することができます。問題は何とかInstanceNameが空であることです。 – humcfc

+0

ファイアウォールとSQL Server Browserサービスを確認します。 [this](http://blogs.msdn.com/b/sql_protocols/archive/2005/09/24/473502.aspx)および[this](http://blogs.msdn.com/b/sql_protocols/)を参照してください。アーカイブ/ 2005/09/23/473339.aspx) – IUnknown

+0

ファイアウォールを私が望むように変更することはできません。代わりにManagedComputerで解決しました。とにかくお返事ありがとうございます。 – humcfc

関連する問題