Professional Documents
Culture Documents
Ing. Cedric Simon – Tel: 2268 0974 – Cel: 8888 2387 – Email: c e d r i c @ s o l u c i o n j a v a . c o m – Web: www.solucionjava.com
y sintonización de
Microsoft SQL Server
2000 – 2005 – 2008
SolucionJava.com
Índice
1 Introducción al curso.....................................................................................................................................................................5
1.1Objetivo de este curso.............................................................................................................................................................5
1.2Manual del alumno.................................................................................................................................................................5
1.3Ejercicios prácticos.................................................................................................................................................................5
1.4Requisitos para atender a este curso.....................................................................................................................................5
1.5Soporte después del curso.......................................................................................................................................................5
2INSTALACIÓN DEL SERVIDOR.................................................................................................................................................6
2.1Planificación............................................................................................................................................................................6
2.1.1Requisitos materiales.........................................................................................................................................................6
2.1.1.1Para SQL Server 2000:..............................................................................................................................................6
2.1.1.2Para SQL Server 2005:..............................................................................................................................................6
2.1.1.3Para SQL Server 2008:..............................................................................................................................................6
2.1.2Requisitos de software......................................................................................................................................................7
2.1.2.1SQL Server 2000.......................................................................................................................................................7
2.1.2.2SQL Server 2005.......................................................................................................................................................7
2.1.2.3SQL Server 2008.......................................................................................................................................................7
2.1.3Requisitos de sistema operativo........................................................................................................................................7
2.1.3.1SQL Server 2005.......................................................................................................................................................7
2.1.3.2SQL Server 2008.......................................................................................................................................................7
2.1.4Requisitos de memoria......................................................................................................................................................8
2.1.4.1Memoria mínima recomendada con SQL Server 2000:............................................................................................8
2.1.4.2SQL Server 2005 32 bits...........................................................................................................................................8
2.1.4.3SQL Server 2008.......................................................................................................................................................8
2.1.5Requisitos de disco............................................................................................................................................................8
2.1.5.1SQL Server 2000.......................................................................................................................................................9
2.1.5.2SQL Server 2005.......................................................................................................................................................9
2.1.6Determinar las cuentas apropiadas para los servicios SQL Server y SQL Agent.............................................................9
2.1.7Determinar el modo de autenticarse..................................................................................................................................9
2.1.8Intercalación: determinar el juego de caracteres...............................................................................................................9
2.1.9Seleccionar la librería de red.............................................................................................................................................9
2.1.10Decidir del modo de licencias clientes..........................................................................................................................10
2.2Instalación..............................................................................................................................................................................10
2.3Múltiples instancias...............................................................................................................................................................10
2.4Otras informaciones útiles....................................................................................................................................................10
3CREACIÓN DE BASES DE DATOS...........................................................................................................................................11
3.1Bases de datos del sistema ...................................................................................................................................................11
3.1.1La base de datos master...................................................................................................................................................11
3.1.2La base de datos model...................................................................................................................................................11
3.1.3La base de datos msdb.....................................................................................................................................................11
3.1.4La base de datos tempdb.................................................................................................................................................11
3.2Bases de datos de usuarios ...................................................................................................................................................11
3.3Configuración........................................................................................................................................................................11
3.3.1Intercalación....................................................................................................................................................................11
3.3.2Archivos de datos............................................................................................................................................................12
3.3.3Registros de transacción..................................................................................................................................................12
4TABLAS E INDICES....................................................................................................................................................................13
4.1Creación ................................................................................................................................................................................13
4.2Uso .........................................................................................................................................................................................13
©Copyright Cédric Simon, 2008 Versión 1.0 Reproducción prohibida
Curso de administración y sintonización de Microsoft SQL Server Pagina 3 / 23
10.2Red........................................................................................................................................................................................22
11Ejercicios......................................................................................................................................................................................23
1 Introducción al curso
1.1 Objetivo de este curso
En este curso vamos a ver como administrar y sintonizar Microsoft SQL Server.
Este curso no cubre todos los aspectos ni todas las opciones de administración, enfocando en las más comunes. El
foco está más puesto al nivel de sintonización de un servidor SQL.
Si el alumno tiene dificultades en un u otro capitulo, el debe sentirse libre de pedir explicaciones adicionales al
profesor.
Antes de instalar SQL Server 2005 Express Edition, debe descargar e instalar .NET Framework 2.0
Se requiere el SP1 de Microsoft Internet Explorer 6.0 o posterior para SQL Server 2005 Management Studio,
Business Intelligence Development Studio y el componente Diseñador de informes de Reporting Services.
2.1.2.3 SQL Server 2008
El programa de instalación de SQL Server requiere Microsoft Windows Installer 3.1 o una versión posterior, y
Microsoft Data Access Components (MDAC) 2.8 SP1 o una versión posterior.
● Windows Server 2008 64-bit x64 Data Center Edition RC0 o una versión posterior3,5
● Windows Server 2008 64-bit x64 Enterprise Edition RC0 o una versión posterior3,5
● Windows Server 2003 Service Pack 2
● Windows Server 2003 Enterprise Edition Service Pack 2
● Windows XP Professional Service Pack 2
● Windows Server 2003 64-Bit x64 SP23
● Windows Server 2003 64-Bit x64 Enterprise Edition SP23
● Windows Server 2003 64-Bit Itanium SP23
● Windows Server 2003 64-Bit Itanium Enterprise Edition SP23
Para Windows SQL Server 2008 64 bits: igual a la lsita de arriba menos las versiones que no son 64 bits.
Puede necesitarse memoria adicional, según los requisitos del sistema operativo.
2.1.4.3 SQL Server 2008
Se requiere un mínimo de 512 MB de memoria, pero se aconseja tener 1 GB o más disponible.
Hay que tener cuidado que el cache de escritura del controlador de disco que utiliza la base de datos este
APAGADO, a menos que haya sido diseñado específicamente para manejar bases de datos. En otros casos, podría
generar corrupción de la base de datos.
2.1.6 Determinar las cuentas apropiadas para los servicios SQL Server y SQL
Agent
Cada servicio de SQL Server representa a un proceso o conjunto de procesos para administrar la autenticación de
las operaciones de SQL Server con Microsoft Windows. En este tema se presenta la configuración predeterminada
de los servicios en esta versión de SQL Server, así como las opciones de configuración de los servicios de SQL
Server que se pueden establecer durante la instalación de SQL Server.
Durante la instalación se le pedirán bajo cual usuario deben de correr estos servicios.
El modo mixto es necesario, por ejemplo, si quieren desarrollar un sistema que se conecta a SQL Server con una
conexión compartida, o desde un sistema que no fue autenticado en el dominio de Windows.
La intercalación se define a nivel del servidor, y luego se puede sobrescribir a nivel de base de datos, y a nivel de
campo de una tabla.
La intercalación tiene tambien efecto sobre la ordenación de datos, y la comparación entre datos.
2.2 Instalación
Además de las opciones explicadas en el punto anterior, se puede seleccionar cual(es) componentes de SQL
Server usted quiere instalar.
La instalación es muy sencillas si usted ya tiene la planificación de todas las opciones clara (ver punto anterior).
Cada instancia de SQL Server actuará como un servidor aparte, sin compartir datos entre instancias.
En la instalación, se le pide de utilizar la instancia por defecto, o una instancia nombrad. Solo puede haber una
instancia por defecto, pero pueden haber cero a varias instancias nombradas.
Hay que notar que usar múltiples instancias de SQL server aumenta la tarea de administración y aumenta la
cantidad de recursos necesarios en el servidor.
Debido a su importancia, un respaldo corriente de esta base de datos es crítico para que pueda arrancar el servidor
despues de una restauración.
En caso de pérdida de esta base de datos, solo podrá arrancar el servidor usando la versión original que viene en el
CD de instalación y ligando las bases de datos de usuario usando una herramienta que se llama 'rebuildm.exe', que
viene con el servidor.
Cada vez que usted crea una nueva base de datos (incluso cuando el servidor inicia y (re)crea la base de datos
tempdb), el contenido de model esta copiado hacia la nueva base de datos para establecer los objetos por defecto
de la nueva base.
Esta base de datos esta recreada a cada reinicio del servidor, con un tamaño inicial de 8 MB, y luego crece hasta el
tamaño requerido por la aplicación. Para evitar este trabajo de crecimiento, se puede definir un tamaño inicial mas
grande, cerca de lo que se estima necesario.
Al instalar SQL Server se pueden instalar bases de datos de usuario de muestra, como Northwind o pubs, que
pueden servir de prueba.
3.3 Configuración
La configuración correcta de las bases de datos es crítica para un desempeño óptimo de su servidor.
3.3.1 Intercalación
Ver el punto anterior (planificación). Permite sobrescribir la intercalación definida a nivel de servidor para la nueva
base de datos.
Lo ideal es de tener uno o varios archivos para almacenar las tabas y otro(s) alojados en un disco físicamente
diferente para los índices.
Cuando se definirá luego una tabla/un índice, se podrá especificar cual archivo(s) de datos usted quiere utilizar para
almacenar esta información.
Lo ideal es de tener esto archivos en un disco físicamente diferente de los archivos de datos.
4 Tablas e indices
4.1 Creación
Al crear una tabla,se definen los campos, la ubicación de los archivos, y opcionalmente la clave primaria, las claves
secundarias, y los índices.
4.2 Uso
Las tablas almacenan los datos, los indices mejoran la velocidad de búsqueda de datos en una tabla.
4.3.1 Tablas
A nivel de la definición de campos, escoge el tamaño exacto para los datos esperados. Escoger un tamaño más
grande va a ocupar más espacio, y entonces generar más actividad en el disco.
Toma también en cuenta el tamaño máximo de una fila, que no debería ser más que el tamaño de un bloque (por lo
general 8kb).
Son importantes también el tamaño inicial y el tamaño de crecimiento del archivo de datos. No hay valores normales
para estos parámetros ya que dependen de los datos a almacenar, y de la utilización y del crecimiento de ellos.
4.3.1.1 Tipos de datos de SQL Server Data Types
Númericos exactos
Type From To
bigint -9,223,372,036,854,775,808 9,223,372,036,854,775,807
int -2,147,483,648 2,147,483,647
smallint -32,768 32,767
tinyint 0 255
bit 0 1
decimal -10^38 +1 10^38 –1
numeric -10^38 +1 10^38 –1
money -922,337,203,685,477.5808 +922,337,203,685,477.5807
smallmoney -214,748.3648 +214,748.3647
numeric and decimal are Fixed precision and scale data types and are functionally equivalent.
Numericos aproximados
Type From To
float -1.79E + 308 1.79E + 308
real -3.40E + 38 3.40E + 38
Fechas
Type From To
datetime (3.33 milliseconds accuracy) Jan 1, 1753 Dec 31, 9999
smalldatetime (1 minute accuracy) Jan 1, 1900 Jun 6, 2079
Cadena de caracteres
Type Description
char Fixed-length non-Unicode character data with a maximum length of 8,000 characters.
varchar Variable-length non-Unicode data with a maximum of 8,000 characters.
varchar(max) Variable-length non-Unicode data with a maximum length of 231 characters (SQL Server 2005 only).
text Variable-length non-Unicode data with a maximum length of 2,147,483,647 characters.
Cadenas Binarias
Type Description
binary Fixed-length binary data with a maximum length of 8,000 bytes.
varbinary Variable-length binary data with a maximum length of 8,000 bytes.
varbinary(max) Variable-length binary data with a maximum length of 231 bytes (SQL Server 2005 only).
image Variable-length binary data with a maximum length of 2,147,483,647 bytes.
Otros tipos: sql_variant: Stores values of various SQL Server-supported data types, except text, ntext, and
timestamp. timestamp: Stores a database-wide unique number that gets updated every time a row gets updated.
uniqueidentifier: Stores a globally unique identifier (GUID). xml: Stores XML data. You can store xml instances in a
column or a variable (SQL Server 2005 only). cursor: A reference to a cursor. table: Stores a result set for later
processing.
4.3.2 Indices
Los índices aumentan mucho la velocidad de búsqueda, pero tienen también un costo de mantenimiento.
Por eso, hay que escoger los índices correctos, que dependerán de las consultas que se harán sobre la tabla.
Un índice agrupado (clustered) permite ordenar físicamente la tabla en este orden. Solo puede haber un indice
agrupado por tabla. Por lo general se usa para la clave primaria. Valores únicos permite evitar valores duplicadas en
un campo. Una tabla puede tener un máximo de 249 indices no agrupados.
Un índice puede ser compuesta de varios campos (max 16). Entre más campos, más eficiente será la búsqueda que
incluye dichos campos en filtro.
El relleno define el espacio libre para modificaciones de valores en el índice. Un campo que nunca se modificará
puede tener los índices rellenos. Una campo que se modificará (update) con frecuencia debería dejar un espacio
libre para estas modificaciones usando un factor de relleno <100.
4.3.3 Estadísticas
Las estadísticas indican al servidor como se presentan los datos en las tablas y los índices (cuantas filas, columnas,
valores únicas,...). Este permite al servidor decidir cual es según el el mejor camino para recuperar datos de una
consulta: cuales indices usar, orden de consulta de las tablas,...
Por eso, es muy importante mantener las estadísticas al día, después de cambios grandes en datos, o después de
un periodo de actividad.
5.2 Usuarios
Los usuarios pueden ser usuarios Windows o usuarios SQL.
Para que un usuario de Windows tenga acceso a SQL server, el debe estar definido (con derecho de acceso) a nivel
de SQL server, o pertenecer a un grupo Windows que esta definido (con derecho de acceso) en SQL server.
Existen también los roles que son conjuntos de derechos, que son detallados en el punto siguiente.
5.4 Permisos
Los roles de base de datos estándar y de aplicación se pueden definir y modificar a su gusto.
Un rol estándar otorga al usuario todos los derechos del rol al usuario al momento de conectarse.
A la diferencia, un rol de aplicación necesita ser activado manualmente (o vía una aplicación), entrando una clave de
acceso para activarlo. La clave se puede encontrar en el código, así que vía la aplicación un usuario podría tener
acceso a datos que no tiene acceso usando su usuario conectándose directamente a SQL Server.
6 Respaldo y reposición
6.1 Tipos de respaldos
Un respaldo completo es siempre necesario como base a los otros tipos de respaldos.
Un respaldo parcial puede servir a refrescar un ambiente de prueba con una copia de producción (reposición de un
respaldo completo), o reponer la producción hasta antes de una mala manipulación (respaldo completo + diferencial
+ logs).
Las bases de datos master y msdb son críticas para poder recuperar un sistema funcional ya que contienen
informaciones como las bases de datos de usuarios disponibles, las cuentas de usuarios, la configuración del
servidor, el histórico de los respaldos, los trabajos programados,...
Después de crear una nueva base de datos o agregar o re ubicar archivos de una base de datos, hay que respalda
Es importante también guardar regularmente copias de respaldo en un lugar lejano del servidor (otra sucursal, en
caja en el banco,...) para sobrevivir un desastre local (incendio, terremoto,...).
Es también buen costumbre de mantener un libro donde se anotan todos los respaldos (diarios), con la fecha, la
hora, y quien verifico que se hizo (o no) el respaldo esperado.
7.2 Tareas
Una tarea es un conjunto de acciones a ejecutar. Las tareas se pueden programar en el tiempo para ejecutarse sin
presencia física de alguien.
7.3 Alertas
Son acciones que se ejecutan cuando se produce un cierto evento. Usualmente se usan para monitorear errores y
tomar acciones específicas para este error.
Son como tareas que se pueden programar con un interface gráfico pre diseñado.
Un monitor rápido para ver el uso corriente de recursos en el sistema es el administrador de tareas de Windows.
El otro monitor que provee Windows es el monitor de performancias, que se llama teclando “perfmon” desde la línea
de comando. Ver detalles en:
http://www.microsoft.com/technet/prodtechnol/Windows2000Pro/reskit/part6/proch30.mspx?mfr=true
Si se pueden agregar fácilmente memoria, o multiplicar los CPU's disponibles, los discos están limitados por su
numero de revoluciones por minutos (RMP).
Lo común es 7,200 RMP, los discos de velocidad superior (pero más caros) tienen 10,000 o 15,000 RPM.
Se pueden usar sistema RAID para mejorar el rendimiento y dar tolerancia a fallos, pero no es suficiente si el resto
del diseño no está enfocado en disminuir y repartir al máximo el uso de los discos.
Para disminuir el uso de los discos, hay que escribir consultas lo más especificas posible (filtrando) y asegurarse
que los índices se usan siempre cuando es necesario. Se puede también guardar datos frecuentes en memoria a
nivel del cliente o de la aplicación, dependiendo del sistema que se conecta al servidor.
Para repartir el uso de los discos, hay que tratar de que las tablas, los indices, los logs, y el sistema operativo
tengan sus archivos en discos físicamente diferente. Eventualmente, las bases de datos o tablas más utilizadas se
pueden repartir también en discos diferentes.
Aumentando la memoria es una manera fácil y rápida de mejorar el rendimiento, hasta un cierto punto.
Es posible definir a nivel del servidor (si tiene más de 1 CPU) cuantos CPU se pueden utilizar para la base d datos.
Para defragmentar indices, existen dos comandos: DBCC INDEXDEFRAG (base_de_datos, tabla, indice) y DBCC
REINDEX (tabla, indice). La diferencia entre los dos es que REINDEX agara un bloqueo, y por eso es más rápido.
DBCC REINDEX (tabla) reconstruye todos los indices de una tabla.
Ver en la documentación de SQL Server los otros comando de DBCC que pueden ayudar en el mantenimiento del
servidor.
La analisis del archivo generdo permitirá detectar consultas SQL que afectan el rendimiento.
Si por lo general se ganan en rendimiento normalizando el esquema de la base de datos, en ciertos casos muy
específicos, puede ser necesario desnormalizar una parte del esquema repitiendo un campo en diferentes tablas.
9.4 Indices
Los índices permiten aumentar fantásticamente la velocidad de búsqueda de datos, pero tiene un pequeño costo a
nivel de escritura de datos, ya que hay que mantener el índice ademas de las tablas.
Teniendo los índices ubicados en un disco físicamente diferente de los datos ayuda en aumentar la velocidad de
búsqueda como la velocidad de escritura, ya que reparte los IO en discos diferentes.
SQL Server viene con una herramienta de analisis de ínidces, que se baza un archivo de traza del analizador, y
hace recomendaciones a nivel de indices.
9.5 Procedimientos
Los procedimientos pueden ayudar en mejorar el rendimiento ya que se ejecutan localmente y en lenguaje 'nativo'
del servidor.
Obligar el uso de procedimiento para recuperar datos permite evitar llamadas descontroladas al servidor.
9.6 Vistas
El uso de vistas para recuperar datos permite limitar llamadas descontroladas al servidor gracias a la consulta
'preparada' y ojala 'optimizada' de la vista, agregando todas o parte de datos de una o varias tablas ligadas.
10.2 Red
Debido a que los clientes se conectan vía la red, un sobrecargo de uso de la red puede producir bajo rendimiento a
nivel de los clientes. Lo mismo si se conectan vía Internet.
Una manera fácil de sospechar un problema de red es de abrir una conexión en el servidor mismo y compara el
rendimiento en el servidor con el rendimiento desde un cliente vía la red.
11 Ejercicios
1) Comprobar diferencias en tiempo de ejecución entre SELECT no_lab_test FROM [curso].[dbo].
[mtm_lab_presc2lab_test] y SELECT * FROM [curso].[dbo].[mtm_lab_presc2lab_test]
2) Comprobar diferencias en tiempo de ejecución entre el uso de un claúsula Where y sin
3) Comprobar diferencias en tiempo de ejecución entre el uso de un claúsula Where usando un índice y sin
4) Comprobar diferencias en tiempo de ejecución entre la importación de una tabla grande (copia de
mtm_lab_presc2lab_test) en una tabla hospedada en un grupo de archivo con incremento de 10% y otra
con un incremento de 50 MB
5) Comprobar diferencias en tiempo de ejecución entre la importación de una tabla grande (copia de
mtm_lab_presc2lab_test) en una tabla sin índice, y una tabla con muchos índices
6) Comprobar diferencias en tiempo de ejecución entre un update sobre una tabla grande (copia de
mtm_lab_presc2lab_test) que tiene un ínidice sobre el campo modificado, y cuando no tiene.
7) Probar todos los tipo de consulta SQL que le vienen a la mente, y analyza en plan de ejecución generado
por SQL Server para cada consulta
8) Corre las estadisticas sobre la base de datos.
9) Usar los diferentes comandos de DBCC.
10) Probar la herramienta de analisis de ínidces
11) Usar el monitor de performacias de Windows, y el administrador de tareas.
12) Prueba los niveles de seguridad , usando los derechos a nivel de usuario, grupo, y rol. Verifica los que pasa
cuando se desnego un derecho en algun nivel de seguridad.
13) Haga respaldo de la base de datos. Luego trata de reponerla hasta un cierto punto en el pasado.
14) Diseña un plan de respaldo en SQL Server y automatizalo
15) Abre el adminstrador de tareas y el monitor de performancias de Windows, y avergua lso que permiten ver.
16) Diseña una base de datos que respecta al máximo la 3ra forma normal, y pueda contener la información
siguiente
● Datos del cliente (nombre, apellido, tel, domicilio, etc...
● Productos más comprados por el cliente (productos preferidos del cliente)
● Lista de productos
● Invemtario
● Ordenes de compras
● Facturas de las compras