0
A
回答
0
@JD,要使用WMi獲取Sql Server實例,您必須使用WMI Provider for Configuration Management Classes,請參閱ServerSettings類。
檢查此示例代碼,以2種不同的方法完成相同的任務。
program GetWMI_SqlInstancesInfo;
{$APPTYPE CONSOLE}
uses
Windows,
Classes,
ActiveX,
Variants,
SysUtils,
WbemScripting_TLB in '..\..\Documents\RAD Studio\5.0\Imports\WbemScripting_TLB.pas';
procedure WmiHelper(RootStr,WmiQuery:String);
var
WMIServices : ISWbemServices;
WMILocator : ISWbemLocator;
Root : ISWbemObjectSet;
SWbemObject : ISWbemObject;
Item : IEnumVariant;
rgVar : OleVariant;
pCelFetched : Cardinal;
begin
WMILocator := CoSWbemLocator.Create();
WMIServices := WMILocator.ConnectServer('.', RootStr,'', '', '', '', 0, nil); //
Root := WMIServices.ExecQuery(WmiQuery,'WQL', 0, nil);
Item := (Root._NewEnum) as IEnumVariant;
while (Item.Next(1, rgVar, pCelFetched) = S_OK) do
begin
SWbemObject := IUnknown(rgVar) as ISWBemObject;
if (SWbemObject <> nil) then
begin
SWbemObject.Properties_;
Writeln(SWbemObject.GetObjectText_(0));
end;
end;
end;
//option 1 , shows all properties of the class just by running the query
procedure GetWMISQLInstancesInfo;
begin
WmiHelper('root\Microsoft\SqlServer\ComputerManagement','SELECT * FROM ServerSettings');
//WmiHelper('root\Microsoft\SqlServer\ComputerManagement','SELECT * FROM SqlServiceAdvancedProperty where SQLServiceType = 1');
end;
//option 2 , in this case you must know the properties names to get the info
procedure GetWMISQLInstancesInfo2;
var
WMIServices: ISWbemServices;
Root : ISWbemObjectSet;
Item : Variant;
I : Integer;
begin
WMIServices := CoSWbemLocator.Create.ConnectServer('.', 'root\Microsoft\SqlServer\ComputerManagement','', '', '', '', 0, nil);
Root := WMIServices.ExecQuery('SELECT * FROM ServerSettings','WQL', 0, nil);
for I := 0 to Root.Count - 1 do
begin
Item := Root.ItemIndex(I);
Writeln('Instance Name '+VarToStr(Item.InstanceName));
end;
End;
begin
try
CoInitialize(nil);
try
GetWMISQLInstancesInfo;
GetWMISQLInstancesInfo2;
Readln;
finally
CoUninitialize;
end;
except
on E:Exception do
Begin
Writeln(E.Classname, ': ', E.Message);
Readln;
End;
end;
end.
相關問題
- 1. Delphi和WMI Networking
- 2. 使用Delphi和dbExpress連接到SQL Server
- 3. 如何使用delphi提高WMI性能?
- 4. Delphi TClientDataset SQL Server RowVersion
- 5. 使用WMI的SQL Server警報事件錯誤
- 6. 使用WMI查找SQL Server版本的VBScript
- 7. SQL Server使用AND與IF?
- 8. 如何使用與SQL Server
- 9. 使用'between'與varchar(sql server)
- 10. 與使用SQL Server 2005
- 11. 用於Delphi和C的SQL Server層#
- 12. 使用.MDF SQL Server數據庫與ASP.NET對比使用SQL Server
- 13. 用於Delphi 2010的dbGo或dbExpress與Microsoft SQL Server
- 14. Windows Server 2008(WMI Provider)中的WMI錯誤
- 15. 使用SQL Server Compact與專用SQL Server數據庫的缺點
- 16. 與WMI
- 17. 是否可以使用Delphi for win32創建SQL Server UDF?
- 18. ADO使用Delphi和SQL Server無法識別數據庫更改
- 19. delphi中使用RemObjects的SQL Server varchar(MAX)數據類型
- 20. 使用Delphi直接連接到遠程SQL Server
- 21. 在Delphi 7中使用WMI的內存泄漏
- 22. 使用SQL Server SDK與SQL Server Compact Edition數據庫
- 23. 同時使用SQL Server Compact和SQL Server與實體框架
- 24. 使用Delphi連接到SQL Azure?
- 25. Delphi XE和SQL Server 2008快速連接
- 26. sql server 2005 delphi 2010 dbexpress連接
- 27. 遠程機器上的Delphi Wmi查詢
- 28. 無法讓delphi SQL LIKE與%
- 29. 使用SQL Server
- 30. 使用SQL Server