Microsoft Developer Network > Forums Home > SQL Server > 得到本机或者域内有效的SQL Server 实例名,版本等信息

Answered 得到本机或者域内有效的SQL Server 实例名,版本等信息

  • Wednesday, February 09, 2011 2:02 AM
     
     

    大家好,

    SQL Server 2005或者以上版本,我们可以编写一个简单的SMO控制台应用程序程序,来列出本机或者在域内有效的SQL Server 实例名(默认实例名或命名实例名)、SQL Server版本等信息。

    谢谢.

Answers

  • Wednesday, February 09, 2011 2:03 AM
     
     Answered

    大家好,

    在此提供一个示例展示如何使用EnumAvailableSqlServers 方法,来获得本机或者域内SQL Server 实例名(默认实例名或者命名实例名)、SQL Server 版本等信息。

    1.   启动 Visual Studio 2010(或 Visual Studio 2008,或者Visual Studio 2005)。

    2.   文件菜单上,单击新建项目。此时将显示新建项目对话框。

    3.   项目类型对话框中,选择Visual C#”,然后选择Windows。在“Visual Studio 已安装的模板窗格中,选择Windows 应用程序

    4.   名称字段中,键入新应用程序的名称GetInstanceName

    5.   选择 Visual C# 应用程序类型。在下面的示例中,请选择控制台应用程序

    6.   项目菜单上,选择添加引用。此时将显示添加引用对话框。

     

    7.   单击浏览,在 C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\ 文件夹中找到 SMO 程序集,然后选择下列文件。这些文件是构建一个 SMO 应用程序至少需要的文件:

    Microsoft.SqlServer.ConnectionInfo.dll

    Microsoft.SqlServer.Smo.dll

    Microsoft.SqlServer.Management.Sdk.Sfc.dll

    Microsoft.SqlServer.SqlEnum.dll

    8.   在代码的命名空间语句前,键入以下 using 语句,以限定 SMO 命名空间中的类型:

     

    using Microsoft.SqlServer.Management.Smo;

    using Microsoft.SqlServer.Management.Common;

      

    9.   使用EnumAvailableSqlServers方法获得实例名等信息。

     

    DataTable dt = SmoApplication.EnumAvailableSqlServers(false);

    foreach (DataRow dr in dt.Rows)

    {

        Console.WriteLine(dr["Name"]);

        Console.WriteLine("   " + dr["Server"]);

        Console.WriteLine("   " + dr["Instance"]);

        Console.WriteLine("   " + dr["Version"]);

        Console.WriteLine("   " + dr["IsLocal"]);

    }

     

    Console.ReadLine();

     

    10.        运行结果如下:

     

    当然,我们也可以用其它方法得到这些信息,我们可以使用SqlDataSourceEnumerator方法。

    SqlDataSourceEnumerator sqldatasourceenumerator1 = SqlDataSourceEnumerator.Instance;

    DataTable datatable1 = sqldatasourceenumerator1.GetDataSources();

    foreach (DataRow row in datatable1.Rows)

    {

        Console.WriteLine("****************************************");

        Console.WriteLine("Server Name:" + row["ServerName"]);

        Console.WriteLine("Instance Name:" + row["InstanceName"]);

        Console.WriteLine("Is Clustered:" + row["IsClustered"]);

        Console.WriteLine("Version:" + row["Version"]);

        Console.WriteLine("****************************************");

    }

     

    一些关于EnumAvailableSqlServers方法的小贴士:

    1.   如果我们指定True作为EnumAvailableSqlServers 方法的参数,我们将会得到本机SQL Server 相关信息。

    2.   更多信息,请参阅:
    如何在 Visual Studio .NET 中创建 Visual C# SMO 项目
    http://msdn.microsoft.com/zh-cn/library/ms162129.aspx


    EnumAvailableSqlServers
    方法
    http://msdn.microsoft.com/zh-cn/library/ms210425.aspx

     

    SqlDataSourceEnumerator 方法
    http://msdn.microsoft.com/zh-cn/library/a6t1z9x2.aspx

     

    谢谢
    • Marked As Answer by ForumFAQ Wednesday, February 09, 2011 2:04 AM
    •  

