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 :
|
fonction GetSQLInstances (exemples : TStrings) : Booléen ;
fonction GetInstanceNameFromServiceName (const ServiceName : corde) : corde ;
const
SQLSERVER = « MSSQLSERVER » ;
commencer
si ServiceName = '' puis
Résultat : = ''
autrement
commencer
si haut de casse (ServiceName) = SQLSERVER alors
Résultat : = ServiceName
autrement
Résultat : = copie (ServiceName, position (« $ », ServiceName) +1, longueur (ServiceName) - position (« $ », ServiceName));
extrémité ;
extrémité ;
fonction GetWMIPropertyValueForEngineService (const PropertyName, ServiceName, WMINameSpace : corde) : corde ;
variété
SWL : TSWbemLocator ;
SWServ : ISWbemServices ;
SWObjSet : ISWbemObjectSet ;
Enum : IEnumVariant ;
tempObj : OleVariant ;
Valeur : Cardinal ;
SWObj : ISWbemObject ;
SWPropSet : ISWbemPropertySet ;
sQry : corde ;
commencer
SWL : = TSWbemLocator.Create (zéro) ;
essai
essai
SWServ : = SWL.ConnectServer ('', WMINameSpace, '', '', '', '', 0, zéro) ;
sQry : = format ('choisir * à partir de SqlServiceAdvancedProperty où SQLServiceType = 1 et PropertyName = '' %s '' et ServiceName = '' ''' de %s, [PropertyName, ServiceName]) ;
SWObjSet : = SWServ.ExecQuery (sQry, « WQL », wbemFlagReturnImmediately, zéro) ;
si SWObjSet.Count = 0 puis
commencer
Résultat : = '' ;
Sortie ;
extrémité ;
//
Enum : = (_NewEnum de SWObjSet.) comme IEnumVariant ;
tandis que (Enum.Next (1, tempObj, valeur) = S_OK) faire
commencer
SWObj : = IUnknown (tempObj) comme SWBemObject ;
SWPropSet : = SWObj.Properties_ ;
Résultat : = SWPropSet.Item (« PropertyStrValue », 0). Get_Value ;
extrémité ;
excepté
sur E : L'exception font
commencer
//WriteLn (« erreur : » + e.Message) ;
Résultat : = '' ;
extrémité ;
extrémité ;
finalement
SWL.Disconnect ;
FreeAndNil (SWL) ;
extrémité ;
extrémité ;
const
WMI_NAMESPACES_TO_CHECK : rangée [0..1] de corde = (« ComputerManagement », « ComputerManagement10 ») ;
variété
GetSqlExpress : TSWbemLocator ;
Services : ISWbemServices ;
ObjectSet : ISWbemObjectSet ;
SObject : ISWbemObject ;
propSet : ISWbemPropertySet ;
Enum : IEnumVariant ;
tempObj : OleVariant ;
Valeur : Cardinal ;
//
sQry : corde ;
serviceName : corde ;
WMIPath : corde ;
i : Nombre entier ;
commencer
Résultat : = faux ;
Instances.Clear ;
pour I : = 0 à 1 font
commencer
WMIPath : = format (« racine \ Microsoft \ SqlServer \ %s », [WMI_NAMESPACES_TO_CHECK [I]]) ;
GetSqlExpress : = TSWbemLocator.Create (zéro) ;
essai
essai
Services : = GetSqlExpress.ConnectServer ('', WMIPath, '', '', '', '', 0, zéro) ;
sQry : = format ('CHOISIR * À PARTIR de SqlServiceAdvancedProperty OÙ SQLServiceType = 1 ET PropertyName = '' ''' d'instanceID, [{SQL_INSTANCE}]) ;
ObjectSet : = Services.ExecQuery (sQry, « WQL », wbemFlagReturnImmediately, zéro) ;
si ObjectSet.Count = 0 puis
commencer
Continuer ;
extrémité ;
//
Enum : = (_NewEnum d'ObjectSet.) comme IEnumVariant ;
tandis que (Enum.Next (1, tempObj, valeur) = S_OK) faire
commencer
SObject : = IUnknown (tempObj) comme SWBemObject ;
propSet : = SObject.Properties_ ;
serviceName : = propSet.Item (« ServiceName », 0). Get_Value ;
Service de //, exemple, version, édition
Instances.Add (format (« %s, %s, %s, %s »,
[serviceName,
GetInstanceNameFromServiceName (serviceName),
GetWMIPropertyValueForEngineService (« version », serviceName, WMIPath),
GetWMIPropertyValueForEngineService (« SKUNAME », serviceName, WMIPath)]));
extrémité ;
Résultat : = rectifier ;
excepté
sur E : L'exception font
commencer
//WriteLn (« erreur : » + e.Message) ;
Résultat : = faux ;
extrémité ;
extrémité ;
finalement
GetSqlExpress.Disconnect ;
FreeAndNil (GetSqlExpress) ;
extrémité ;
extrémité ;
extrémité ;
|