TIP: Guía de instalación de SQL Server 2008 R2 paso a paso

  • Introducción.
  • Preparación del entorno.
  • Formateo de NTFS a bloques de 64kb.
  • Log on as a service.
  • Lock pages in memory.
  • Instant File Initialization.
  • Proceso de instalación.
  • APÉNDICE.
  • Configuración de seguridad básica.
  • Autores.
    Enrique Catala Bañuls
    Rubén Garrigos
    Enrique Puig

Introducción

La instalación de SQL Server 2008 R2 es algo en lo que Microsoft como viene siendo habitual, ha puesto un marcado énfasis para producir un sistema claro y sencillo que nos lleve al éxito con un mínimo esfuerzo. Por otro lado, durante el proceso, quizás sea bueno conocer algunos aspectos concretos del mismo para producir a la primera una instalación limpia, correcta y alineada con la arquitectura de nuestro entorno empresarial.

Esta guía de instalación está centrada en el proceso de instalación de nuevas instancias del motor relacional de SQL Server 2008 R2 de una forma gráfica y rápida.

Si se desea una guía mucho más detallada y completa del proceso de instalación, se recomienda seguir el artículo oficial de los libros en pantalla de SQL Server 2008 R2 que puede encontrar aquí: http://msdn.microsoft.com/en-us/library/ms143219.aspx

Para la realización de esta guía se ha contado con el siguiente software:

  • Windows Server 2008 R2 Enterprise Edition actualizado con Windows Update
  • SQL Server 2008 R2 Enterprise Edition x64 RTM

Preparación del entorno

Si el entorno de producción involucra un Windows Server 2008, y desde las herramientas del propio sistema operativo se han creado las particiones, este apartado no hace falta validarlo puesto que en forma predeterminada realiza un alineamiento de particiones de 1Mb:

Referencia: http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Perf-tun-srv.docx (página 30, sección DISKPART)

Si por el contrario, el entorno de producción involucra un Windows Server 2000 o 2003, o el subsistema de discos ha sido particionado bajo las herramientas administrativas de un Sistema Operativo previo, se recomienda realizar un alineamiento de las particiones donde se albergarán los ficheros .mdf y .ldf de las Bases de datos utilizando diskpart.

Nota: Este diagrama se corresponde con una unidad de almacenamiento en forma predeterminada de NTFS (4kb). El diagrama no se encuentra a escala (ver que los trozos 1 y 2 tienen el mismo tamaño a pesar de no serlo realmente)

Asumiendo un valor de 64kb por banda del disco, existen 8 sectores de 512B por cada clúster de 4Kb NTFS y existen 16 clústeres de 4Kb por cada banda de 64Kb.

Nótese que existen sectores ocultos (63 en forma predeterminada en el ejemplo desalineado y 64 en el ejemplo alineado)

En el ejemplo, la línea 3 se encuentra desalineada mientras que la 4 está alineada

Teniendo esto presente, se puede ver como cada lectura enésima, produce un salto en la banda en el caso de los sectores desalineados, debido a que el último clúster de 4Kb no ha cabido completamente en la misma y se encuentra en otra diferente. Esto produce que al realizar la lectura, se tengan que realizar dos accesos a disco.

Con el valor en forma predeterminada de 4Kb por clúster, cada 16 lecturas, se tiene que realizar una lectura extra.

Para conocer el estado del alineamiento de las particiones actualmente, podemos lanzar la siguiente consulta WMI desde powershell:

gwmi –query “SELECT Name,Size,StartingOffset from Win32_DiskPartition”

Siendo Name, la ubicación proporcionada por el subsistema de disco para dicha partición, Size el tamaño de la misma, y StartingOffset la posición de comienzo de la misma, dentro del disco.

Para más información sobre alineamiento de particiones: http://technet.microsoft.com/en-us/library/cc766465.aspx sección “alignment

Formateo de NTFS a bloques de 64kb

Los discos que alberguen los ficheros de log y datos se han de formatear a 64kb por bloque para mejorar el rendimiento de SQL Server.

Con ello favorecemos que se almacenen en un mismo bloque, lo que se denominan “extensiones” (conjuntos de 8 páginas). De esta forma se mejorarán las lecturas en los casos en los que SQL Server decida realizar operaciones de lectura adelantada.

