Согласно MSDN имя экземпляра по умолчанию: MSSQLSERVER
:
Имя экземпляра по умолчанию: MSSQLSERVER; он не требует от клиента указывать имя экземпляра для установления соединения.
Поэтому, чтобы определить, является ли экземпляр значением по умолчанию, необходимо проверить, является ли имя экземпляра MSSQLSERVER
.
Вот изменения, которые можно внести в ваш код, чтобы определить, является ли экземпляр по умолчанию:
private void GetDataSources2()
{
string ServerName = Environment.MachineName;
RegistryView registryView = Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32;
using (RegistryKey hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, registryView))
{
RegistryKey instanceKey = hklm.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL", false);
if (instanceKey != null)
{
foreach (var instanceName in instanceKey.GetValueNames())
{
if (instanceName == "MSSQLSERVER")
// To reference default instance we should use name "ServerName".
Console.WriteLine(ServerName);
else
// To reference non default instances we should use name "ServerName\InstanceName".
Console.WriteLine(ServerName + "\\" + instanceName);
}
}
}
}