locked
FAQs: 如何检测数据库服务器存在与否? RRS feed

  • 问题

  • 为了帮助大家更好地学习 LINQ to SQL 技术,微软论坛技术支持团队编辑了一些列的 LINQ to SQL 常见问题及解答" 精华帖。

    本帖的主题是:如何检测数据库服务器存在与否?

    如果您觉得这个帖子对您的学习、工作有所帮助,请再把这个帖子分享给你的同学、同事和朋友。

    如果您想阅读更多的 "LINQ to SQL 常见问题及解答",请打开索引页面:

    http://social.msdn.microsoft.com/Forums/zh-CN/adonetzhchs/thread/f968dfe5-f9e3-4ed0-9c7f-cf26837ea828


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    2011年5月3日 9:13

答案

  • 我们需要使用,NET框架工厂类对有SQL Browser服务运行的SQL Server内联网的所有实例   进行调查。也就是说如果服务器管理员想要服务器对于内联网是可见的,那么他们就要启用协议和SQL Browser。工厂类可以请求每个浏览器的所有实例,并报告其状态(运行,暂停,停止)。

     

    DbProviderFactories.GetFactory(), http://msdn.microsoft.com/en-us/library/s90hx22e.aspx

    DbDataSourceEnumerator. GetDataSources (), http://msdn.microsoft.com/en-us/library/system.data.common.dbdatasourceenumerator.getdatasources.aspx

    代码像是这样:

    public void ShowInstances(DataRow drProvider)

            {

                try

                {

                    DbProviderFactory factory = DbProviderFactories.GetFactory(drProvider);

                    DbDataSourceEnumerator dsE = factory.CreateDataSourceEnumerator();

                    if (dsE == null)

                    {

                        dgv1.DataSource = null;

                        MessageBox.Show("No instances visible for this provider(" + drProvider[0].ToString() + ")");

                    }

                    else

                    {

                        dgv1.DataSource = dsE.GetDataSources();

                    }

                }

                catch (Exception ex)

                {

                    MessageBox.Show("This provider does not support data source enumeration...");

                }

            }

     

    相关帖子:

    http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/3916bde4-45fa-4d17-ac7a-c562e61d52a2


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    2011年5月3日 9:13