Referencia: http://download.microsoft.com/download/d/9/4/d948f981-926e-40fa-a026-5bfcf076d9b9/SAP_SQL2005_Best%20Practices.doc (página 67)

Log on as a service

Se recomienda definir un grupo de usuarios dentro del dominio que ejecute los servicios de SQL Server. Estos usuarios más adelante los veremos reflejados en el proceso de instalación (ver Figura 16). Si el servicio va a estar dentro de un entorno clúster, para que no ocurra ningún problema al iniciar los servicios, se recomienda dar a dichos usuarios el permiso de “log on as a service”.

Para ello podemos entrar en “Administrative Tools” -> “Local Security Policy” y mediante botón derecho dentro de “Local Policies”->”User Rights Assignment”->”Log on as a service”, añadimos el grupo.

Lock pages in memory

Siempre es recomendable configurar “lock pages in memory” para SQL Server, sobre todo en entornos actuales con más de 8 Gb de RAM.

Referencia: http://technet.microsoft.com/en-us/library/ms190730.aspx

Instant File Initialization

Para poder sacarle ventaja a las capacidades de inicialización instantánea de ficheros, hemos de agregar el permiso SE_MANAGE_VOLUME_NAME a la cuenta del servicio que levante SQL Server. Los usuarios de administración locales de Windows poseen dicho permiso habilitado, pero dado que se presupone que un usuario con permisos mínimos del dominio levante los servicios (ver figura 16), hemos de agregarle dichos permisos.

Dicho permiso se concede cuando les añadimos la política de seguridad “Perform Volume Maintenance Task”.

Referencia: http://msdn.microsoft.com/en-us/library/ms175935.aspx

Proceso de instalación

Una vez preparado el sistema para que SQL Server de partida ya posea una configuración óptima, procedremos a seguir los pasos siguientes para instalar una nueva instancia de SQL Server 2008 R2 sobre el mismo:

1.      El primer paso es introducir el DVD o montar la imagen .iso de SQL Server 2008 R2.

Figura 1

Es muy probable que el propio instalador de SQL Server 2008 R2 nos pida actualizar el sistema para poder proceder con la aplicación de instalación de SQL Server. En ese caso nos saldrá una pantalla como esta donde se nos indicará que va a proceder con la actualización del sistema.

Figura 2

Despues de dar a OK, se procederá con la instalación. Dependiendo de la actualización a realizar sobre Windows Server, puede que nos parezca que el sistema está inactivo o que el proceso instalador ha dado algún error puesto que desaparecerá de la pantalla durante un par de minutos.

Si vamos al explorador de tareas, podemos ver como realmente está realizando la istalación que previamente nos ha anunciado.

Figura 3

Después de esperar durante alrededor de 1-2 minutos (dependiendo del equipo), nos aparecerá por fin el instalador de SQL Server (Ver figura 4).

NOTA: En ocasiones dependiendo del estado de actualización del sistema operativo Windows puede que requiera aplicar actualizaciones de Windows Installer o incluso .NET y que se pida reiniciar. Se hace hincapié de nuevo en que el entorno sobre el que se ha elaborado dicho artículo se encuentra al dia en actualizaciones de Windows.

Figura 4

Llegados a este punto, dado que el artículo se centra exclusivamente en la instalación de una instancia SQL Server 2008 R2, iremos directamente al apartado “Installation”.

En cualquier caso, en la primera pantalla denominada “Planning”, podremos encontrar la documentación sobre instalación de SQL Server 2008 R2 así como la aplicación de chequeo de sistema para validar instalaciones futuras de SQL Server 2008 R2 o el SQL Server Upgrade Advisor que queda fuera del ámbito de este artículo y es la aplicación con la que podemos analizar migraciones de versiones inferiores hacia SQL Server 2008 R2.

Figura 5

Una vez en la sección “Installation” (ver Figura 5) procederemos al apartado “New installation or add features to an existing installation” con la que instalaremos una nueva instancia de SQL Server 2008 R2 a nuestro equipo.

Una vez hecho click en dicha opción procederemos con la instalación siguiendo los pasos de las imágenes que se pueden ver a continuación (ver Figura 6).

