Получить имя экземпляра локального сервера SQL - PullRequest
2 голосов
/ 18 января 2012

Я совершенно не понимаю, как получить экземпляр локального сервера 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?

Я знаю, что при подключении к серверу SQL в Management Studio диалоговое окно подключения отображает мой локальный экземпляр как. \ Sqlexpress или (local) \ sqlexpress. Также при развертывании установки базы данных в InstallShield, InstallShield "locate sqlserver" -dialog получает правильный экземпляр для моего локального хоста. Что они делают правильно?

Ответы [ 3 ]

2 голосов
/ 18 января 2012

Вы можете использовать Управляемый компьютер

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 голосов
/ 07 ноября 2018
  1. Найдите имя вашего компьютера в cmd, введя "hostname".
  2. В окне «Выполнить» введите «Services.msc», чтобы получить доступ к службам Windows.
  3. Поиск в службах, которые служба работает с "sql server (...)", "sql server agent (...)" и "sql server browser (...)" в ваших службах, если они не работает, затем щелкните правой кнопкой мыши по каждому из них и запустите их.
  4. В списке служб проверьте имя, написанное в скобках "sql server (...)" для ex. «SQL Server (XYZ)», поэтому имя экземпляра «XYZ»
  5. Перейдите в диспетчер конфигурации сервера sql> Настройка сети сервера sql> Протоколы для ..> TCP / IP (включите его)
  6. После этого теперь снова зайдите в ваши службы и перезапустите службы сервера sql.
  7. Теперь, если имя вашего компьютера - «ABC», а экземпляр - «XYZ», попробуйте подключиться к «ABC \ XYZ» с помощью проверки подлинности Windows [если вы не настроили проверку подлинности sql]
  8. Если у вас возникнут какие-либо проблемы, пожалуйста, отправьте их обратно, я предоставлю более подробную версию
0 голосов
/ 18 января 2012

Вы уже достигли половины пути со вторым примером кода, который вы разместили. Возвращенный 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]);
  }     
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...