6 using System.Collections.Generic;
21 private readonly
string _SQLVersion =
"Microsoft SQL Server 2019";
30 List<IResultadoPruebaDiagnostica> loPruebas =
new List<IResultadoPruebaDiagnostica>();
35 loPruebas.Add(CheckSQLServerVersion());
37 loPruebas.Add(CheckSQLServerMemory(loPruebas.FirstOrDefault()));
39 loPruebas.Add(CheckLiveUpdateStatus());
43 loRes = GetResultadoPreconfigurado();
45 loRes.
Descripcion =
"Esta prueba diagnóstica solamente se puede ejecutar desde el servidor.";
55 private bool CheckServidor()
57 string lcFile, lcContents;
61 lcFile = Path.Combine(Convert.ToString(EW_GLOBAL._GetVariable(
"wc_iniservidor")),
"CFGCLISRV.XML");
63 if (File.Exists(lcFile))
65 lcContents = File.ReadAllText(Path.Combine(Convert.ToString(EW_GLOBAL._GetVariable(
"wc_iniservidor")),
"CFGCLISRV.XML"), ASCIIEncoding.Default);
67 return lcContents.LastIndexOf(Environment.MachineName) > 0;
82 DataTable loDt =
new DataTable();
85 loRes = GetResultadoPreconfigurado();
86 loRes.
Nombre =
"Validar la versión de Microsoft SQL Server.";
88 if (DB.SQLExec(
"SELECT @@version as version", ref loDt) && loDt.Rows.Count > 0)
90 lcVersion = Convert.ToString(loDt.Rows[0][
"version"]);
92 if (lcVersion.StartsWith(_SQLVersion))
95 loRes.
Descripcion = $
"La versión de Microsoft SQL Server es correcta.";
100 loRes.
Descripcion = $
"La versión de Microsoft SQL Server del servidor no es {_SQLVersion}.";
106 loRes.
Descripcion = $
"No se ha podido determinar la versión de Microsoft SQL Server.";
109 FUNCTIONS._DisposeDatatable(loDt);
116 LiveUpdate loLiveUpate;
119 loRes = GetResultadoPreconfigurado();
120 loRes.
Nombre =
"Comprobar si está en modo automático Live Update.";
122 loLiveUpate =
new LiveUpdate();
124 if(loLiveUpate._LoadEntidad())
126 if (loLiveUpate._oEntidad._ModeCheck ==
"Automatic" && loLiveUpate._oEntidad._ModeDownload ==
"Automatic" && loLiveUpate._oEntidad._ModeInstall ==
"Automatic")
129 loRes.
Descripcion =
"Live Update está configurado en modo automático.";
134 loRes.
Descripcion =
"Live Update no está configurado en modo automático.";
140 loRes.
Descripcion =
"No se ha podido comprobar los datos de Live Update.";
148 int lnMemoryComputerGB;
149 decimal lnMemorySQL = 0, lnMemorySQLGB, lnPercent;
150 ulong lnMemoryComputer = 0;
152 DataTable loDt =
new DataTable();
154 loRes = GetResultadoPreconfigurado();
155 loRes.
Nombre =
"Comprobar memoria asignada al Microsoft SQL Server.";
161 if (DB.SQLExec(
"SELECT value_in_use as valor FROM sys.configurations WHERE name like '%max server memory%'", ref loDt) && loDt.Rows.Count > 0)
163 lnMemorySQL = Convert.ToDecimal(loDt.Rows[0][
"valor"]);
164 lnMemoryComputer =
new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory;
166 if (lnMemoryComputer == 0 || lnMemorySQL == 0)
throw new Exception();
168 lnMemorySQLGB = Math.Round(lnMemorySQL / 1024, 2);
170 lnMemoryComputerGB = Convert.ToInt32(Math.Ceiling(lnMemoryComputer / (decimal)1024 / (decimal)1024 / (decimal)1024));
172 lnPercent = (lnMemorySQLGB / lnMemoryComputerGB) * 100;
174 loRes.
Descripcion = $
"La memoria destinada al Microsoft SQL Server ({lnMemorySQLGB}) es un {Convert.ToInt32(lnPercent)}% del total ({lnMemoryComputerGB}). ";
179 loRes.
Descripcion +=
"Se recomienda que no supere el 25% del total.";
184 loRes.
Descripcion +=
"La memoria asignada al Microsoft SQL Server no supera el 25% del total.";
191 loRes.
Descripcion = $
"No se ha podido comprobar la memoria del Microsoft SQL Server.{Environment.NewLine}{toRes.Descripcion}";
198 if(lnMemoryComputer == 0 && lnMemorySQL == 0)
200 loRes.
Descripcion = $
"No se ha podido comprobar la memoria .";
202 else if (lnMemoryComputer == 0 )
204 loRes.
Descripcion = $
"No se ha podido comprobar la memoria del ordenador.";
208 loRes.
Descripcion = $
"No se ha podido comprobar la memoria del Microsoft SQL Server.";
Clase abstracta para pruebas diagnósticas
override System.Collections.Generic.IEnumerable< IResultadoPruebaDiagnostica > Ejecutar()
Ejecutar pruebas
string Descripcion
Descripción de la prueba
TipoCategoriaPruebaDiagnostica
Enumerado de categorias de pruebas diagnósticas
TipoResultadoPruebaDiagnostica
Tipos de resultado que pueden tener las pruebas diagnósticas
ValidServidor()
Constructor
Clase interna para el diagnóstico automático de la instalación Esta clase actua como contenedor de pr...
Diagnosticoa nivel de servidor
Prueba de Val. Servidor Sage 50
string Nombre
Nombre de la prueba
Interfície para el resultado de pruebas de diagnóstico
TipoResultadoPruebaDiagnostica Resultado
Resultado