sql >> Databáze >  >> RDS >> Sqlserver

SqlDataSourceEnumerator.Instance.GetDataSources() nenalezne místní instanci SQL serveru 2008

Vynecháváte servery, které nejsou pojmenované instance. Upravte svůj kód:

public class SqlServerInstance
{
    public string ServerInstance { get; set; }
    public string Version { get; set; } 
}

public static List<SqlServerInstance> LocateSqlInstances()
{
    List<SqlServerInstance> results = new List<SqlServerInstance>();

    using (DataTable sqlSources = SqlDataSourceEnumerator.Instance.GetDataSources())
    {
        foreach (DataRow source in sqlSources.Rows)
        {
            string servername;
            string instancename = source["InstanceName"].ToString();

            if (!string.IsNullOrEmpty(instancename))
            {
                servername =  source["ServerName"].ToString() + '\\' + instancename;
            }
            else
            {
                servername = source["ServerName"].ToString();
            }

            results.Add(new SqlServerInstance (){ ServerInstance = servername, Version = source["Version"].ToString() });
        }
    }

    return results;
}

Poznámka:SqlDataSourceEnumerator.Instance.GetDataSources() má nevýhody:

  • Podléhá pravidlům brány firewall (blokované TCP/IP 1433 a UDP 1434)
  • Nenalezne servery SQL, pokud je prohlížeč SQL vypnutý
  • Nenalezne servery SQL, pokud jsou skryté
  • Není zaručena opakovatelnost obsahu seznamu (kvůli vypršení časového limitu). Ve skutečnosti je velmi pravděpodobné, že následné volání poskytne jiný seznam v závislosti na I/O sítě, výkonu serveru, počtu serverů v síti a dalších časově závislých omezeních

Několik zdrojů uvádí, že musíte provést 2 volání SqlDataSourceEnumerator.Instance.GetDataSources() ...

Odkazy:

  • SqlDataSourceEnumerator.Instance; nevrací všechny instance
  • EnumAvailableSqlServers nebo SqlDataSourceEnumerator – nesprávný seznam dostupných databází
  • Výčet serverů SQL
  • Programový výpis serverů SQL


  1. Jak povolit pomalé protokoly dotazů v AWS RDS MySQL

  2. OFFSET vs. ROW_NUMBER()

  3. Import PostgreSQL CSV z příkazového řádku

  4. SQL:odstraňte všechna data ze všech dostupných tabulek