Solución al error 0x851A001A al instalar SQL Server
La gran mayoría de empresas y desarrolladores, utilizan SQL Server en Windows Server, no obstante, en casos en el que se instala en Windows 11 o 10, puede surgir el error 0x851A001A al instalar SQL Server.
Esto se debe principalmente a la forma de gestionar el tamaño de asignación de unidades de almacenamiento SSD y NVME donde esta instalado Windows.
Causa principal del error 0x851A001A en SQL Server
El error es habitual es SQL Server 2022 y 2019 instalados en Windows 10 y 11 en equipos modernos con almacenamiento NVME. La causa como hemos indicado, se debe a que Windows 11 fuerza los tamaños de los sectores del SSD o unidad de almacenamiento en un tamaño incompatible con SQL Server Standard o Enterprise.
Esto ocurre principalmente en nuevos equipos con almacenamiento NVME, algo poco habitual en servidores. Para solucionarlo seguiremos las indicaciones de este artículo, utilizando como herramienta el editor del registro, símbolo del sistema o bien con PowerShell.
Dejamos marcada la carpeta Device y en el menú Edición, apuntamos a Nuevo y luego seleccionamos Valor de cadena múltiple. Lo nombramos como: ForcedPhysicalSectorSizeInBytes.
Hacemos doble clic en el nuevo valor y escribimos como nuevo valor, lo siguiente: * 4095
Aceptamos, cerramos y reiniciamos el equipo.
Utilizar el símbolo del sistema (CMD) para solucionarlo:
Ejecutaremos los siguientes comandos escribiéndolos o pegándolos y presionando enter, debemos hacerlo uno a uno.
Cualquiera de los tres métodos forzará el valor correcto para los sectores del almacenamiento NVME o SSD del sistema Windows 10 y 11, esto nos permitirá evitar el error 0x851A001A al instalar SQL Server 2022, 2019, 2017, etc, en Windows 11 o 10.
y ahora debemos indicar al fichero /etc/resolv.conf que somos nosotros mismos el servidor DNS de nombres:
nameserver 127.0.0.1
Vaciar o Limpiar caché de las DNS
En Windows desde la línea de comandos (cmd) con el comando ipconfig podemos borrar la caché:
ipconfig /flushdns
Para ver la caché de las DNS de Windows
ipconfig /displaydns
En Linux si usamos el daemon nscd
/etc/rc.d/init.d/nscd restart
Con Systemd resolved
sudo systemd-resolve –flush-caches
Si usamos dnsmasq
/etc/init.d/dnsmasq restart
Limpiar caché bind
rndc flush
Limpiar la cahé de un dominio
rndc flushname elhacker.net
Refrescar caché bind
rndc dumpdb -cache vi /var/named/data/cache_dump.db
En MacOS según la versión:
Para limpiar la cache DNS en Mac OS X Leopard:
lookupd -flushcache
Para limpiar la cache DNS en Mac OS X:
dscacheutil -flushcache
Ir > Utilidades y a continuación seleccionamos Terminal. Una vez abierto el Terminal, debemos ejecutar el comando que corresponda en función de la versión de macOS que tengamos instalada:
macOS El Capitan, Sierra, High Sierra, Mojave y Catalina: sudo killall -HUP mDNSResponder
macOS Lion, Mountain Lion y Mavericks: sudo killall -HUP mDNSResponder
macOS Snow Leopard: sudo dscacheutil -flushcache
macOS Leopard: sudo lookupd -flushcache
Limpiar el caché DNS en el navegador Google Chrome
Pestaña en blanco en el navegador y escribimos en la barra de direcciones del navegador:
chrome://net-internals/#dns
Hacer click en el botón «Clear host caché” para borrar todo el caché DNS que está almacenado.
Para limpiar las conexiones tenemos que abrir en la barra de direcciones:
chrome://net-internals/#sockets
Limpiar el caché DNS en el navegador Mozilla Firefox
Los pasos a seguir para borrar la caché DNS en el navegador web de Mozilla cambian respecto al navegador de Google. Esto es lo que debemos hacer en Firefox:
Abrimos una nueva ventana de Mozilla Firefox.
Escribimos en la barra de direcciones about:config y pulsamos Enter.
Buscamos la entrada network.dnsCacheExpiration.
Una vez la hemos encontrado hacemos clic sobre ella y establecemos su valor a 0.
Esto hará que el propio navegador ignore su propia caché DNS.
Limpiar el caché DNS en el navegador Microsoft Edge
Con la versión de Microsoft Edge basado en Chromium también es posible vaciar la caché DNS a nivel de navegador siguiendo estos sencillos pasos:
Abrimos una ventana de Edge Chromium.
Escribimos edge://net-internals/#dns en la barra de direcciones y pulsamos Enter.
Ahora de nos mostrará una página donde veremos todas las resoluciones DNS realizadas desde el navegador.
Pulsamos en el botón Clear host caché y automáticamente se borrará toda la caché DNS almacenada en Edge.
Cuando este caso ocurra ir a servicios y activar el servicio: Publicación de recurso de detección de función, esto hazlo en todos los equipos de la red y veras como aparecen.
¿Cómo habilitar la política de auditoría de acceso a archivos y carpetas en Windows?
De forma predeterminada, la auditoría de acceso a objetos del sistema de archivos no está habilitada en Windows Server. Puede habilitar y configurar la configuración de auditoría mediante la Política de grupo. Si necesita habilitar políticas de auditoría en varios servidores o equipos, puede utilizar los GPO de dominio (configurables mediante el gpmc.msc consola mmc). Si solo desea configurar la auditoría en un servidor, puede usar el Editor de políticas de grupo local.
Abra la consola del Editor de políticas de grupo local – gpedit.msc;
Vaya a la sección GPO con políticas de auditoría avanzadas: Configuración de Windows -> Configuración de seguridad -> Configuración de política de auditoría avanzada -> Acceso a objetos;
Configuración de la configuración de auditoría de archivos eliminados en una carpeta compartida
Ahora debe configurar la auditoría en las propiedades de la carpeta de red compartida a la que desea realizar un seguimiento del acceso. Ejecute el Explorador de archivos y abra las propiedades de la carpeta. Ve a la Seguridad pestaña. Haga clic en el Avanzado botón -> ir al Revisión de cuentas pestaña.
Si el mensaje «Debe ser administrador o tener los privilegios adecuados para ver las propiedades de auditoría de este objeto.”Aparece, haga clic en el Continuar botón.
Luego haga clic en el Agregar para especificar el usuario o grupo para el que desea capturar eventos de auditoría. Si desea realizar un seguimiento de los eventos de acceso para todos los usuarios, especifique el Todos grupo.
Luego, debe especificar qué permisos utilizados para acceder al objeto deben registrarse. Para guardar solo eventos de eliminación de archivos en el registro de eventos, haga clic en el Mostrar permisos avanzados botón. En la lista de eventos, deje la auditoría solo para los eventos de eliminación de carpetas y archivos: Borrar y Eliminar subcarpetas y archivos.
Consejo. Recuerde que la política de auditoría para objetos de Windows requiere recursos informáticos adicionales. Úselo con cuidado, siempre trate de minimizar la cantidad de objetos de auditoría y eventos para registrar.
Ahora, si el usuario elimina cualquier archivo o carpeta en la carpeta de red compartida, el evento de eliminación de archivo de Sistema de archivos -> Auditoría exitosa aparece en el registro de seguridad con ID de evento 4663 desde el Auditoría de seguridad de Microsoft Windows fuente.
Abre el Visor de eventos consola mmceventvwr.msc), ampliar la Registros de Windows -> Seguridad sección. Habilite el filtro de registro de eventos por EventID 4663.
Abra cualquiera de los eventos restantes en el Visor de eventos. Como puede ver, contiene información sobre el nombre del archivo eliminado, la cuenta del usuario que eliminó el archivo y el nombre del proceso.
An attempt was made to access an object.
Subject:Security ID: CORPjsmith
Account Name: jsmith
Account Domain: CORP
Logon ID: 0x32B12627
Object:Object Server: Security
Object Type: File
Object Name: E:DistrBackup.rar
Handle ID: 0x7bc4
Resource Attributes: S:AI
Process Information:
Process ID: 0x4
Process Name:
Access Request Information:
Accesses: DELETE
Access Mask: 0x10000
Después de habilitar la política de auditoría de acceso a archivos, puede encontrar en el registro de seguridad:
Quién eliminó el archivo de la carpeta de red compartida y cuándo sucedió;
Qué aplicación (proceso) se utilizó para eliminar el archivo;
¿Cuál es la fecha de la copia de seguridad que se restaurará?
¿Cómo escribir eventos de eliminación de archivos en una base de datos SQL (MySQL / MSSQL)?
Sin embargo, incluso si la auditoría de los archivos eliminados está habilitada, puede resultar problemático encontrar algo en los registros. En primer lugar, es bastante difícil encontrar una entrada específica entre miles de eventos (en Windows no existe una herramienta conveniente para buscar un evento con un filtro flexible). En segundo lugar, si un archivo se eliminó hace mucho tiempo, este evento puede estar ausente en los registros, ya que fue sobrescrito por nuevos eventos.
Puede guardar todos los eventos de eliminación de archivos en la base de datos SQL. Puede utilizar las bases de datos Microsoft SQL Server, Elasticsearch o MySQL / MariaDB para almacenar sus eventos.
En este ejemplo, le mostraremos cómo registrar eventos de auditoría en una tabla de base de datos separada en un MySQL. Usaré el siguiente formato de tabla:
Nombre del servidor;
Nombre del archivo eliminado;
Fecha y hora;
Nombre del usuario que ha eliminado el archivo.
La consulta de MySQL para crear esta tabla se ve así:
CREATE TABLE deleted_items (id INT NOT NULL AUTO_INCREMENT, server VARCHAR(100), file_name VARCHAR(255), dt_time DATETIME, user_name VARCHAR(100), PRIMARY KEY (ID));
Para obtener eventos con EventID 4663 del registro de seguridad para el día actual, puede usar el siguiente script de PowerShell:
Después de guardar eventos en una base de datos externa, este registro de eventos se puede borrar.
Ahora, para averiguar quién ha eliminado el archivo «Informe Anual.DOC“, Basta con ejecutar el siguiente script en la consola de PowerShell: $DeletedFile = "%AnnualReport.DOC%" Set-ExecutionPolicy RemoteSigned Add-Type –Path ‘C:Program Files (x86)MySQLMySQL Connector Net 6.9.8Assembliesv4.5MySql.Data.dll' $Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=10.1.1.13;uid=posh;pwd=P@ssw0rd;database=aduser'} $Connection.Open() $MYSQLCommand = New-Object MySql.Data.MySqlClient.MySqlCommand $MYSQLDataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter $MYSQLDataSet = New-Object System.Data.DataSet $MYSQLCommand.Connection=$Connection $MYSQLCommand.CommandText="SELECT user_name,dt_time from deleted_items where file_name LIKE '$DeletedFile'" $MYSQLDataAdapter.SelectCommand=$MYSQLCommand $NumberOfDataSets=$MYSQLDataAdapter.Fill($MYSQLDataSet, "data") foreach($DataSet in $MYSQLDataSet.tables[0]) { write-host "User:" $DataSet.user_name "at:" $DataSet.dt_time } $Connection.Close()
Ahora puede ver el nombre de usuario y la hora en que se eliminó el archivo en la consola PS.
Nota. Dado que se ha detectado un problema, el símbolo ««No está escrito en la base de datos, lo hemos reemplazado por»|”. Entonces, si tiene que mostrar la ruta completa al archivo, puede realizar un reemplazo inverso al seleccionar de la base de datos:
$DataSet.file_name.Replace(‘|’,’’).
La secuencia de comandos para escribir la información del registro de eventos en la base de datos se puede ejecutar al final del día usando el Programador de tareas o adjuntarse a la eliminación de archivos EventID (On Event), que consume más recursos. Depende de los requisitos del sistema.
Consejo. Asegúrese de establecer el tamaño máximo del archivo de registro de eventos de seguridad para que sea lo suficientemente grande como para registrar todos los eventos del día. De lo contrario, tendrá que ejecutar la tarea de exportar los datos a la base de datos más de una vez al día o incluso en el disparador. Normalmente, el Tamaño máximo de registro en las estaciones de trabajo tiene que ser al menos 64 MB y 262 MB en los servidores de archivos de Windows. La opción de sobrescribir eventos antiguos debe dejarse habilitada (Sobrescribir eventos según sea necesario).
Si es necesario, puede crear una página web PHP simple para obtener la información sobre los usuarios que han eliminado archivos de una forma más conveniente.
Consejo importante. Si el registro contiene una entrada de que el usuario eliminó el archivo, no se apresure a interpretarlo como una acción deliberada o maliciosa. Muchos programas (especialmente las aplicaciones de MS Office) crean un archivo temporal al guardar los cambios y luego eliminan la versión anterior del archivo. En este caso, habilite el registro del nombre del proceso (ProcessName fileld), desde el cual se eliminó el archivo, y puede analizar los eventos de eliminación de archivos basados en él. O puede filtrar los eventos de dichos procesos, como winword.exe, excel.exe, etc.
Archivo de registro Eliminar eventos de auditoría en un archivo de texto
Si no desea utilizar un servidor de base de datos independiente, puede guardar los eventos de auditoría de eliminación de archivos en un archivo de registro de texto sin formato. Utilice este script de PowerShell para guardar su salida en un archivo de texto: $Outfile = "C:LogsDeleted-file-history-log.txt" $today = get-date -DisplayHint date -UFormat %Y-%m-%d Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | Foreach { $event = [xml]$_.ToXml() if($event) { $Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S" $File = $event.Event.EventData.Data[6]."#text" $User = $event.Event.EventData.Data[1]."#text" $strLog = $Computer + " " + $File + " " + $Time + " " + $User $strLog | out-file $Outfile –append } }
Entonces, hemos sugerido una idea y el modelo general del sistema para auditar y almacenar la información sobre los archivos eliminados en las carpetas de red compartidas. Si es necesario, se puede modificar fácilmente para satisfacer sus necesidades.
SI ESTO FALLA O NOS EQUIVOCAMOS TENEMOS QUE IR AL PORTAL AZURE
1.- NOS VAMOS AL SERVIDOR VIRTUAL – NOS VAMOS A LA OPCION DE CONSOLA DE SERIE, NOS EMCOMPRAMOS EL PROMPT SAC> Y AHÍ HACEMOS LO SIGUIENTE:
SAC> CMD <enter>
SAC>ch -si 1 <enter>
CAMBIA LA PANTALLA Y PUNSAMOS <ENTER> NO PIDE USERNAME – DOMINIO – PASSWORD Y AL PONER ESTOS DATOS ENTRAREMOS EN EL CMD DE LA MAQUINA, DESDE ESTA CONSOLA “POWERSHELL <enter>” Y YA ESTAMOS EN POWERSHELL Y PONEMOS LOS COMANDOS QUE CREAMOS OPORTUNOS.
COMANDO PARA VER VALORES DEL REGISTRO:
Get-ItemProperty -Path «HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp» | more
Cuando intenta conectarse a una máquina virtual, puede encontrarse con los siguientes escenarios:
En la captura de pantalla de la máquina virtual se muestra que el sistema operativo está totalmente cargado y esperando las credenciales.
Recibe los siguientes mensajes de error cuando intenta realizar una conexión del Protocolo de escritorio remoto de Microsoft (RDP):
Se desconectó la sesión remota porque no hay servidores de licencias de Escritorio remoto disponibles para proporcionar una licencia.
No hay ningún servidor de licencias de Escritorio remoto disponible. Los Servicios de Escritorio remoto dejarán de funcionar porque el período de gracia de este equipo terminó y no ha establecido contacto con un servidor de licencias de Windows Server 2008 válido como mínimo. Seleccione este mensaje para abrir la configuración del servidor host de sesión de Escritorio remoto a fin de usar el diagnóstico de licencias.
Se produjo un error de licencia mientras el cliente intentaba conectarse (tiempo de licencia agotado). Intente conectarse de nuevo al equipo remoto.
La conexión RDP parece estar bloqueada en el estado «Configurando sesión remota».
Causa
Este problema se produce si no hay ningún servidor de licencias de Escritorio remoto disponible para proporcionar una licencia que permita iniciar una sesión remota. Puede ser debido a varios escenarios, incluso si en la máquina virtual se configuró un rol de host de sesión de Escritorio remoto:
Nunca hubo ningún rol de administración de licencias de Escritorio remoto en el entorno y se terminó el período de gracia (180 días).
Una licencia de Escritorio remoto se instaló en el entorno, pero nunca se activó.
Una licencia de Escritorio remoto cuenta con licencias de acceso de cliente (CAL) y se ha activado. Sin embargo, hay más usuarios activos que CAL disponibles.
Una licencia de Escritorio remoto en el entorno no tiene insertadas CAL para establecer la conexión.
Se instaló una licencia de Escritorio remoto en el entorno. Hay CAL disponibles, pero no se han configurado correctamente.
Una licencia de Escritorio remoto cuenta con CAL y se ha activado. Sin embargo, algunos otros problemas en el servidor de licencias de Escritorio remoto impiden que se proporcionen las licencias en el entorno.
Conéctese a la máquina virtual mediante una sesión administrativa. Para ello, utilice una de las maneras siguientes:
Ejecute el comando siguiente:
mstsc /v:<Server>[:<Port>] /admin
En Azure Portal, vaya a la VM y seleccione Conectar en Configuración. En el panel derecho, seleccione Descargar archivo RDP para descargar un archivo de conexión.
Si no puede conectarse a la máquina virtual mediante una sesión administrativa, puede usar la consola serie de máquina virtual de Azure para acceder a la máquina virtual de la manera siguiente:
Acceda a la consola serie seleccionando Soporte &Solución de problemas>Consola serie. Si la característica está habilitada en la máquina virtual, puede conectar la máquina virtual correctamente.
Creación de un nuevo canal para una instancia CMD.
Escriba CMD para iniciar el canal y obtener el nombre del canal.
Cambie al canal que ejecuta la instancia de CMD. En este caso, debe ser el canal 1:
ch -si 1
Presione Entrar otra vez y escriba un nombre de usuario y una contraseña válidos y un identificador de dominio o local para la máquina virtual.
Compruebe si la máquina virtual tiene habilitado un rol de host de sesión de Escritorio remoto. Si el rol está habilitado, asegúrese de que funciona correctamente. Abra una instancia CMD con privilegios elevados y siga estos pasos:
Use el siguiente comando para comprobar el estado del rol de host de sesión de Escritorio remoto:
Después de realizar cualquier cambio en el registro, reinicie la máquina virtual.
Si no dispone de CAL o no necesita más de dos usuarios simultáneos, elimine el rol de host de sesión de Escritorio remoto. A continuación, el RDP se configurará de nuevo para permitir solo dos conexiones RDP simultáneas a la máquina virtual:
Asegúrese de que la máquina virtual puede conectarse al servidor de licencias de Escritorio remoto. Puede probar la conectividad con el puerto 135 entre la máquina virtual y el servidor de licencias:
Si un servidor de licencias de Escritorio remoto está configurado y en buen estado, debe asegurarse de activar el servidor de licencias de escritorio remoto con CAL
Cuando configuramos una cuenta IMAP en Outlook las bandejas subscritas cuelgan de bandeja de entrada, si queremos que este al mismo nivel tenemos que irnos a las configuración de cuentas de correo y dentro de la configuración, buscamos «Ruta de acceso de la carpeta raíz» poner INBOX.
Cuando lo pongamos queda al mismo nivel pongo imágenes para ver diferencia
Después de las actualizaciones encontramos que nos pide de nuevo las credenciales de nuestra conexión de Escritorio Remoto y aparece un mensaje, alertando que las credenciales no funcionaron:
Para solventar este problema, tenemos que deshabilitar la propiedad Credential Guard de la siguiente forma:
Ejecutamos: GPEDIT.msc
Vaya a Configuración del equipo >Plantillas administrativas>System>Device Guard>Activar seguridad basada en virtualización. En la sección «Configuración de Credential Guard», establezca el valor desplegable en «Deshabilitado»: