如何通过连接获取SQL Server的IP地址或DNS名称?

时间:2015-04-04 11:25:46

标签: c# sql-server datasource sqlconnection

我想知道我的应用程序何时在SQL Server上本地运行。这是备份和恢复的必要条件。

1 个答案:

答案 0 :(得分:2)

我从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();
}

DataSource可以是:

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