NOTA: En este artículo nos vamos a centrar en instalar instancias únicas de SQL Server. Si lo que queremos es instalar SQL Server 2008 R2 en clúster para alta disponibilidad, se recomienda al lector la lectura del siguiente post: “Como instalar un clúster de SQL Server 2008 en Windows Server 2008

Figura 6

Como vemos en la figura 6, antes de empezar el instalador realiza unos chequeos de integridad del sistema para comprobar que está todo listo para la instalación. Si por ejemplo tuviéramos el sistema esperando para ser reiniciado por cualquier otra instalación previa anterior, no nos dejaría continuar.

Figura 7

Antes de comenzar, es mejor que tengamos el código de licencia preparado (podríamos instalar si no fuera así en modo evaluación).

Figura 8

Una vez validado el código de licencia de SQL Server 2008 R2 se nos mostrarán los términos de la licencia que tendremos que aceptar.

Figura 9

Una vez aceptados los términos, en la Figura 9 podemos observar como se realizan de nuevo una serie de chequeos previos a la instalación, que debemos cumplir antes de proseguir.

En este caso, comentar únicamente que siempre que tengamos activo el firewall de Windows, el asistente nos dará un Warning el apartado “Windows Firewall” (Ver figuras 9 y 10)

Figura 10

Esto no nos impedirá la instalación, simplemente se nos está informando que tengamos cuidado de habilitar las reglas en el firewall de Windows necesarias para permitir la conexión de clientes remotos hacia el servicio de SQL Server 2008 R2.

Entre otras cosas, conviene recordar que a menos que sea modificado (cosa que es recomendable como buena práctica) el puerto por defecto que escucha SQL Server 2008 R2 es el 1433. Ver sección apéndice para más información sobre seguridad.

Una vez hecho clic sobre el botón siguiente, se nos pedirá qué Rol vamos a instalar de SQL Server 2008 R2 (ver figura 11)

Figura 11

Puesto que lo que vamos a realizar es una instalación de instancia única de SQL Server 2008 R2, nos quedaremos con la primera de las opciones que salen (SQL Server Feature Installation).

Hecho esto, la siguiente pantalla que podemos ver en la Figura 12, nos va a requerir qué servicios y características de SQL Server 2008 R2 vamos a desear instalar.

Figura 12

Puesto que este artículo está centrado en una instalación de motor relacional de SQL Server 2008 R2, en la imagen de la Figura 12 se pueden observar qué características y servicios se recomienda instalar.

1.      Database Engine Services

Se trata del motor relacional de SQL Server, justo lo que queremos instalar.

La instalación de SQL Server Replicación se recomienda instalar solo si la instancia va a formar parte de alguna manera en algún rol de replicación. Lo mismo ocurre con Full-Text Search.

Como Buena práctica, siempre es recomendable en cualquier instalación de cualquier software, solo instalar aquellas características de las cuales se va a hacer uso. Se deja de cualquier forma al lector que tome la decisión de instalar o no dichas características.

En nuestro ejemplo, las hemos marcado porque de antemano sabemos que esta instancia en un futuro hará uso de ambos servicios.

2.      Business Intelligence Development Studio

Tambien conocido como BIDS, se trata de una versión de Visual Studio con soporte para la creación de proyectos de inteligencia de negocio como Integration Services, Reporting Services o Analysis Services.

Puesto que como veremos más adelante, vamos a querer instalar el servicio de SQL Server Integragion Services, es recomendable marcar esta casilla.

3.      Client Tools Connectivity

Librerias de acceso SQLNCLI para comunicación entre clientes y servidores SQL Server

4.      Integration Services

Pese a que este servicio no es puramente relacional, siempre es útil instalarlo junto al motor relacional porque es habitual realizar procesos de carga y transformación de datos utilizando SQL Server Integration Services.

5.      Management Tools – Basic

En este caso, es buena idea tener instaladas las herramientas de administración de SQL Server para emergencias (por si solo pudiéramos logear localmente por cualquier motivo). Se instalarán: SQL Server Management Studio, SQLCMD y el proveedor powershell para SQL Server (sqlps.exe)

6.      Management Tools – Complete

Añade soporte extra para SQL Server Management Studio con conexion a Reporting Services, Analysis Services e Integration Services

