sql >> データベース >  >> RDS >> Sqlserver

SqlDataSourceEnumerator.Instance.GetDataSources()は、ローカルSQLServer2008インスタンスを検索しません

    名前のないインスタンスのサーバーをスキップしています。コードを変更します:

    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 / IP1433およびUDP1434)に従う
    • SQLブラウザがオフの場合にSQLServerが見つかりません
    • 非表示の場合はSQLServerが見つかりません
    • リストの内容は、(タイムアウトのために)再現可能であることが保証されていません。実際、後続の呼び出しでは、ネットワークI / O、サーバーパフォーマンス、ネットワーク上のサーバーの数、およびその他の時間依存の制約に応じて、異なるリストが表示される可能性が非常に高くなります。

    いくつかの情報源によると、SqlDataSourceEnumerator.Instance.GetDataSources()を2回呼び出す必要があります ...

    参照:

    • SqlDataSourceEnumerator.Instance;すべてのインスタンスを返すわけではありません
    • EnumAvailableSqlServersまたはSqlDataSourceEnumerator-使用可能なデータベースのリストが正しくありません
    • SQLサーバーの列挙
    • SQLサーバーをプログラムで一覧表示する


    1. SQL ServerでのDATENAME()の例

    2. 致命的なエラー:C:\ xampp \ htdocsにある未定義の関数sqlsrv_connect()を呼び出します

    3. SQLServerデータベースにID列を一覧表示するときにテーブルとスキーマを含める

    4. 4データベース管理者向けのすばらしいSQLServer監視リソース