Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SqlDataSourceEnumerator.Instance.GetDataSources() не намира локален екземпляр на SQL сървър 2008

Прескачате сървъри, които не са наименувани екземпляри. Променете кода си:

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;
}

Моля, обърнете внимание:SqlDataSourceEnumerator.Instance.GetDataSources() има недостатъци:

  • Подлежи на правилата на защитната стена (блокиран TCP/IP 1433 и UDP 1434)
  • Не намира SQL сървъри, ако SQL браузърът е изключен
  • Не намира SQL сървъри, ако са скрити
  • Съдържанието на списъка не е гарантирано, че може да се повтаря (поради изтичане на времето). Всъщност последващо обаждане е доста вероятно да даде различен списък в зависимост от мрежовия вход/изход, производителността на сървъра, броя на сървърите в мрежата и други зависещи от времето ограничения

Няколко източника казват, че трябва да направите 2 извиквания към SqlDataSourceEnumerator.Instance.GetDataSources() ...

Препратки:

  • SqlDataSourceEnumerator.Instance; не връща всички екземпляри
  • EnumAvailableSqlServers или SqlDataSourceEnumerator – Неправилен списък с налични бази данни
  • Изброяване на SQL сървъри
  • Програмно изброяване на SQL сървъри


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете началната и крайната дата на седмицата от номера на седмицата

  2. Използване на пълнотекстово търсене в SQL Server 2008 в множество таблици, колони

  3. Как да импортирам файл на Excel в SQL Server?

  4. Типове курсори на SQL Server - KEYSET Курсор | Урок за SQL Server / Урок за TSQL

  5. Как мога да заключа един ред в SQL Server по начин, подобен на SELECT FOR UPDATE WAIT на Oracle?