1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
|
functie GetSQLInstances (Instanties: TStrings): Van Boole;
functie GetInstanceNameFromServiceName (const ServiceName: koord): koord;
const
SQLSERVER = „MSSQLSERVER“;
begin
als ServiceName = '' toen
Resultaat: = ''
anders
begin
als In hoofdletters (ServiceName) = SQLSERVER toen
Resultaat: = ServiceName
anders
Resultaat: = Exemplaar (ServiceName, Pos („$“, ServiceName) +1, Lengte (ServiceName) - Pos („$“, ServiceName));
eind;
eind;
functie GetWMIPropertyValueForEngineService (const PropertyName, ServiceName, WMINameSpace: koord): koord;
var
SWL: TSWbemLocator;
SWServ: ISWbemServices;
SWObjSet: ISWbemObjectSet;
Enum: IEnumVariant;
tempObj: OleVariant;
Waarde: Hoofd;
SWObj: ISWbemObject;
SWPropSet: ISWbemPropertySet;
sQry: koord;
begin
SWL: = TSWbemLocator.Create (nul);
probeer
probeer
SWServ: = SWL.ConnectServer ('', WMINameSpace, '', '', '', '', 0, nul);
sQry: = Formaat ('selecteer * uit SqlServiceAdvancedProperty waar SQLServiceType = 1 en PropertyName = '' %s '' en ServiceName = '' %s ''', [PropertyName, ServiceName]);
SWObjSet: = sQry SWServ.ExecQuery (, „WQL“, wbemFlagReturnImmediately, nul);
als SWObjSet.Count = 0 toen
begin
Resultaat: = '';
Uitgang;
eind;
//
Enum: = (. _NewEnum SWObjSet) als IEnumVariant;
terwijl (Enum.Next (1, tempObj, Waarde) = S_OK)
begin
SWObj: = IUnknown (tempObj) als SWBemObject;
SWPropSet: = SWObj.Properties_;
Resultaat: = SWPropSet.Item („PropertyStrValue“, 0). Get_Value;
eind;
behalve
op E: De uitzondering
begin
//WriteLn („Fout: “ + e.Message);
Resultaat: = '';
eind;
eind;
tot slot
SWL.Disconnect;
FreeAndNil (SWL);
eind;
eind;
const
WMI_NAMESPACES_TO_CHECK: serie [0..1] van koord = („ComputerManagement“, „ComputerManagement10“);
var
GetSqlExpress: TSWbemLocator;
De diensten: ISWbemServices;
ObjectSet: ISWbemObjectSet;
SObject: ISWbemObject;
propSet: ISWbemPropertySet;
Enum: IEnumVariant;
tempObj: OleVariant;
Waarde: Hoofd;
//
sQry: koord;
serviceName: koord;
WMIPath: koord;
i: Geheel;
begin
Resultaat: = Vals;
Instances.Clear;
voor I: = 0 tot 1
begin
WMIPath: = Formaat („wortel \ Microsoft \ SqlServer \ %s“, [WMI_NAMESPACES_TO_CHECK [I]]);
GetSqlExpress: = TSWbemLocator.Create (nul);
probeer
probeer
De diensten: = GetSqlExpress.ConnectServer ('', WMIPath, '', '', '', '', 0, nul);
sQry: = Formaat ('SELECTEER * UIT SqlServiceAdvancedProperty WAAR SQLServiceType = 1 EN PropertyName = '' instanceID ''', [{SQL_INSTANCE}]);
ObjectSet: = sQry Services.ExecQuery (, „WQL“, wbemFlagReturnImmediately, nul);
als ObjectSet.Count = 0 toen
begin
Ga verder;
eind;
//
Enum: = (. _NewEnum ObjectSet) als IEnumVariant;
terwijl (Enum.Next (1, tempObj, Waarde) = S_OK)
begin
SObject: = IUnknown (tempObj) als SWBemObject;
propSet: = SObject.Properties_;
serviceName: = propSet.Item („ServiceName“, 0). Get_Value;
De Dienst van //, Instantie, Versie, Uitgave
Instances.Add (Formaat („%s, %s, %s, %s“,
[serviceName,
GetInstanceNameFromServiceName (serviceName),
GetWMIPropertyValueForEngineService („Versie“, serviceName, WMIPath),
GetWMIPropertyValueForEngineService („SKUNAME“, serviceName, WMIPath)]));
eind;
Resultaat: = Waar;
behalve
op E: De uitzondering
begin
//WriteLn („Fout: “ + e.Message);
Resultaat: = Vals;
eind;
eind;
tot slot
GetSqlExpress.Disconnect;
FreeAndNil (GetSqlExpress);
eind;
eind;
eind;
|