4

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

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

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

我曾尝试使用 SQL Server 的 SMO API 尝试查询信息集合以及配置集合,但找不到上述三点中的任何一点。

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

一种方法是查询 SQL Server 安装日志文件,但如果 SQL Server 完全不存在或有人删除了该日志文件,则无济于事。

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

请帮忙。

谢谢

史蒂夫

4

2 回答 2

6

您最好的选择可能是通过 WMI 查询 Win32_Product。您可以使用WMI Code Creator v1.0来帮助您创建适当的查询。您还可以查看WQL(用于 WMI 的 SQL)以获取有关支持的查询语法和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);
            }
        }
    }
}
  1. 升级工具以升级顾问结束
  2. 调试符号由某些应用程序按需从符号服务器中提取,并且不会显示在 Win32_Products 中。
  3. 通过对 Win32_Products 的普通 WMI 查询似乎无法检测到复制支持
  4. Books Online 以 Books Online 结尾(英文)
  5. 开发工具以 BI Development Studio 结束

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

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

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

于 2012-10-31T23:00:29.833 回答
-1

避免使用 Win_32 产品,请参见此处

改为使用CreateObject("WindowsInstaller.Installer")

于 2013-04-22T20:24:16.247 回答