All Replies

  • Wednesday, February 09, 2011 2:03 AM
     
     Answered

    大家好,

    在此提供一个示例展示如何使用EnumAvailableSqlServers 方法,来获得本机或者域内SQL Server 实例名(默认实例名或者命名实例名)、SQL Server 版本等信息。

    1.   启动 Visual Studio 2010(或 Visual Studio 2008,或者Visual Studio 2005)。

    2.   文件菜单上,单击新建项目。此时将显示新建项目对话框。

    3.   项目类型对话框中,选择Visual C#”,然后选择Windows。在“Visual Studio 已安装的模板窗格中,选择Windows 应用程序

    4.   名称字段中,键入新应用程序的名称GetInstanceName

    5.   选择 Visual C# 应用程序类型。在下面的示例中,请选择控制台应用程序

    6.   项目菜单上,选择添加引用。此时将显示添加引用对话框。

     

    7.   单击浏览,在 C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\ 文件夹中找到 SMO 程序集,然后选择下列文件。这些文件是构建一个 SMO 应用程序至少需要的文件:

    Microsoft.SqlServer.ConnectionInfo.dll

    Microsoft.SqlServer.Smo.dll

    Microsoft.SqlServer.Management.Sdk.Sfc.dll

    Microsoft.SqlServer.SqlEnum.dll

    8.   在代码的命名空间语句前,键入以下 using 语句,以限定 SMO 命名空间中的类型:

     

    using Microsoft.SqlServer.Management.Smo;

    using Microsoft.SqlServer.Management.Common;

      

    9.   使用EnumAvailableSqlServers方法获得实例名等信息。

     

    DataTable dt = SmoApplication.EnumAvailableSqlServers(false);

    foreach (DataRow dr in dt.Rows)

    {

        Console.WriteLine(dr["Name"]);

        Console.WriteLine("   " + dr["Server"]);

        Console.WriteLine("   " + dr["Instance"]);

        Console.WriteLine("   " + dr["Version"]);

        Console.WriteLine("   " + dr["IsLocal"]);

    }

     

    Console.ReadLine();

     

    10.        运行结果如下:

     

    当然,我们也可以用其它方法得到这些信息,我们可以使用SqlDataSourceEnumerator方法。

    SqlDataSourceEnumerator sqldatasourceenumerator1 = SqlDataSourceEnumerator.Instance;

    DataTable datatable1 = sqldatasourceenumerator1.GetDataSources();

    foreach (DataRow row in datatable1.Rows)

    {

        Console.WriteLine("****************************************");

        Console.WriteLine("Server Name:" + row["ServerName"]);

        Console.WriteLine("Instance Name:" + row["InstanceName"]);

        Console.WriteLine("Is Clustered:" + row["IsClustered"]);

        Console.WriteLine("Version:" + row["Version"]);

        Console.WriteLine("****************************************");

    }

     

    一些关于EnumAvailableSqlServers方法的小贴士:

    1.   如果我们指定True作为EnumAvailableSqlServers 方法的参数,我们将会得到本机SQL Server 相关信息。

    2.   更多信息,请参阅:
    如何在 Visual Studio .NET 中创建 Visual C# SMO 项目
    http://msdn.microsoft.com/zh-cn/library/ms162129.aspx


    EnumAvailableSqlServers
    方法
    http://msdn.microsoft.com/zh-cn/library/ms210425.aspx

     

    SqlDataSourceEnumerator 方法
    http://msdn.microsoft.com/zh-cn/library/a6t1z9x2.aspx

     

    谢谢
    • Marked As Answer by ForumFAQ Wednesday, February 09, 2011 2:04 AM
    •  
  • Thursday, September 08, 2011 6:39 AM
     
     

    大家好, 

    在此提供一个示例展示如何使用EnumAvailableSqlServers 方法,来获得本机或者域内SQL Server 实例名(默认实例名或者命名实例名)、SQL Server 版本等信息。 

    1.   启动 Visual Studio 2010(或 Visual Studio 2008,或者Visual Studio 2005)。 

    2.   文件菜单上,单击新建项目。此时将显示新建项目对话框。 

    3.   项目类型对话框中,选择Visual C#”,然后选择Windows。在“Visual Studio 已安装的模板窗格中,选择Windows 应用程序

    4.   名称字段中,键入新应用程序的名称GetInstanceName

    5.   选择 Visual C# 应用程序类型。在下面的示例中,请选择控制台应用程序

     

    6.   项目菜单上,选择添加引用。此时将显示添加引用对话框。

     

     

    7.   单击浏览,在 C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\ 文件夹中找到 SMO 程序集,然后选择下列文件。这些文件是构建一个 SMO 应用程序至少需要的文件:

    Microsoft.SqlServer.ConnectionInfo.dll

    Microsoft.SqlServer.Smo.dll

    Microsoft.SqlServer.Management.Sdk.Sfc.dll

    Microsoft.SqlServer.SqlEnum.dll

    8.   在代码的命名空间语句前,键入以下 using 语句,以限定 SMO 命名空间中的类型:

     

    using Microsoft.SqlServer.Management.Smo;

    using Microsoft.SqlServer.Management.Common;

      

    9.   使用EnumAvailableSqlServers方法获得实例名等信息。

     

    DataTable dt = SmoApplication.EnumAvailableSqlServers(false);

    foreach (DataRow dr in dt.Rows)

    {

        Console.WriteLine(dr["Name"]);

        Console.WriteLine("   " + dr["Server"]);

        Console.WriteLine("   " + dr["Instance"]);

        Console.WriteLine("   " + dr["Version"]);

        Console.WriteLine("   " + dr["IsLocal"]);

    }

     

    Console.ReadLine();

     

    10.        运行结果如下:

     

     

     

    当然,我们也可以用其它方法得到这些信息,我们可以使用SqlDataSourceEnumerator方法。

    SqlDataSourceEnumerator sqldatasourceenumerator1 = SqlDataSourceEnumerator.Instance;

    DataTable datatable1 = sqldatasourceenumerator1.GetDataSources();

    foreach (DataRow row in datatable1.Rows)

    {

        Console.WriteLine("****************************************");

        Console.WriteLine("Server Name:" + row["ServerName"]);

        Console.WriteLine("Instance Name:" + row["InstanceName"]);

        Console.WriteLine("Is Clustered:" + row["IsClustered"]);

        Console.WriteLine("Version:" + row["Version"]);

        Console.WriteLine("****************************************");

    }

     

    一些关于EnumAvailableSqlServers方法的小贴士:

    1.   如果我们指定True作为EnumAvailableSqlServers 方法的参数,我们将会得到本机SQL Server 相关信息。

    2.   更多信息,请参阅:
    如何在 Visual Studio .NET 中创建 Visual C# SMO 项目
    http://msdn.microsoft.com/zh-cn/library/ms162129.aspx


    EnumAvailableSqlServers
    方法
    http://msdn.microsoft.com/zh-cn/library/ms210425.aspx

     

    SqlDataSourceEnumerator 方法
    http://msdn.microsoft.com/zh-cn/library/a6t1z9x2.aspx

     

    谢谢


    星光总能为我指引方向