Añade las herramientas SQL Server Profiler, Database Tuning Advisors.

Al igual que el punto 5, se recomienda instalar para emergencias, no porque vayamos a utilizarlo como software de acceso y/o análisis habitual.

Una vez seleccionados los componentes que deseemos, se realizará un nuevo chequeo enfocado en este caso a detectar posibles incompatibilidades o inconsistencias a la hora de instalar los componentes y características que se han seleccionado especialmente (Ver figura 13).

Figura 13

En la siguiente imagen, la figura 14, vamos a indicar tanto la ruta donde desplegará los binarios de SQL Server, como el nombre de la instancia que le queramos dar (en el caso de que queramos).

El dar un nombre a la instancia o no, depende de criterio personal. Solo hay que tener en cuenta que únicamente se permite una instancia con nombre por defecto y que no podremos elegir MSSQLSERVER. Por tanto, si ya tenemos una instancia con nombre por defecto, la única opción que podríamos escoger es la de Named Instance y asignar un nombre.

Figura 14

En este caso, le hemos dado un nombre de instancia “SQL2008R2”. Puesto que es posible instalar más de una única instancia de SQL Server en una misma máquina, si existieran otras instancias en la máquina, en el DataGrid que aparece en el centro de la figura 14 lo podríamos detectar para evitar dar un nombre que ya estuviera asignado.

s

Figura 15

En la figura 15 podemos apreciar un breve resumen relativo al espacio en disco requerido y la ubicación raíz de instalación, pero esto no quiere decir que ya hayamos terminado de configurar la instalación.

Si no cumpliéramos con el espacio de disco mínimo requerido no se podría continuar con la instalación.

Como vemos en la figura 16, ahora toca el turno de configurar las cuentas del servicio y el collation.

Figura 16

En la Figura 16 podemos apreciar que se nos pide introducir una cuenta de usuario para arrancar todos y cada uno de los servicios que hayamos requerido instalar.

Como buena práctica se recomienda utilizar un usuario de dominio creado explícita y exclusivamente para el servicio concreto del que estemos hablando. Además, se recomienda que dicho usuario tenga los mínimos privilegios y permisos posibles.

En la imagen se puede apreciar como cada servicio de SQL Server que se ha solicitado instalar, posee una cuenta de dominio diferente.

Una vez asignados los usuarios que levantarán los servicios de SQL Server 2008 R2, procederemos a configurar el collation de la instancia (Ver figura 17).

Figura 17

En la figura 17 podemos ver cómo modificar el collation que nos propone SQL Server por defecto (dependerá del idioma del usuario que esté instalando SQL Server en ese momento).

Es de vital importancia que se tenga claro el collation a utilizar, puesto que un error en su elecciónrequerirá un trabajo duro para cambiarlo (en ocasiones incluso sale a cuentas reinstalar de nuevo toda la instancia de SQL Server).

Por ejemplo, si la instancia que estamos instalando va a albergar bases de datos que ya existen en otras instancias actualmente, es altamente recomendable que asignemos el mismo collation que hay en la instancia de SQL Server de donde provienen. Esto nos evitará futuros problemas de conflicto de collations y ordenaciones fruto de una mala elección.

NOTA: Para conocer el collation de una instancia actual lanzar la siguiente consulta:

selectSERVERPROPERTY(N’Collation’)

Si por el contrario la instancia es nueva y albergará nuevas bases de datos que estamos en potestad de asignar un collation en este momento, recomendamos utilizar collations de Windows. Los collations de SQL Server se siguen manteniendo por compatibilidad hacia atrás y si no es requerido se recomienda utilizar los de Windows.

Figura 18

En la imagen de la Figura 18 podemos ver qué configuraciónes predeterminadas a nivel de motor relacional podemos realizar:

  • Asignar un login concreto al rol sysadmin
  • Crear un password para el usuario sa
  • Asignar directorios predeterminados (Ver Figura 19)
  • Asignar el estado de la configuración FILESTREAM (Ver Figura 20)

Figura 19

En la Figura 19 podemos ver donde nos asigna de forma predeterminada SQL Server las rutas de:

  • Raiz de instalación de SQL Server
  • Directorio de datos predeterminado para nuevas BBDD y ficheros
  • Directorio de logs predeterminado para nuevas BBDD y ficheros
  • Directorio donde se creará el fichero de datos para tempdb
  • Directorio donde se creará el fichero de logs para tempdb
  • Directorio predeterminado de copias de seguridad

