如何通过连接获取 SQL 服务器的 IP 地址或 DNS 名称?
How get IP address or DNS name of SQL Server by connection?
我想知道我的应用程序何时 运行 在本地 SQL 服务器上。备份还原必备
我从 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
- ...
我想知道我的应用程序何时 运行 在本地 SQL 服务器上。备份还原必备
我从 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
- ...