У меня проблема с запросом WMI.Я использую запрос WMI для поиска и возобновления экземпляра в BizTalk.Когда экземпляров не так много (например, когда данных не так много), запрос выполняется довольно хорошо.Но когда данные большие (около 3000 экземпляров), выполнение запроса занимает от 6 до 10 секунд, и это недопустимо.
Код выглядит следующим образом:
string query = "SELECT * FROM MSBTS_ServiceInstance WHERE InstanceID = \"" + OrchestrationId + "\"";
ManagementObjectSearcher searcher = new ManagementObjectSearcher(new ManagementScope(@"root\MicrosoftBizTalkServer"), new WqlObjectQuery(query), null);
int count = searcher.Get().Count;
if (count > 0)
{
string[] strArray = new string[count];
string[] strArray2 = new string[count];
string[] strArray3 = new string[count];
string str2 = string.Empty;
string str3 = string.Empty;
int index = 0;
foreach (ManagementObject obj2 in searcher.Get())
{
if (str2 == string.Empty)
{
str2 = obj2["HostName"].ToString();
}
strArray2[index] = obj2["ServiceClassId"].ToString();
strArray3[index] = obj2["ServiceTypeId"].ToString();
strArray[index] = obj2["InstanceID"].ToString();
str3 = str3 + string.Format(" {0}\n", obj2["InstanceID"].ToString());
index++;
}
new ManagementObject(string.Format("root\\MicrosoftBizTalkServer:MSBTS_HostQueue.HostName=\"{0}\"", str2)).InvokeMethod("ResumeServiceInstancesByID", new object[] { strArray2, strArray3, strArray, 1 });
Этопервый запрос (Выбрать * из MSBS_ServiceInstance ..), который занимает много времени, когда объем данных увеличивается.
Есть идеи, как мне это улучшить?Платформа - Windows Server 2008 Enterprise.
Спасибо!