Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SqlDataSourceEnumerator.Instance.GetDataSources () không định vị phiên bản SQL server 2008 cục bộ

Bạn đang bỏ qua các máy chủ không phải là phiên bản được đặt tên. Sửa đổi mã của bạn:

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

Xin lưu ý:SqlDataSourceEnumerator.Instance.GetDataSources() có nhược điểm:

  • Tuân theo quy tắc tường lửa (Chặn TCP / IP 1433 và UDP 1434)
  • Không tìm thấy Máy chủ SQL nếu Trình duyệt SQL tắt
  • Không tìm thấy Máy chủ SQL nếu chúng bị ẩn
  • Liệt kê nội dung không được đảm bảo có thể lặp lại (do hết thời gian chờ). Trên thực tế, một cuộc gọi tiếp theo có khả năng đưa ra một danh sách khác tùy thuộc vào I / O mạng, hiệu suất máy chủ, số lượng máy chủ trên mạng và các ràng buộc phụ thuộc vào thời gian khác

Một số nguồn cho biết bạn phải thực hiện 2 cuộc gọi đến SqlDataSourceEnumerator.Instance.GetDataSources() ...

Giới thiệu:

  • SqlDataSourceEnumerator.Instance; không trả lại tất cả các phiên bản
  • EnumAvailableSqlServers hoặc SqlDataSourceEnumerator - Danh sách các Cơ sở dữ liệu có sẵn không chính xác
  • Liệt kê Máy chủ SQL
  • Máy chủ SQL lập danh sách theo chương trình


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có thể chỉ định điều kiện trong Count () không?

  2. Làm thế nào để tránh lỗi chia cho 0 trong SQL?

  3. Kiểm tra xem một đối tượng là một bảng, dạng xem hoặc thủ tục được lưu trữ trong SQL Server bằng cách sử dụng hàm OBJECTPROPERTY ()

  4. Thêm nhiều biến được tham số hóa vào cơ sở dữ liệu trong c #

  5. Các tính năng mới của SQL Server 2019