如何使用C#可靠地确定安装SQL Server 2008的哪些组件?

Ste*_*son 4 c# sql-server installation components smo

我想使用C#以编程方式实现以下目标.

查询SQL Server 2008中安装的组件,例如

  1. 升级工具
  2. 调试符号
  3. 复制支持
  4. 在线书籍
  5. 开发工具

我尝试使用SMO API for SQL Server试图查询信息收集以及配置集合,但无法找到上述三点中的任何一点.

我需要能够以编程方式确定安装了哪些SQL Server 2008组件以及未安装哪些组件,就像首先检查哪些组件已安装的SQL Server安装设置一样.

一种方法是查询SQL Server安装日志文件,但如果SQL Server完全不存在或者某人删除了该日志文件,则无效.

我需要可靠地确定已安装的SQL Server组件

请帮忙.

谢谢

史蒂夫

Jam*_*See 6

您最好的选择可能是通过WMI查询Win32_Product.您可以使用WMI Code Creator v1.0来帮助您创建适当的查询.您还可以查看WQL(SQL for WMI)以获取有关支持的查询语法和ManagementObjectSearcher类的信息.

像这样的东西应该做的伎俩:

using System;
using System.Management;
using System.Windows.Forms;

namespace WMISample
{
    public class MyWMIQuery
    {
        public static void Main()
        {
            try
            {
                ManagementObjectSearcher searcher = 
                    new ManagementObjectSearcher("root\\CIMV2", 
                    "SELECT * FROM Win32_Product WHERE Name LIKE '%SQL%'"); 

                foreach (ManagementObject queryObj in searcher.Get())
                {
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("Win32_Product instance");
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("InstallDate: {0}", queryObj["InstallDate"]);
                    Console.WriteLine("InstallLocation: {0}", queryObj["InstallLocation"]);
                    Console.WriteLine("Name: {0}", queryObj["Name"]);
                    Console.WriteLine("SKUNumber: {0}", queryObj["SKUNumber"]);
                    Console.WriteLine("Vendor: {0}", queryObj["Vendor"]);
                    Console.WriteLine("Version: {0}", queryObj["Version"]);
                }
            }
            catch (ManagementException e)
            {
                MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 升级工具以升级顾问结束
  2. 调试符号是由某些应用程序按需从符号服务器中提取的,并且不会显示在Win32_Products中.
  3. 通过对Win32_Products的纯WMI查询,似乎无法检测到复制支持
  4. 在线书籍以书籍在线结束(英语)
  5. 开发工具以BI Development Studio结束

您可以通过运行SQL Server安装程序发现报告(需要管理员权限)来了解已安装的功能:

  1. 转到"开始"菜单
  2. 单击所有程序
  3. 单击Microsoft SQL Server
  4. 单击配置工具
  5. 单击"SQL Server安装中心"
  6. 单击"工具"部分链接
  7. 单击"已安装的SQL Server功能发现报告"

您还可以通过运行setup.exe /ACTION=RUNDISCOVERY /Q(从C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\SQLServer2008R2SQL Server 2008 R2的情况下)从命令行创建报告.报告文件通常位于C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\YYYYMMDD_HHmmSS,其中YYYYMMDD_HHmmSS是报告运行的日期和时间.SqlDiscoveryReport.xml可能是以编程方式使用最有用的一个.请注意,这些位置可能会有所不同,具体取决于用户在初始设置期间选择的安装位置以及SQL Server的版本.