簡體   English   中英

如何通過連接獲取SQL Server的IP地址或DNS名稱?

[英]How get IP address or DNS name of SQL Server by connection?

我想知道我的應用何時在SQL Server上本地運行。 備份和還原是必需的。

我從Connection.DataSource獲取服務器的IP地址(DNS名稱)。 然后我檢查列表中是否有此名稱:

localNames = new List<string>() 
{ 
    ".", "localhost", "(local)", "127.0.0.1", Environment.MachineName.ToLower(),
};
localNames.AddRange(GetIP().Select(a=>a.ToString()));

if (localNames.Contains(GetServer(connection.DataSource).ToLower()))
{
    //do something
}

方法:

IEnumerable<IPAddress> GetIP()
{
    foreach (var ip in Dns.GetHostEntry(Dns.GetHostName()).AddressList.Where(ip => ip.AddressFamily == AddressFamily.InterNetwork))
    {
        yield return ip;
    }
}

string GetServer(string dataSource)
{
    return dataSource.Split('\\').First().Split(',').First().Split(':').Last();
}

數據源可以是:

  • serverName1
  • serverName1,1433 \\ SQLEXPRESS
  • 192.168.0.1
  • tcp:192.168.0.1,1433 \\ SQLEXPRESS
  • ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM