得到本机或者域内有效的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
大家好,
在此提供一个示例展示如何使用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.aspxSqlDataSourceEnumerator 方法
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
大家好,
在此提供一个示例展示如何使用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.aspxSqlDataSourceEnumerator 方法
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.aspxSqlDataSourceEnumerator 方法
http://msdn.microsoft.com/zh-cn/library/a6t1z9x2.aspx
谢谢
星光总能为我指引方向

