Глупый вопрос ну все же, пытаюсь в приложении подключиться к экземпляру SQL Express
"Data Source=.\\SQLEXPRESS; Initial Catalog=SiteASAM; Integrated Security=True;";
работает, переношу ПО на другой компьютер и пытаюсь подключиться к похожему экземпляру MSSQL Express уже не работает, меняю на эту строку снова работает
"Data Source=localhost; Initial Catalog=SiteASAM; Integrated Security=True;";
возвращаюсь обратно на первый ПК с этой строкой, не работает, меняю обратно на
"Data Source=.\\SQLEXPRESS; Initial Catalog=SiteASAM; Integrated Security=True;";
работает, ЕСТЬ УНИВЕРСАЛЬНЫЙ СПОСОБ ПОДКЛЮЧЕНИЯ К ЭКЗЕМПЛЯРУ SQL Server Express
Как вариант, использовать WMI. Каждый экземпляр имеет свою службу с именем вида MSSQL$<instance>
для именованных экземпляров или MSSQLSERVER
для экземпляра по умолчанию (Документировано здесь: Использование службы SQL Server). Это приводит нас к такому коду для получения имени экземпляра:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Management;
//Reference: System.Management
public static IEnumerable<string> GetSqlServers()
{
var mos = new ManagementObjectSearcher(
"SELECT Name FROM Win32_Service WHERE Name LIKE 'MSSQL$%' OR Name='MSSQLSERVER'");
using (mos)
{
var moc = mos.Get();
using (moc)
{
foreach (ManagementObject mo in moc)
{
string res = mo.Properties["Name"].Value as string;
if (res == null) continue;
int index = res.IndexOf('$');
if (index < 0) yield return "";
else yield return res.Substring(index + 1);
}
}
}
}
//...
string DataSource = ".\\" + GetSqlServers().First();
Замечал, что при установке MS SQL Server'а имя экземпляра различается на разных машинах. В моем случае на одной это было "SQLEXPRESS.1"
Подозреваю, что имена всех экземпляров можно найти в реестре и вывести при старте программы окно выбора. Если экземпляр один, то можно сразу использовать его.
В какой конкретно ветке реестра - не знаю. Вероятнее всего внутри HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
. Можно поискать строку SQLEXPRESS или изучить документацию.
UPD.
Несколько способов перечислены на английском SO: https://stackoverflow.com/questions/141154/how-can-i-determine-installed-sql-server-instances-and-their-versions
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я хочу считать содержимое файла с помощью WebClient по прямой ссылке на сайте, но при этом получаю в ответ это:
Есть программа, которая по нажатию кнопки генерирует значения в файлПо нажатию другой кнопки считывает их из файла и выводит в качестве разноцветных...
Приложение - WinFormsВ трее есть иконка - использовал NotinfyIcon, но вот тут я столкнулся с проблемой качества иконок