c # - Hvordan kan jeg programmatisk oversætte et MSSQL-serveralias til en IP-adresse ved hjælp af .NET?

Indlæg af Hanne Mølgaard Plasc

Problem



Windows standardinstallation leveres med MSSQL-klienten har et cliconfg-program, der bruges til at indstille aliaser til serverens IP-adresser og -porte. Nogle gange bruger vi i vores ConnectionStrings nogle af disse aliaser i stedet for IP-adresse, port. Hvordan kan jeg oversætte dette alias programatisk til en adresse ved hjælp af .NET?


Opdatering: . NET + Windows gør automatisk denne oversættelse, når vi bruger ConnectionString, men jeg ved ikke, om resultatet af oversættelsen (IP-adresse) er skrevet i enhver offentlig ejendom, hvor vi kan læse det .


Opdatering: Jeg opdagede, at cliconfg gemmer aliaserne i Windows-registreringsdatabasen. Jeg spekulerer på, om Windows-registreringsdatabasen er tilgængelig fra .NET


32bit HKEY\_LOCAL\_MACHINESOFTWAREMicrosoftMSSQLServerClientConnectTo

64bit HKEY\_LOCAL\_MACHINESOFTWAREWow6432NodeMicrosoftMSSQLServerClientConnectTo

Bedste reference


Jeg fandt følgende løsning til 32 bit versioner af Windows:


using Microsoft.Win32;

static void Main(string[] args)
{
        var Aliases = Registry.LocalMachine.OpenSubKey(
            @"SOFTWAREMicrosoftMSSQLServerClientConnectTo");
        Aliases.GetValue("Alias");
}

Andre referencer 1


Så længe du ikke har brug for havnen, er det ret trivielt at få IP-adressen ved hjælp af System.Net.Dns-klassen:


IPAddress[] ips = Dns.GetHostAddresses("myHostName")