martes, 26 de enero de 2010
Borrador de tracks del próximo SQM SUMMIT 2010
Nuevo ebook sobre migración de SQL Server 2000 a SQL Server 2008
sábado, 4 de julio de 2009
Salimos en portada
Básicamente el resumen es que el servicio de healthcheck que hemos desarrollado desde SolidQ en la subsidiaria española, se ha lanzado en el mismísimo pentágono ;). Desde luego lo hemos lanzado en clientes igual de interesantes, pero este es uno de los más mediáticos y por los que se interesaron varios periódicos.
Aqui teneis la noticia con la que nos dieron una portada ni mas ni menos ;)
Por cierto, también salimos en Canal9, pero el vídeo lamentablemente no lo encuentro :(
jueves, 18 de junio de 2009
Reutiliza tus plantillas de perfmon de Windows 2003 en Windows 2008
Como sabeis, Windows Server 2008 introdujo una serie de cambios radicales en su herramienta de análisis de rendimiento. Aquello que antes era llamado “Performance Monitor” (perfmon.exe), ahora se llama “Realiability and Performance Monitor” (también su exe es perfmon.exe). Pero el cambio no se queda solo a nivel de nomenclatura, evidentemente, sino que se hace mucho mas poderoso intuitivo y jugueton…
Captura de Performance Monitor en Windows server 2003 (y XP)
Captura de Reliability and Performance Monitor en Windows Server 2008 (y vista)
Si recordamos, en Windows Server 2003, las plantillas tenían un formato basado en .htm. Dichas plantillas las podemos crear facilmente mediante perfmon.
Suponiendo que ya tenemos creado nuestro conjunto de contadores que deseamos capturar, si lo que queremos es incorporarlo sobre otro servidor, lo que haremos será exportarlo a un fichero .htm que copiaremos posteriormente a otro servidor e incorporaremos.
El siguiente proceso solo es válido para exportar/importar entre Windows 2003/XP como origen/destino:
- Exportar plantilla:
Botón derecho sobre el log que queramos exportar
- Copiar plantilla al servidor destino
- Incorporar plantilla tal y como se ve en la imagen:
Botón derecho sobre “Counter Logs” y luego “New Log Settings From…”
- Elegimos nuestro template…
Hasta aqui, todo normal, el problema viene cuando queremos incorporar la plantilla sobre un Windows Server 2008…porque el formato de las plantillas ha cambiado. Para empezar, la extensión es xml, lo cual ya nos da que pensar que no cargará los .htm ;)
Podeis probar a incorporar vosotros mismos un .htm y ver como no os deja, yo lo que voy a hacer es daros la solución, que pasa por utilizar la herramienta “logman” (que viene con Windows Server 2008) para exportar el template al formato de Windows Server 2008.
Para ello lo que tendremos que hacer es desde un Windows Server 2008, exportar las plantillas definidas en un Windows Server 2003 de forma remota:
NOTA: Ejecutado desde Windows Server 2008, siendo 10.1.1.100 un Windows 2003 con la plantilla “miplantilla” definida (ver imágenes mas arriba)
Tal y como se vé en la imagen, desde un Windows Server 2008 estoy pidiendo exportar el log “miplantilla” que se encuentra en el servidor 10.1.1.100, al formato xml en el fichero miplantilla.xml.
Una vez tenemos ya la plantilla definida en el formato compatible de Windows Server 2008, podemos incorporarla fácilmente siguiendo estos sencillos pasos:
- Ejecutar perfmon en Windows Server 2008
- Boton derecho sobre “Data Collection Sets->User Defined”
- Darle un nombre al data collection set sobre el que añadiremos la captura de datos mediante perfmon
- Seleccionar “Create from a template”
- Hacer click sobre “Browse” en lugar de utilizar las plantillas predefinidas
- Una vez ya está importado, podremos configurar la ruta de salida del fichero .blg, planificaciones horarias,…e incluso modificar aquello que estimemos oportuno.
Por tanto, como hemos visto, pese a que pueda ser algo traumático para un DBA o responsable de sistemas, todo aquello de “las grafiquitas” que tanto nos gustaba en 2003 y nos “tuneamos”, lo podemos reutilizar en 2008 sin problemas.
domingo, 3 de mayo de 2009
Forzar activación de Database Mail en el agente de SQL Server
En alguna ocasión me ha ocurrido que no he podido activar en el sistema de alertas del agente de SQL, el perfil de correo Database Mail. Sea como sea, por mas que le pinchaba sobre Database Mail, siempre me activaba SQLMail.
Para esas situaciones en las que el Management studio no quiere reaccionar, podemos hacerlo nosotros manualmente mediante el siguiente código T-SQL:
USE [msdb]
GO
EXEC msdb.dbo.sp_set_sqlagent_properties @email_save_in_sent_folder=1
GO
EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE',
N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent',
N'UseDatabaseMail',
N'REG_DWORD', 1
GO
EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE',
N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent',
N'DatabaseMailProfile',
N'REG_SZ',
N'solid'
GO
En este caso, donde pone “solid” pondremos el perfil Database Mail que queramos utilizar.
Solución al problema de tareas de mantenimiento fantasma
Un error que ocurría con las primeras ediciones de SQL 2005 para mi sorpresa parece que ha vuelto con SP3, me refiero a aquellos planes de mantenimiento corruptos que eran imposibles de borrar una vez los editabas en SQL Server Management Studio.
Recientemente en una instalación de W2K3 y SQL2K5 (ambos con todos los service packs instalados y actualizaciones de seguridad a la última en Abril 2009) he visto como ocurrian de nuevo los problemas con las tareas de mantenimiento:
The DELETE statement conflicted with the REFERENCE constraint
"FK_subplan_job_id". The conflict occurred in database "msdb", table
"dbo.sysmaintplan_subplans", column 'job_id'.
The statement has been terminated. (Microsoft SQL Server, Error: 547)
El error en cuestión se encuentra en uno de los procedimientos almacenados que se utilizan para borrar los jobs que genera el plan de mantenimiento para cumplir su función.
Existe solución al problema y consiste en la siguiente:
- En la BBDD msdb, editar el código del procedimiento almacenado: dbo.sp_delete_job
- Buscar el siguiente delete:
DELETE FROM msdb.dbo.sysjobs
WHERE job_id IN (SELECT job_id FROM #temp_jobs_to_delete)
- Insertar el siguiente código justo delante:
DELETE FROM sysmaintplan_log
where subplan_id in (select subplan_id from msdb.dbo.sysmaintplan_subplans
where job_id in (SELECT job_id FROM #temp_jobs_to_delete))
DELETE FROM msdb.dbo.sysmaintplan_subplans
where job_id in (SELECT job_id FROM #temp_jobs_to_delete)
- Ejecutar
Como podeis imaginar, por error no se han incluido dos referencias a tablas con información sobre los planes de mantenimiento a los que pertenece el job a eliminar y surge un error de clave ajena al intentar suprimirlo.
El problema lo he detectado con una instalación en cluster 2 nodos de Windows 2003 x64 Enterprise en ingles con SQL 2005 x64 Enterprise Castellano.
domingo, 19 de abril de 2009
Como instalar un cluster de SQL Server 2008 en Windows Server 2008 (1/2)
En un solo post tratar el tema completo quedaria muy largo por lo que es mejor dividirlo en dos. Para el primer post, hablaré de como clusterizar SQL Server 2008 sobre un entorno Windows 2k8 previamente clusterizado (cuya clusterización será la segunda entrega).
1 Instalar .NET 3.5 SP1
Es necesario disponer de .NET 3.5 sp1 antes de instalar SQL Server 2008. Como paso previo a la instalación de SQL Server, se puede planificar puesto que su instalación requiere reinicio. En cualquier caso, el propio proceso de instalación de SQL Server 2008 detecta si existe el runtime .NET 3.5 SP1 y si no es así, lo instala.
2 Instalar Windows Installer 4.5
Es necesario disponer de la version Windows installer 4.5 para poder realizar la instalación de SQL Server 2008. Puesto que el propio DVD de instalación de SQL Server ya lo posee, también se puede instalar durante el proceso de instalación. Se trata del Hotfix KB942288.
3 Instalación de SQL Server 2008 sobre Clúster de W2k8
El proceso de instalación del clúster de SQL Server 2008 requiere realizarse sobre un nodo del clúster de Windows Server 2008 previamente montado; además, al igual que en el caso de windows server 2008, se ha variado su configuración respecto a ediciones anteriores (para mejor). En este caso vamos a sacarle partido y lo que haremos es ni mas ni menos que instalar un cluster de un solo nodo de SQL 2008. Sé que parece extraño, pero esto es muy util. Hace unos meses en un cliente tuvimos un problema con las cabinas de un geocluster de windows; no viene al caso el problema pero la dicho problema no impidió que montaramos el geocluster, aunque durante un dia ese geocluster solo tenia un solo nodo ;)
3.1 Instalación del primer nodo del Clúster de SQL Server 2008
Una vez introducido el DVD de SQL Server 2008 sobre el servidor, se han de seguir los siguientes pasos:
- Clickear sobre “Instalación”
- Clickear sobre nueva instalación de SQL Server Failover cluster.
Una vez detectado que no se dispone de Windows Installer 4.5, se procede a su instalación (lo mismo ocurrirá con .NET 3.5 SP1 si no se detectara:
Una vez instalado, se comienza con las validaciones previas a la instalación de SQL Server
Una vez validados los prerrequisitos, se instalarán los ficheros necesarios para la instalación de SQL Server
El siguiente paso es introducir la clave de registro. Una vez introducida (que puede venir ya predefinida según la licencia), se procede a la validación del estado del cluster para su futura instalación, así como de la configuración del servidor y las necesidades del entorno necesarias para que la instalación llegue a buen puerto.
Como vemos en la imagen anterior, existen 3 advertencias en la instalación que nos avisan de posibles configuraciones que podrían afectar al funcionamiento de SQL Server. Las advertencias permiten continuar la instalación y hacen referencia a cosas que te recomienda revisar por simple seguridad hacia ti. Evidentemente, aqui variará los mensajes que te puedan dar en tu instalación pero independientemente de lo que sea, revísalos siempre para que no se te escape nada. Algunos mensajes que te puede dar:
- Advertencia sobre MSDTC. Si no vamos a utilizar este servicio, este aviso puede obviarse.
- Aviso de rendimiento en la configuración de red (si tienes TEAMING activado). Te advierte de una “posible” configuración de prioridades en las tarjetas de red, que podría ocasionar una pérdida de rendimiento de red.
- El tercer punto hace referencia a un aviso para que recordemos abrir los puertos del firewall necesarios para poder conectar externamente al servidor de SQL Server.
Una vez revisada la configuración, si pulsamos en siguiente, continuaremos con el proceso de instalación, donde seleccionaremos únicamente el motor de SQL Server y las herramientas cliente (en este ejemplo en concreto, hay mas servicios clusterizables)
Seleccionaremos el nombre virtual del clúster de SQL Server y el nombre de la instancia:
Solo habilitamos el modo de autentificación Windows para reducir la superficie de ataque, y agregamos un usuario específico o un grupo de usuarios del dominio como administradores de SQL Server.
Seleccionamos las rutas que queremos por defecto:
Configuraremos FILESTREAM si es necesario:
Por último ya solo falta que comience el proceso de instalación:
Una vez finalizada la instalación de SQL Server en el cluster, dispondremos de un cluster de SQL Server 2008 en un solo nodo.
Si abrimos el “Failover Cluster Administration”, podremos ver el estado actual de configuración de nuestro clúster.
Comprobamos que podemos acceder abriendo la consola de administración “SQL server Management Studio” y comprobando la versión de SQL Server (por ejemplo):
3.2 Adición de un nuevo nodo al clúster de SQL Server 2008
Llegados a este punto, ya tenemos montado el cluster de SQL Server, con la única salvedad de que es un cluster de un solo nodo (pero eso si, funcional). El siguiente paso evidentemente es recomendable porque cuando montamos un cluster, no lo hacemos en principio para tener un único nodo…en cualquier caso, ya sabeis que se puede trabajar con SQL Server en este momento y posteriormente cuando se pueda, configurar este paso tantas veces como nodos queramos tener.
Para ello, introduciremos el DVD de SQL server en el servidor que vamos a añadir al cluster de SQL 2008
NOTA: No insertar en el nodo ACTIVO
En este caso, lo que haremos será clickear sobre la opción de añadir un Nuevo nodo a un clúster existente.
De nuevo se realizan procesos de validación en este nodo, para detector inconsistencias. En este caso de nuevo aparecen advertencias. Pese a que puedan ser las mismas que antes, debemos comprobar que todo es correcto
Una vez detectado el clúster donde hemos de ingresar este nodo, lo que haremos será configurar las cuentas de servicio reintroduciendo los passwords de nuevo en el caso de nuestros inicios de sesión de base de datos y SQL Server Agent.
El resto del proceso son formularios donde nuestra única aportación será la de clickear en “siguiente” tras validar la información
Por último ya solo queda probar un failover si queremos comprobar que todo va a ir como toca y listo, a trabajar! ;)