Todos estos directorios pueden ser modificados a posteriori, pero este quizás también sea un buen momento para dejarlo listo.

Figura 20

Desde la versión de SQL Server 2008 podemos disfrutar de un nuevo tipo de datos denominado Filestream, que obviamente también viene con SQL Server 2008 R2. Si vamos a hacer uso del mismo, en esta pantalla podremos configurar sus tres estados posibles:

a.      Habilitado para T-SQL

b.     Habilitado para acceso a través de sistema de ficheros localmente

c.      Habilitado para acceso a través de sistema de ficheros local y remotamente

Como siempre, se trata de una característica que podremos habilitar a posteriori y se recomienda no habilitarla si sabemos de antemano que no la vamos a utilizar.

Una vez llegados a este punto, hemos configurado todo lo que teníamos que configurar para la instalación de SQL Server y procederemos a las pantallas de validación final y confirmación de elecciones.

Figura 21

En la Figura 21 Microsoft nos pregunta si deseamos que se envíen errores de reporte para los servicios que no poseen interactuación humana. Esto que es obviamente de libre elección, recordemos que ayuda a mejorar el soporte que nos brinda Microsoft y a corregir posibles bugs de producto.

Figura 22

Figura 23

En la figura 23 podemos ver un resumen de las características y servicios que se van a instalar y donde, y será el último paso a realizar hasta la instalación de SQL Server 2008 R2

Figura 24

Figura 25

Una vez terminado el proceso de instalación, ya podremos comenzar a trabajar con SQL Server 2008 R2 inmediatamente, puesto que no será necesario reinicioalguno.

APÉNDICE

Configuración de seguridad básica

Permisos de sysadmin

De forma predeterminada, los miembros de BUILTINAdministrators poseen derechos de administración. Se recomienda evitar que ninguno de los inicios de sesión sea incluido en el grupo de usuarios BUILTINAdministrators

Permisos de la cuenta de servicio de SQL Server

Se recomienda que los servicios de SQL Server sean iniciados por un una cuenta del dominio, y que esta misma tenga los mínimos permisos necesarios (algunos de los que debe tener ya se han enunciado anteriormente) para minimizar un potencial riesgo de seguridad en caso de exploit futuro.

Por ello, se recomienda crear usuarios del dominio con los mínimos privilegios posibles para levantar los servicios de SQL Server, SQL Server Agent, Reporting Services y Analysis Services

Sql Server Auditing

Asegurarse que existe la auditoria de accesos fallidos. Con ella, el sistema captura tanto intentos infructuosos a SQL Server de usuarios Windows y SQL. De esta forma se pueden detectar ataques por fuerza bruta

Puerto de escucha de SQL Server

Se recomienda cambiar el puerto de escucha de SQL Server 2008 R2 para que no sea utilizado el puerto en forma predeterminada (1433).

Ofuscar el servicio SQL Server a conexiones externas

Suele ser común pensar en detener el servicio SQL Browser para dificultar la labor de detección de instancias de SQL Server en la red. Ciertamente, este servicio si se para, producirá que no podamos realizar consultas a ningún sitio para determinar el puerto y nombre de instancia al que conectarnos…

El problema de detener el servicio de SQL Browser es que dicho servicio no solo es utilizado para eso, sino que el detenerlo puede dar lugar a verdaderos quebraderos de cabeza en según qué escenarios (clustering, conexión DAC con nombre de instancia, etc…)

Lo cierto es que no es necesario detener el servicio para “ofuscar” la conexión hacia SQL Server, puesto que a nivel de protocolos de red, es posible marcar la instancia como “oculta”, de forma que solo conociendo su nombre de instancia y puerto, seamos capaces de conectarnos a ella.

Según se puede apreciar en la imagen, al hacer clic sobre “Protocols for xxxx”, disponemos de la opción de ocultar la instancia (que en forma predeterminada está a No).

Con esto no queremos dar la sensación al lector de que el servicio se encuentra a salvo de detectores de SQL Server, pero al menos se lo ponemos más difícil.

Ir al contenido