Ste*_*son 4 c# sql-server installation components smo
我想使用C#以编程方式实现以下目标.
查询SQL Server 2008中安装的组件,例如
我尝试使用SMO API for SQL Server试图查询信息收集以及配置集合,但无法找到上述三点中的任何一点.
我需要能够以编程方式确定安装了哪些SQL Server 2008组件以及未安装哪些组件,就像首先检查哪些组件已安装的SQL Server安装设置一样.
一种方法是查询SQL Server安装日志文件,但如果SQL Server完全不存在或者某人删除了该日志文件,则无效.
我需要可靠地确定已安装的SQL Server组件
请帮忙.
谢谢
史蒂夫
您最好的选择可能是通过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)
您可以通过运行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的版本.
| 归档时间: |
|
| 查看次数: |
6935 次 |
| 最近记录: |