You are on page 1of 320

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

LECCIN 1 Disear requerimientos CPU, memoria, y capacidad de almacenamiento. Considerar: RAID, tamao de las tablas, IO, transacciones por segundo, compresin de datos, memoria de acceso no uniforme (NUMA), capacidad tempdb 2 Disear instancias de SQL Server. Considerar : configuracin de la instancia, configuracin del rea de superficie, afinidad del CPU, asignacin de memoria, grado mximo de paralelismo (MAXDOP), collation 3 Disear la Base de Datos fsica y la ubicacin de los objetos. Considerar: colocacin de los ndices y del heap, archivos de datos y log, grupos de archivos, colocacin de las particiones, colocacin de los objetos grandes, catlogo de full text. 4 Disear una estrategia de migracin, consolidacin, y actualizacin. Considerar: multi-instancia, instancias y collation de Base de Datos, objetos a nivel de servidor y a nivel de instancia objetos, aplicacin de service pack. 5 Disear autenticacin de una instancia. Considerar escoger tipo de autenticacin, implementar requerimientos de acceso empleando triggers 6 Disear la seguridad a nivel de instancia. Considerar: cuentas de Windows, stream, proxy, credenciales, permisos a nivel de instancia, controll de certificados y claves, seguridad de los endpoints, utilizar certificados SSL, puertos TCP 7 Disear Base de Datos, esquemas, y parmetros de seguridad de objetos. Considerar: usuarios, roles, certificados y control de claves, control de servicios, Common Language Runtime (CLR), cadena de propietario. 8 Disear una poltica de seguridad y un plan de auditoria. Considerar : poltica basada en el Framework, funciones de seguridad, sp_helprotect, vistas de catlogo, notificaciones extendidas de eventos 9 Disear una estrategia de encriptacin. Considerar: Encriptacin Transparente de Datos, encriptar datos protegidos, administracin de certificados y claves , stream 10 Disear una solucin de failover clustering. Considerar: grupo de recurso de cluster, consideraciones de parametrizacin de cluster, nmero de nodos, cuentas de servicio 11 Disear una Base de Datos con Espejo. Considerar: cuando utilizar un servidor testigo, consideraciones de Sistema de Operacin, suspender vs. detener, recuperacin a fallas automtico o manual, reparacin de pginas automtico, snapshots de Base de Datos para reportes, administrando a nivel de instancia los objetos. 12 Disear una solucin de alta disponibilidad basada en replicacin. Considerar: diferentes tipos de replicacin, topologas, recuperacin ante la falla de replicacin, sincronizacin, monitoreo de la salud del servidor 13 Disear una solucin de alta disponibilidad basada en log shipping. Considerar : controlar a nivel de instancia de objetos, cambiar roles, reportes de segunda instancia, monitorear servidor, reinicializar, chequeo de consistencia en una instancia secundaria 14 Seleccionar tecnologa de alta disponibilidad basadas en requerimientos del negocio. Considerar : failover clustering, Base de Datos espejos, log shipping, replicacin 15 Disear una estrategia de respaldo. Considerar: modelo de recuperacin, compresin, seleccionando los tipos de respaldo, programacin, medios de respaldo, respaldo de archivos y grupos de archivos, verificando los respaldos, control de claves, respaldos espejos, consideraciones de cluster 16 Disear una estrategia de recuperacin. Considerar: pginas, archivos, grupos de archivos, restauraciones parciales y en lnea, usuarios hurfanos, reconstruccin de instancias, consideraciones de encriptacin, controlando las fallas del medio, logs de transacciones, puntos en tiempo y marcas de recuperacin, streams 17 Disear un plan de recuperacin. Considerar : log shipping, replicacin, consideraciones de hardware, programacin , pruebas de restauraciones, controlando fallas de alta disponibilidad. 18 Disear una solucin de monitoreo al nivel de sistema de operacin. Considerar: contadores de monitor del sistema, logs de evento, vistas de control dinmico y funciones, Windows Management Instrumentation (WMI), monitoreo remoto, analizar resultados 19 Disear una solucin de monitoreo a nivel de instancia. Considerar: instancia, monitoreo de Base de Datos y objetos, coleccin de datos, notificaciones de eventos, control dinmico de objetos, analizar resultados 20 Disear una solucin para monitorear rendimiento y concurrencia. Considerar: Dedicated Administrator Connection (DAC), candados, bloqueos, abrazos mortales, control de objetos dinmicos, utilizacin de ndices, anlisis de trazas 21 Disear una estrategia de mantenimiento para Servidores de Base de Datos. Considerar: reconstruir para comprimir a nivel de pgina, mantenimiento de ndices y heap, administracin de las particiones, estadsticas 22 Disear una solucin para controlar los recursos. Considerar: Gobernador de Recursos (CPU, memoria, nmero de peticiones por segundo, pools de recursos, grupos de recursos). 23 Disear Polticas. Considerar: Disear polticas y condiciones 24 Disear una estrategia de compresin de datos. Considerar: nivel de fila o de pgina, frecuencia de actualizaciones, tasa de compresin, comprimir particiones, ndices especficos

PAG 2 41 54

71 77 81

109 118 129 140 148

187 208

211 213

231

261 263

271 274

286 288 309 315

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
1 Disear requerimientos CPU, memoria, y capacidad de almacenamiento. Considerar: RAID, tamao de las tablas, IO, transacciones por segundo, compresin de datos, memoria de acceso no uniforme (NUMA), capacidad tempdb Requisitos de hardware y software para instalar SQL Server 2008 A continuacin se presentan los requisitos mnimos de hardware y software para instalar y ejecutar SQL Server 2008. En las ediciones de 32 de 64 bits de SQL Server 2008 se aplica lo siguiente:

SQL Server 2008 Enterprise est disponible para su evaluacin durante un perodo de prueba de 180 das. Microsoft recomienda ejecutar SQL Server 2008 en equipos con el formato de archivo NTFS. Para las actualizaciones a SQL Server 2008, los sistemas de archivos FAT32 no se bloquearn. La instalacin de SQL Server bloquear las instalaciones en unidades de disco de slo lectura o comprimidas. SQL Server no instala el kit de desarrollo de software (SDK) de .NET Framework 3.5. Sin embargo, el SDK contiene herramientas que son tiles cuando se usa .NET Framework para desarrollo de SQL Server. Requisitos de reinicio de equipos durante la instalacin de SQL Server: la instalacin de .NET Framework requiere un reinicio del sistema operativo. Si la instalacin de Windows Installer tambin requiere un reinicio, el programa de instalacin esperar hasta que se hayan instalado los componentes de .NET Framework y Windows Installer antes de reiniciar.

Requisitos de hardware y software Los requisitos siguientes se aplican a todas las instalaciones de SQL Server 2008: Componente Requisito

Marco trabajo2

de El programa de instalacin de SQL Server instala los siguientes componentes de software requeridos por el producto:


Software2

.NET Framework 3.5 SP11

SQL Server Native Client

Archivos auxiliares para la instalacin de SQL Server

El programa de instalacin de SQL Server requiere Microsoft Windows Installer 4.5 o una versin posterior Una vez instalados los componentes requeridos, el programa de instalacin de SQL Server comprobar que el equipo en el que se ha instalado SQL Server 2008 tambin cumple los dems requisitos para su correcta instalacin.

Software red

de Los requisitos de software de red para las versiones de 64 bits de SQL Server 2008 son los mismos que para las versiones de 32 bits. Los sistemas operativos compatibles tienen el software de red integrado. Las instancias predeterminadas y con nombre independientes admiten los siguientes protocolos de red:


Nota

Memoria compartida

Canalizaciones con nombre

TCP/IP

VIA

La memoria compartida y VIA no se admiten en clsteres de conmutacin por error.

Virtualizacin

SQL Server 2008 es compatible con entornos de mquina virtual que se ejecutan en la funcin Hyper-V de las ediciones Standard, Enterprise y Datacenter de Windows Server 2008 R2 y Windows Server 2008. La mquina virtual debe ejecutarse en un sistema operativo compatible con la edicin de SQL Server 2008 concreta que se cita ms adelante en

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

este tema. Adems de los recursos requeridos por la particin primaria, a cada mquina virtual (particin secundaria) se debe proporcionar suficientes recursos de procesador, memoria y recursos de disco para su instancia de SQL Server 2008. Los requisitos se enumeran ms adelante en este tema.3 Dentro de la funcin Hyper-V de Windows Server 2008, se puede asignar un mximo de cuatro procesadores virtuales a mquinas virtuales que ejecuten las ediciones de 32 o 64 bits de Windows Server 2008. Se pueden asignar como mximo 2 procesadores virtuales a equipos virtuales que ejecuten ediciones de 32 bits de Windows Server 2003. Para equipos virtuales que hospedan otros sistemas operativos, se puede asignar como mximo un procesador virtual a equipos virtuales. Notas:


Software Internet

Se recomienda cerrar SQL Server 2008 antes de apagar la mquina virtual.

La agrupacin en clsteres de conmutacin por error del invitado se admite en SQL Server 2008.

de Para todas las instalaciones de SQL Server 2008 se requiere Microsoft Internet Explorer 6 SP 1 o una versin posterior. Se requiere Internet Explorer 6 Service Pack 1 o una versin posterior para Microsoft Management Console (MMC), SQL Server Management Studio, Business Intelligence Development Studio, el componente Diseador de informes de Reporting Services y la Ayuda HTML.

Disco duro

Las necesidades de espacio en disco variarn con los componentes de SQL Server 2008 que instale.

Unidad

Para la instalacin desde disco se necesita una unidad de CD o DVD.

Pantalla

Las herramientas grficas de SQL Server 2008 requieren VGA o una resolucin mayor: resolucin mnima de 1.024 x 768 pxeles.

Otros dispositivos

Dispositivo sealador: se necesita un mouse Microsoft o dispositivo sealador compatible.

1Se requieren las versiones siguientes de .NET Framework:

SQL Server 2008 en Windows Server 2003 (64 bits) IA64: .NET Framework 2.0 SP2 SQL Server Express: .NET Framework 2.0 SP2

Todas las dems ediciones de SQL Server 2008: .NET Framework 3.5 SP1

La instalacin de .NET Framework requiere reiniciar el sistema operativo. Si la instalacin de Windows Installer tambin requiere un reinicio, el programa de instalacin esperar hasta que se hayan instalado los componentes de .NET Framework y Windows Installer antes de reiniciar. Nota: Instalar .NET Framework 2.0 SP2: .NET Framework 2.0 SP2 no est disponible como descarga independiente. Necesitar instalar .NET Framework 3.5 SP1 que incluye .NET Framework 2.0 SP2. 2 El programa de instalacin de SQL Server no instalar los componentes necesarios siguientes para SQL Server Express y SQL Server Express con las herramientas y SQL Server Express con Advanced Services. Debe instalar estos componentes manualmente antes de ejecutar el programa de instalacin de SQL Server:

SQL Server Express: .NET Framework 2.0 SP2 y Windows Installer 4.5. En Windows Vista, use .NET Framework 3.5 SP1.

SQL Server Express con Advanced Services: .NET Framework 3.5 SP1, Windows Installer 4.5 y Windows PowerShell 1.0. SQL Server Express con las herramientas: .NET Framework 3.5 SP1, Windows Installer 4.5 y Windows PowerShell 1.0.

Como ocurre con todas las tecnologas de virtualizacin, SQL Server 2008 ejecutndose en un equipo virtual Windows Server 2008 con Hyper-V ser ms lento que en un equipo fsico con los mismos recursos fsicos.

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
SQL Server 2008 Enterprise (64 bits) IA64 En la tabla siguiente se muestran los requisitos del sistema para SQL Server 2008 Enterprise (64 bits) IA64. Observe que esta edicin de SQL Server 2008 no est disponible en las versiones traducidas siguientes: italiano, espaol, brasileo (portugus) y ruso. Componente Requisito

Procesador

Tipo de procesador:

Procesador Itanium o ms rpido

Velocidad de procesador:

Sistema operativo

Recomendado: 1,0 GHz o ms

Windows Server 2008 R2 Itanium IA642 Windows Server 2008 de 64 bits Itanium1 Windows Server 2003 SP2 de 64 bits Itanium Datacenter1 Windows Server 2003 SP2 de 64 bits Itanium Enterprise1

Memoria

RAM:

Mnimo: 512 MB

Recomendado: 2,048 GB o ms

Mximo: mximo del sistema operativo mximo

1Herramientas de administracin es compatible con WOW64, una caracterstica de las ediciones de 64 bits de Windows que permite que las aplicaciones de 32 bits se ejecuten en el modo de 32 bits de forma nativa. Las aplicaciones funcionan en el modo de 32 bits, aunque el sistema operativo subyacente se ejecute en el modo de 64 bits. WOW64 se admite solamente para instancias independientes de SQL Server. WOW64 no se admite para instalaciones de clsteres de conmutacin por error de SQL Server.
2

Se admite solamente en SQL Server SP1 o superior Nota:

SQL Server 2008 no se admite en las instalaciones bsicas de servidor de Windows Server 2008 y Windows Server 2008 R2.

SQL Server 2008 Enterprise (64 bits) x64 En la tabla siguiente se muestran los requisitos del sistema para SQL Server 2008 Enterprise (64 bits) x64: Componente Requisito

Procesador

Tipo de procesador:

Mnimo: AMD Opteron, AMD Athlon 64, Intel Xeon compatible con Intel EM64T, Intel Pentium IV compatible con EM64T

Velocidad de procesador:


Sistema operativo

Mnimo: 1,4 GHz

Recomendado: 2,0 GHz o ms

Windows Server 2003 SP2 de 64 bits x64 Standard1 Windows Server 2003 SP2 de 64 bits x64 Datacenter1 Windows Server 2003 SP2 de 64 bits x64 Enterprise1

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Windows Server 2008 de 64 bits x64 Standard Windows Server 2008 de 64 bits x64 Standard sin Hyper-V Windows Server 2008 de 64 bits x64 Datacenter Windows Server 2008 de 64 bits x64 Datacenter sin Hyper-V1 Windows Server 2008 de 64 bits x64 Enterprise Windows Server 2008 de 64 bits x64 Enterprise sin Hyper-V1 Windows Server 2008 R2 de 64 bits x64 Web1,2 Windows Server 2008 R2 de 64 bits x64 Standard1,2 Windows Server 2008 R2 de 64 bits x64 Enterprise1,2 Windows Server 2008 R2 de 64 bits x64 Datacenter1,2

Memoria

RAM:

Mnimo: 512 MB

Recomendado: 2,048 GB o ms

Mximo: mximo del sistema operativo mximo

1Herramientas de administracin es compatible con WOW64, una caracterstica de las ediciones de 64 bits de Windows que permite que las aplicaciones de 32 bits se ejecuten en el modo de 32 bits de forma nativa. Las aplicaciones funcionan en el modo de 32 bits aunque el sistema operativo subyacente se ejecute en el modo de 64 bits. WOW64 se admite solamente para instancias independientes de SQL Server. WOW64 no se admite para instalaciones de clsteres de conmutacin por error de SQL Server.
2

Se admite solamente en SQL Server SP1 o superior. Nota:

SQL Server 2008 no se admite en las instalaciones bsicas de servidor de Windows Server 2008 y Windows Server 2008 R2.

SQL Server 2008 Standard (64 bits) x64 En la tabla siguiente se muestran los requisitos del sistema para SQL Server 2008 Standard (64 bits) x64: Componente Requisito

Procesador

Tipo de procesador:

Mnimo: AMD Opteron, AMD Athlon 64, Intel Xeon compatible con Intel EM64T, Intel Pentium IV compatible con EM64T

Velocidad de procesador:


Sistema operativo

Mnimo: 1,4 GHz

Recomendado: 2,0 GHz o ms

Windows XP Professional x64 Windows Server 2003 SP2 de 64 bits x64 Standard1 Windows Server 2003 SP2 de 64 bits x64 Datacenter1 Windows Server 2003 SP2 de 64 bits x64 Enterprise1

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Windows Vista Ultimate x64 Windows Vista Enterprise x64 Windows Vista Business x64 Windows Server 2008 x64 Web1 Windows Server 2008 x64 Standard, Windows Server 2008 x64 Standard sin Hyper-V1 Windows Server 2008 x64 Datacenter, Windows Server 2008 x64 Datacenter sin Hyper-V1 Windows Server 2008 x64 Enterprise, Windows Server 2008 x64 Enterprise sin Hyper-V1 Windows Small Business Server 20082 Windows Server 2008 para Windows Essential Server Solutions2 Windows Server 2008 sin Hyper-V para Windows Essential Server Solutions2 Windows 7 de 64 bits x64 Ultimate1,3 Windows 7 de 64 bits x64 Enterprise1,3 Windows 7 de 64 bits x64 Professional1,3 Windows 2008 R2 de 64 bits x64 Web1,3 Windows 2008 R2 Foundation
1,3

Windows 2008 R2 de 64 bits x64 Standard1,3 Windows 2008 R2 de 64 bits x64 Enterprise1,3 Windows 2008 R2 de 64 bits x64 Datacenter1,3

Memoria

RAM:

Mnimo: 512 MB

Recomendado: 2,048 GB o ms

Mximo: mximo del sistema operativo

1Herramientas de administracin es compatible con WOW64, una caracterstica de las ediciones de 64 bits de Microsoft Windows que permite que las aplicaciones de 32 bits se ejecuten en el modo de 32 bits de forma nativa. Las aplicaciones funcionan en el modo de 32 bits aunque el sistema operativo subyacente se ejecute en el modo de 64 bits. WOW64 se admite solamente para instancias independientes de SQL Server. WOW64 no se admite para instalaciones de clsteres de conmutacin por error de SQL Server.
2

Sistemas operativos admitidos para SQL Server Standard for Small Business Se admite solamente en SQL Server SP1 o superior. Nota:

SQL Server 2008 no se admite en las instalaciones bsicas de servidor de Windows Server 2008 y Windows Server 2008 R2.

SQL Server 2008 Enterprise (32 bits) En la tabla siguiente se muestran los requisitos del sistema para SQL Server 2008 Enterprise (32 bits): Componente Requisito

Procesador

Tipo de procesador:

Procesador compatible con Pentium III o superior

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Velocidad de procesador:


Sistema operativo

Mnimo: 1,0 GHz

Recomendado: 2,0 GHz o ms

Windows Server 2003 SP2 Small Business Server R2 Standard Windows Server 2003 SP2 Small Business Server R2 Premium Windows Server 2003 SP2 Standard Windows Server 2003 SP2 Enterprise Windows Server 2003 SP2 Datacenter Windows Server 2003 Small Business Server SP2 Standard Windows Server 2003 Small Business Server SP2 Premium Windows Server 2003 SP2 de 64 bits x64 Standard1 Windows Server 2003 SP2 de 64 bits x64 Datacenter1 Windows Server 2003 SP2 de 64 bits x64 Enterprise1 Windows Server 2008 Standard (con y sin Hyper-V) Windows Server 2008 Web Windows Server 2008 Datacenter Windows Server 2008 Datacenter sin Hyper-V Windows Server 2008 Enterprise Windows Server 2008 Enterprise sin Hyper-V Windows Server 2008 x64 Standard Windows Server 2008 x64 Standard sin Hyper-V1 Windows Server 2008 x64 Datacenter Windows Server 2008 x64 Datacenter sin Hyper-V1 Windows Server 2008 x64 Enterprise Windows Server 2008 x64 Enterprise sin Hyper-V1 Windows Server 2008 R2 de 64 bits x64 Web1,2 Windows Server 2008 R2 de 64 bits x64 Standard1,2 Windows Server 2008 R2 de 64 bits x64 Enterprise1,2 Windows Server 2008 R2 de 64 bits x64 Datacenter1,2

Memoria

RAM:

Mnimo: 512 MB

Recomendado: 2,048 GB o ms

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Mximo: mximo del sistema operativo

1Esta edicin de SQL Server se puede instalar en el subsistema de 32 bits de Windows on Windows (WOW64) de un servidor de 64 bits. WOW64 se admite solamente para instancias independientes de SQL Server. WOW64 no se admite para instalaciones de clsteres de conmutacin por error de SQL Server.
2

Se admite solamente en SQL Server SP1 o superior.

SQL Server 2008 Standard (32 bits) En la tabla siguiente se muestran los requisitos del sistema para SQL Server 2008 Standard (32 bits): Componente Requisito

Procesador

Tipo de procesador:

Procesador compatible con Pentium III o superior

Velocidad de procesador:


Sistema operativo

Mnimo: 1,0 GHz

Recomendado: 2,0 GHz o ms

Windows XP Professional SP2 Windows XP SP2 Tablet Windows XP x64 Professional1 Windows XP SP2 Media Center 2002 Windows XP SP2 Media Center 2004 Windows XP Media Center 2005 Windows XP Professional Reduced Media Windows Server 2003 SP2 Small Business Server R2 Standard Windows Server 2003 SP2 Small Business Server R2 Premium Windows Server 2003 SP2 Standard Windows Server 2003 SP2 Enterprise Windows Server 2003 SP2 Datacenter Windows Server 2003 SP2 Small Business Server Standard Windows Server 2003 SP2 Small Business Server Premium Windows Server 2003 SP2 de 64 bits x64 Standard1 Windows Server 2003 SP2 de 64 bits x64 Datacenter1 Windows Server 2003 SP2 de 64 bits x64 Enterprise1 Windows Vista Ultimate Windows Vista Enterprise Windows Vista Business Windows Vista Ultimate x641

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Windows Vista Enterprise x641 Windows Vista Business x641 Windows Server 2008 Web Windows Server 2008 Standard Server Windows Server 2008 Standard Server sin Hyper-V Windows Server 2008 Datacenter Windows Server 2008 Datacenter sin Hyper-V Windows Server 2008 Enterprise Windows Server 2008 Enterprise sin Hyper-V Windows Server 2008 x64 Standard Windows Server 2008 x64 Standard sin Hyper-V1 Windows Server 2008 x64 Datacenter Windows Server 2008 x64 Datacenter sin Hyper-V1 Windows Server 2008 x64 Enterprise Windows Server 2008 x64 Enterprise sin Hyper-V1 Windows Small Business Server 20082 Windows Server 2008 para Windows Essential Server Solutions2 Windows Server 2008 sin Hyper-V para Windows Essential Server Solutions2 Windows 7 Ultimate3 Windows 7 Enterprise3 Windows 7 Professional3 Windows 7 de 64 bits x64 Ultimate1,3 Windows 7 de 64 bits x64 Enterprise1,3 Windows 7 de 64 bits x64 Professional1,3 Windows Server 2008 R2 de 64 bits x64 Web1,3 Windows Server 2008 R2 Foundation
1,3

Windows Server 2008 R2 de 64 bits x64 Standard1,3 Windows Server 2008 R2 de 64 bits x64 Enterprise1,3 Windows Server 2008 R2 de 64 bits x64 Datacenter1,3

Memoria

RAM:

Mnimo: 512 MB

Recomendado: 2,048 GB o ms

Mximo: mximo del sistema operativo

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
1Esta edicin de SQL Server se puede instalar en el subsistema de 32 bits de Windows on Windows (WOW64) de un servidor de 64 bits. WOW64 se admite solamente para instancias independientes de SQL Server. WOW64 no se admite para instalaciones de clsteres de conmutacin por error de SQL Server.
2

Sistemas operativos admitidos para SQL Server Standard for Small Business Se admite solamente en SQL Server SP1 o superior.

SQL Server 2008 Developer (64 bits) IA64 En la tabla siguiente se muestran los requisitos del sistema para SQL Server 2008 Developer (64 bits) IA64. Observe que esta edicin de SQL Server 2008 no est disponible en las versiones localizadas siguientes: italiano, espaol, brasileo (portugus) y ruso. Componente Requisito

Procesador

Tipo de procesador:

Mnimo: procesador Itanium o superior

Velocidad de procesador:

Sistema operativo

Mnimo: 1,0 GHz o superior

Windows Server 2003 SP2 64 bits Itanium Datacenter1 Windows Server 2003 SP2 64 bits Itanium Enterprise1 Windows Server 2008 64 bits Itanium Edition1 Windows Server 2008 R2 de 64 bits Itanium Edition1,2

Memoria

RAM:

Mnimo: 512 MB

Recomendado: 2,048 GB o ms

Mximo: mximo del sistema operativo mximo

1Herramientas de administracin es compatible con WOW64, una caracterstica de las ediciones de 64 bits de Microsoft Windows que permite que las aplicaciones de 32 bits se ejecuten en el modo de 32 bits de forma nativa. Las aplicaciones funcionan en el modo de 32 bits aunque el sistema operativo subyacente se ejecute en el modo de 64 bits. WOW64 se admite solamente para instancias independientes de SQL Server. WOW64 no se admite para instalaciones de clsteres de conmutacin por error de SQL Server.
2

Se admite solamente en SQL Server SP1 o superior. Nota:

SQL Server 2008 no se admite en las instalaciones bsicas de servidor de Windows Server 2008 y Windows Server 2008 R2.

SQL Server 2008 Developer (64 bits) x64 En la tabla siguiente se enumeran los requisitos del sistema para SQL Server 2008 Developer (64 bits) x64: Componente Requisito

Procesador

Tipo de procesador:

Mnimo: AMD Opteron, AMD Athlon 64, Intel Xeon compatible con Intel EM64T, Intel Pentium IV compatible con EM64T

Velocidad de procesador:

Mnimo: 1,4 GHz

10

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Sistema operativo

Recomendado: 2,0 GHz o ms

Windows XP x64 Professional Windows Server 2003 SP2 de 64 bits x64 Standard1 Windows Server 2003 SP2 de 64 bits x64 Datacenter1 Windows Server 2003 SP2 de 64 bits x64 Enterprise1 Windows Vista Ultimate x64 Windows Vista Home Premium x64 Windows Vista Home Basic x64 Windows Vista Enterprise x64 Windows Vista Business x64 Windows Server 2008 de 64 bits x64 Standard, Windows Server 2008 de 64 bits x64 Standard sin Hyper-V1 Windows Server 2008 de 64 bits x64 Datacenter, Windows Server 2008 de 64 bits x64 Datacenter sin Hyper-V1 Windows Server 2008 de 64 bits x64 Enterprise, Windows Server 2008 de 64 bits x64 Enterprise sin Hyper-V1 Windows Server 2008 x64 Web1 Windows 7 de 64 bits x64 Web1,2 Windows 7 de 64 bits x64 Home Basic1,2 Windows 7 de 64 bits x64 Home Premium1,2 Windows 7 de 64 bits x64 Enterprise1,2 Windows 2008 R2 de 64 bits x64 Web1,2 Windows 2008 R2 de 64 bits x64 Standard1,2 Windows 2008 R2 de 64 bits x64 Enterprise1,2 Windows 2008 R2 de 64 bits x64 Datacenter1,2

Memoria

RAM:

Mnimo: 512 MB

Recomendado: 2,048 GB o ms

Mximo: mximo del sistema operativo mximo

1Herramientas de administracin es compatible con WOW64, una caracterstica de las ediciones de 64 bits de Microsoft Windows que permite que las aplicaciones de 32 bits se ejecuten en el modo de 32 bits de forma nativa. Las aplicaciones funcionan en el modo de 32 bits aunque el sistema operativo subyacente se ejecute en el modo de 64 bits. WOW64 se admite solamente para instancias independientes de SQL Server. WOW64 no se admite para instalaciones de clsteres de conmutacin por error de SQL Server.
2

Se admite solamente en SQL Server SP1 o superior. Nota:

SQL Server 2008 no se admite en las instalaciones bsicas de servidor de Windows Server 2008 y Windows Server 2008 R2.

SQL Server 2008 Workgroup (64 bits) x64 En la tabla siguiente se enumeran los requisitos del sistema para SQL Server 2008 Workgroup (64 bits) x64:

11

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Componente Requisito

Procesador

Tipo de procesador:

Mnimo: AMD Opteron, AMD Athlon 64, Intel Xeon compatible con Intel EM64T, Intel Pentium IV compatible con EM64T

Velocidad de procesador:


Sistema operativo

Mnimo: 1,4 GHz

Recomendado: 2,0 GHz o ms

Windows XP x64 Professional Windows Server 2003 SP2 de 64 bits x64 Standard1 Windows Server 2003 SP2 de 64 bits x64 Datacenter1 Windows Server 2003 SP2 de 64 bits x64 Enterprise1 Windows Vista Ultimate x64 Windows Vista Home Premium x64 Windows Vista Home Basic x64 Windows Vista Enterprise x64 Windows Vista Business x64 Windows Server 2008 x64 Web1 Windows Server 2008 de 64 bits x64 Standard, Windows Server 2008 de 64 bits x64 Standard sin Hyper-V1 Windows Server 2008 de 64 bits x64 Datacenter, Windows Server 2008 de 64 bits x64 Datacenter sin Hyper-V1 Windows Server 2008 de 64 bits x64 Enterprise, Windows Server 2008 de 64 bits x64 Enterprise sin Hyper-V1 Windows 7 de 64 bits x64 Ultimate2 Windows 7 de 64 bits x64 Enterprise2 Windows 7 de 64 bits x64 Professional2 Windows Server 2008 R2 de 64 bits x64 Web1,2 Windows Server 2008 R2 de 64 bits x64 Foundation1,2 Windows Server 2008 R2 de 64 bits x64 Standard1,2 Windows Server 2008 R2 de 64 bits x64 Enterprise1,2 Windows Server 2008 R2 de 64 bits x64 Datacenter1,2

Memoria

RAM:

Mnimo: 512 MB

Recomendado: 2,048 GB o ms

Mximo: 4 GB

12

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
1Herramientas de administracin es compatible con WOW64, una caracterstica de las ediciones de 64 bits de Microsoft Windows que permite que las aplicaciones de 32 bits se ejecuten en el modo de 32 bits de forma nativa. Las aplicaciones funcionan en el modo de 32 bits aunque el sistema operativo subyacente se ejecute en el modo de 64 bits.
2

Se admite solamente en SQL Server SP1 o superior. Nota:

SQL Server 2008 no se admite en las instalaciones bsicas de servidor de Windows Server 2008 y Windows Server 2008 R2.

SQL Server 2008 Web (64 bits) x64 En la tabla siguiente se muestran los requisitos del sistema para SQL Server 2008 Web (64 bits) x64: Componente Requisito

Procesador

Tipo de procesador:

Mnimo: AMD Opteron, AMD Athlon 64, Intel Xeon compatible con Intel EM64T, Intel Pentium IV compatible con EM64T

Velocidad de procesador:


Sistema operativo

Mnimo: 1,4 GHz

Recomendado: 2,0 GHz o ms

Windows XP x64 Professional Windows Server 2003 SP2 de 64 bits x64 Standard1 Windows Server 2003 SP2 de 64 bits x64 Datacenter1 Windows Server 2003 SP2 de 64 bits x64 Enterprise1 Windows Vista Ultimate x64 Windows Vista Enterprise x64 Windows Vista Business x64 Windows Server 2008 x64 Web Windows Server 2008 x64 Standard, Windows Server 2008 x64 Standard sin Hyper-V1 Windows Server 2008 x64 Datacenter, Windows Server 2008 x64 Datacenter sin Hyper-V1 Windows Server 2008 x64 Enterprise, Windows Server 2008 x64 Enterprise sin Hyper-V1 Windows Server 2008 R2 de 64 bits x64 Web1,2 Windows Server 2008 R2 de 64 bits x64 Standard1,2 Windows Server 2008 R2 de 64 bits x64 Enterprise1,2 Windows Server 2008 R2 de 64 bits x64 Datacenter1,2

Memoria

RAM:

Mnimo: 512 MB

Recomendado: 2,048 GB o ms

Mximo: mximo del sistema operativo para Database Engine (Motor de base de datos), 4 GB para

13

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Reporting Services 1Herramientas de administracin es compatible con WOW64, una caracterstica de las ediciones de 64 bits de Microsoft Windows que permite que las aplicaciones de 32 bits se ejecuten en el modo de 32 bits de forma nativa. Las aplicaciones funcionan en el modo de 32 bits aunque el sistema operativo subyacente se ejecute en el modo de 64 bits.
2

Se admite solamente en SQL Server SP1 o superior. Nota:

SQL Server 2008 no se admite en las instalaciones bsicas de servidor de Windows Server 2008 y Windows Server 2008 R2.

SQL Server 2008 Express con herramientas (64 bits) x64 En la tabla siguiente se muestran los requisitos del sistema para SQL Server 2008 Express con herramientas (64 bits) x64. Componente Requisito

Procesador

Tipo de procesador:

Mnimo: AMD Opteron, AMD Athlon 64, Intel Xeon compatible con Intel EM64T, Intel Pentium IV compatible con EM64T

Velocidad de procesador:


Sistema operativo

Mnimo: 1,4 GHz

Recomendado: 2,0 GHz o ms

Windows Server 2003 x64 Windows Server 2003 SP2 de 64 bits x64 Standard1 Windows Server 2003 SP2 de 64 bits x64 Datacenter1 Windows Server 2003 SP2 de 64 bits x64 Enterprise1 Windows Vista Ultimate x64 Windows Vista Home Premium x64 Windows Vista Home Basic x64 Windows Vista Enterprise x64 Windows Vista Business x64 Windows Server 2008 de 64 bits x64 Web1 Windows Server 2008 de 64 bits x64 Standard Windows Server 2008 de 64 bits x64 Standard sin Hyper-V1 Windows Server 2008 de 64 bits x64 Datacenter Windows Server 2008 de 64 bits x64 Datacenter sin Hyper-V1 Windows Server 2008 de 64 bits x64 Enterprise Windows Server 2008 de 64 bits x64 Enterprise sin Hyper-V1 Windows 7 de 64 bits x64 Ultimate2 Windows 7 de 64 bits x64 Home Basic2 Windows 7 de 64 bits x64 Home Premium2

14

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Windows 7 de 64 bits x64 Enterprise2 Windows 7 de 64 bits x64 Professional2 Windows 2008 R2 de 64 bits x64 Web1,2 Windows 2008 R2 de 64 bits x64 Foundation1,2 Windows 2008 R2 de 64 bits x64 Standard1,2 Windows 2008 R2 de 64 bits x64 Enterprise1,2 Windows 2008 R2 de 64 bits x64 Datacenter1,2

Memoria

RAM:

Mnimo: 512 MB

Recomendado: 1 GB

Mximo: 1 GB para Database Engine (Motor de base de datos).

1Herramientas de administracin es compatible con WOW64, una caracterstica de las ediciones de 64 bits de Windows que permite que las aplicaciones de 32 bits se ejecuten en el modo de 32 bits de forma nativa. Las aplicaciones funcionan en el modo de 32 bits aunque el sistema operativo subyacente se ejecute en el modo de 64 bits.
2

Se admite solamente en SQL Server SP1 o superior.

SQL Server 2008 Express con Advanced Services (64 bits) x64 En la tabla siguiente se muestran los requisitos del sistema para SQL Server 2008 Express con Advanced Services (64 bits) x64: Componente Requisito

Procesador

Tipo de procesador:

Mnimo: AMD Opteron, AMD Athlon 64, Intel Xeon compatible con Intel EM64T, Intel Pentium IV compatible con EM64T

Velocidad de procesador:


Sistema operativo

Mnimo: 1,4 GHz

Recomendado: 2,0 GHz o ms

Windows Server 2003 x64 Windows Server 2003 SP2 de 64 bits x64 Standard1 Windows Server 2003 SP2 de 64 bits x64 Datacenter1 Windows Server 2003 SP2 de 64 bits x64 Enterprise1 Windows Vista Ultimate x64 Windows Vista Home Premium x64 Windows Vista Home Basic x64 Windows Vista Enterprise x64 Windows Vista Business x64

15

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Windows Server 2008 de 64 bits x64 Web1 Windows Server 2008 de 64 bits x64 Standard Windows Server 2008 de 64 bits x64 Standard sin Hyper-V1 Windows Server 2008 de 64 bits x64 Datacenter Windows Server 2008 de 64 bits x64 Datacenter sin Hyper-V1 Windows Server 2008 de 64 bits x64 Enterprise Windows Server 2008 de 64 bits x64 Enterprise sin Hyper-V1 Windows 7 de 64 bits x64 Ultimate2 Windows 7 de 64 bits x64 Home Basic2 Windows 7 de 64 bits x64 Home Premium2 Windows 7 de 64 bits x64 Enterprise2 Windows 7 de 64 bits x64 Professional2 Windows 7 de 64 bits x64 Web1,2 Windows 7 de 64 bits x64 Foundation1,2 Windows 7 de 64 bits x64 Standard1,2 Windows 7 de 64 bits x64 Enterprise1,2 Windows 7 de 64 bits x64 Datacenter1,2

Memoria

RAM:

Mnimo: 512 MB

Recomendado: 1 GB

Mximo: 1 GB para Database Engine (Motor de base de datos), 4 GB para Reporting Services

1Herramientas de administracin es compatible con WOW64, una caracterstica de las ediciones de 64 bits de Windows que permite que las aplicaciones de 32 bits se ejecuten en el modo de 32 bits de forma nativa. Las aplicaciones funcionan en el modo de 32 bits aunque el sistema operativo subyacente se ejecute en el modo de 64 bits.
2

Se admite solamente en SQL Server SP1 o superior.

SQL Server Developer (32 bits) En la tabla siguiente se muestran los requisitos del sistema para SQL Server 2008 Developer (32 bits): Componente Requisito

Procesador

Tipo de procesador:

Procesador compatible con Pentium III o superior

Velocidad de procesador:

Mnimo: 1,0 GHz

Recomendado: 2,0 GHz o ms

16

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Sistema operativo

Windows XP Home Edition SP2 Windows XP Professional SP2 Windows XP Tablet SP2 Windows XP Professional x64 SP21 Windows XP SP2 Media Center 2002 Windows XP SP2 Media Center 2004 Windows XP Media Center 2005 Windows XP Professional Reduced Media Windows XP Home Edition Reduced Media Windows Server 2003 SP2 Small Business Server R2 Standard Windows Server 2003 SP2 Small Business Server R2 Premium Windows Server 2003 SP2 Standard Windows Server 2003 SP2 Enterprise Windows Server 2003 SP2 Datacenter Windows Server 2003 SP2 Small Business Server Standard Windows Server 2003 SP2 Small Business Server Premium Windows Server 2003 SP2 de 64 bits x64 Standard1 Windows Server 2003 SP2 de 64 bits x64 Datacenter1 Windows Server 2003 SP2 de 64 bits x64 Enterprise1 Windows Vista Ultimate Windows Vista Home Premium Windows Vista Home Basic Windows Vista Starter Edition Windows Vista Enterprise Windows Vista Business Windows Vista Ultimate de 64 bits x641 Windows Vista Home Premium de 64 bits x641 Windows Vista Home Basic de 64 bits x641 Windows Vista Enterprise de 64 bits x641 Windows Vista Business de 64 bits x641 Windows Server 2008 Web Windows Server 2008 Standard Windows Server 2008 Standard sin Hyper-V Windows Server 2008 Enterprise

17

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Windows Server 2008 Enterprise sin Hyper-V Windows Server 2008 Datacenter Windows Server 2008 Datacenter sin Hyper-V Windows Server 2008 de 64 bits x64 Standard Windows Server 2008 de 64 bits x64 Standard sin Hyper-V Windows Server 2008 Datacenter Windows Server 2008 Datacenter sin Hyper-V Windows Server 2008 Enterprise Windows Server 2008 Enterprise sin Hyper-V Windows 7 Ultimate2 Windows 7 Home Basic2 Windows 7 Home Premium2 Windows 7 Enterprise2 Windows 7 Professional2 Windows 7 de 64 bits x64 Ultimate1,2 Windows 7 de 64 bits x64 Home Basic1,2 Windows 7 de 64 bits x64 Home Premium1,2 Windows 7 de 64 bits x64 Enterprise1,2 Windows 7 de 64 bits x64 Professional1,2 Windows Server 2008 R2 de 64 bits x64 Web1,2 Windows Server 2008 R2 de 64 bits x64 Standard1,2 Windows Server 2008 R2 de 64 bits x64 Enterprise1,2 Windows Server 2008 R2 de 64 bits x64 Datacenter1,2

Memoria

RAM:

Mnimo: 512 MB

Recomendado: 2,048 GB o ms

Mximo: mximo del sistema operativo

1Esta edicin de SQL Server 2008 se puede instalar en el subsistema de 32 bits de Windows on Windows (WOW64) de un servidor de 64 bits. WOW64 se admite solamente para instancias independientes de SQL Server. WOW64 no se admite para instalaciones de clsteres de conmutacin por error de SQL Server.
2

Se admite solamente en SQL Server SP1 o superior. Nota:

SQL Server 2008 no se admite en las instalaciones bsicas de servidor de Windows Server 2008 y Windows Server 2008 R2.

18

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
SQL Server Workgroup (32 bits) En la tabla siguiente se muestran los requisitos del sistema para SQL Server 2008 Workgroup (32 bits): Componente Requisito

Procesador

Tipo de procesador:

Procesador compatible con Pentium III o superior

Velocidad de procesador:


Sistema operativo

Mnimo: 1,0 GHz

Recomendado: 2,0 GHz o ms

Windows XP Professional SP2 Windows XP SP2 Tablet Windows XP Professional de 64 bits x641 Windows XP SP2 Media Center 2002 Windows XP SP2 Media Center 2004 Windows XP Media Center 2005 Windows XP Professional Reduced Media Windows Server 2003 SP2 Small Business Server R2 Standard Windows Server 2003 SP2 Small Business Server R2 Premium Windows Server 2003 SP2 Standard Windows Server 2003 SP2 Enterprise Windows Server 2003 SP2 Datacenter Windows Server 2003 SP2 Small Business Server Standard Windows Server 2003 SP2 Small Business Server Premium Windows Server 2003 de 64 bits x64 Standard1 Windows Server 2003 de 64 bits x64 Datacenter1 Windows Server 2003 de 64 bits x64 Enterprise1 Windows Vista Vista Ultimate Windows Vista Enterprise Windows Vista Business Windows Vista de 64 bits x64 Ultimate1 Windows Vista de 64 bits x64 Enterprise1 Windows Vista de 64 bits x64 Business1 Windows Server 2008 2008 Web Windows Server 2008 Standard

19

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Windows Server 2008 Standard sin Hyper-V Windows Server 2008 Datacenter Windows Server 2008 Datacenter sin Hyper-V Windows Server 2008 Enterprise Windows Server 2008 Enterprise sin Hyper-V Windows Server 2008 de 64 bits x64 Standard Windows Server 2008 de 64 bits x64 Standard sin Hyper-V1 Windows Server 2008 de 64 bits x64 Datacenter Windows Server 2008 de 64 bits x64 Datacenter sin Hyper-V1 Windows Server 2008 de 64 bits x64 Enterprise Windows Server 2008 de 64 bits x64 Enterprise sin Hyper-V1 Windows 7 Ultimate2 Windows 7 Enterprise2 Windows 7 Professional2 Windows 7 de 64 bits x64 Ultimate1,2 Windows 7 de 64 bits x64 Enterprise1,2 Windows 7 de 64 bits x64 Professional1,2 Windows Server 2008 R2 de 64 bits x64 Web1,2 Windows Server 2008 R2 Foundation Windows Server 2008 R2 Standard1,2 Windows Server 2008 R2 Enterprise1,2 Windows Server 2008 R2 Datacenter1,2
1,2

Memoria

RAM:

Mnimo: 512 MB

Recomendado: 2,048 GB o ms

Mximo: mximo del sistema operativo para Database Engine (Motor de base de datos), 4 GB para Reporting Services

1Esta edicin de SQL Server 2008 se puede instalar en el subsistema de 32 bits de Windows on Windows (WOW64) de un servidor de 64 bits.
2

Se admite solamente en SQL Server SP1 o superior. Nota:

SQL Server 2008 no se admite en las instalaciones bsicas de servidor de Windows Server 2008 y Windows Server 2008 R2.

SQL Server Web (32 bits) En la tabla siguiente se muestran los requisitos del sistema para SQL Server 2008 Web (32 bits):

20

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Componente Requisito

Procesador

Tipo de procesador:

Procesador compatible con Pentium III o superior

Velocidad de procesador:


Sistema operativo

Mnimo: 1,0 GHz

Recomendado: 2,0 GHz o ms

Windows XP Professional SP2 Windows XP SP2 Tablet Windows XP Professional XP x641 Windows XP SP2 Media Center 2002 Windows XP SP2 Media Center 2004 Windows XP Media Center 2005 Windows XP Professional Reduced Media Windows Server 2003 SP2 Small Business Server R2 Standard Windows Server 2003 SP2 Small Business Server R2 Premium Windows Server 2003 SP2 Standard Windows Server 2003 SP2 Enterprise Windows Server 2003 SP2 Datacenter Windows Server 2003 SP2 Small Business Server Standard Windows Server 2003 SP2 Small Business Server Premium Windows Server 2003 SP2 de 64 bits x64 Standard1 Windows Server 2003 SP2 de 64 bits x64 Datacenter1 Windows Server 2003 SP2 de 64 bits x64 Enterprise1 Windows Vista Ultimate Windows Vista Enterprise Windows Vista Business Windows Vista Ultimate x641 Windows Vista Enterprise x641 Windows Vista Business x641 Windows Server 2008 Web Windows Server 2008 Standard Server Windows Server 2008 Standard Server sin Hyper-V

21

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Windows Server 2008 Datacenter Windows Server 2008 Datacenter sin Hyper-V Windows Server 2008 Enterprise Windows Server 2008 Enterprise sin Hyper-V Windows Server 2008 x64 Standard Windows Server 2008 x64 Standard sin Hyper-V1 Windows Server 2008 x64 Datacenter Windows Server 2008 x64 Datacenter sin Hyper-V1 Windows Server 2008 x64 Enterprise Windows Server 2008 x64 Enterprise sin Hyper-V1 Windows Server 2008 R2 de 64 bits x64 Web1,2 Windows Server 2008 R2 de 64 bits x64 Standard1,2 Windows Server 2008 R2 de 64 bits x64 Enterprise1,2 Windows Server 2008 R2 de 64 bits x64 Datacenter1,2

Memoria

RAM:

Mnimo: 512 MB

Recomendado: 2,048 GB o ms

Mximo: mximo del sistema operativo para Database Engine (Motor de base de datos), 4 GB para Reporting Services

1Esta edicin de SQL Server 2008 se puede instalar en el subsistema de 32 bits de Windows on Windows (WOW64) de un servidor de 64 bits.
2

Se admite solamente en SQL Server SP1 o superior. Nota:

SQL Server 2008 no se admite en las instalaciones bsicas de servidor de Windows Server 2008 y Windows Server 2008 R2.

SQL Server 32 Express (32 bits), Express con herramientas y Express con Advanced Services (32 bits) En la tabla siguiente se muestran los requisitos del sistema para SQL Server Express (32 bits), SQL Server Express con herramientas y SQL Server Express con Advanced Services (32 bits): Componente Requisito

Procesador

Tipo de procesador:

Procesador compatible con Pentium III o superior

Velocidad de procesador:


Sistema

Mnimo: 1,0 GHz

Recomendado: 2,0 GHz o ms

Windows XP SP2 Home

22

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

operativo Windows XP SP2 Professional Windows XP SP2 Tablet Windows XP SP2 Media Center 2002 Windows XP SP2 Media Center 2004 Windows XP Media Center 2005 Windows Server 2003 Reduced Media Windows XP Home Edition Reduced Media Windows Server 2003 SP2 Small Business Server R2 Standard Windows Server 2003 SP2 Small Business Server R2 Premium Windows Server 2003 SP2 Standard Windows Server 2003 2003 SP2 Enterprise Windows Server 2003 SP2 Datacenter Windows Server 2003 SP2 Web Edition Windows Server 2003 SP2 Small Business Server Standard Windows Server 2003 SP2 Small Business Server Premium Windows Server 2003 SP2 de 64 bits x64 Standard1 Windows Server 2003 SP2 de 64 bits x64 Datacenter1 Windows Server 2003 SP2 de 64 bits x64 Enterprise1 Windows Vista Ultimate Windows Vista Home Premium Windows Vista Home Basic Windows Vista Enterprise Windows Vista Business Windows Vista Ultimate de 64 bits x643 Windows Vista Home Premium de 64 bits x643 Windows Vista Home Basic de 64 bits x643 Windows Vista Enterprise de 64 bits x643 Windows Vista Business de 64 bits x643 Windows Server 2008 Standard Server Windows Server 2008 Standard Server sin Hyper-V Windows Server 2008 Enterprise Windows Server 2008 Enterprise sin Hyper-V Windows Server 2008 Datacenter

23

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Windows Server 2008 Datacenter sin Hyper-V Windows Server 2008 Web Edition Windows Server 2008 de 64 bits x64 Web Edition1 Windows Server 2008 de 64 bits x64 Standard Windows Server 2008 de 64 bits x64 Standard sin Hyper-V1 Windows Server 2008 de 64 bits x64 Datacenter Windows Server 2008 de 64 bits x64 Datacenter sin Hyper-V1 Windows Server 2008 de 64 bits x64 Enterprise Windows Server 2008 de 64 bits x64 Enterprise sin Hyper-V1 Windows XP Embedded SP2 Feature Pack 20072 Windows Embedded for Point of Service SP22 Windows 7 Ultimate4 Windows 7 Home Basic4 Windows 7 Home Premium4 Windows 7 Enterprise4 Windows 7 Professional4 Windows 7 de 64 bits x64 Ultimate1,4 Windows 7 de 64 bits x64 Home Basic1,4 Windows 7 de 64 bits x64 Home Premium1,4 Windows 7 de 64 bits x64 Enterprise1,4 Windows 7 de 64 bits x64 Professional1,4 Windows Server 2008 R2 de 64 bits x64 Web1,4 Windows Server 2008 R2 de 64 bits x64 Foundation1,4 Windows Server 2008 R2 de 64 bits x64 Standard1,4 Windows Server 2008 R2 de 64 bits x64 Enterprise1,4 Windows Server 2008 R2 de 64 bits x64 Datacenter1,4

Memoria

RAM:

Mnimo: 256 MB para SQL Server Express

Mnimo: 512 MB para SQL Server Express con herramientas y SQL Server Express con Advanced Services

Recomendado: 1,024 GB

Mximo: 1 GB para Database Engine (Motor de base de datos) que se instala con SQL Server Express, SQL Server Express con herramientas y SQL Server Express con Advanced Services, 4 GB para Reporting Services que se instala con SQL Server Express con Advanced Services

24

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
1Esta edicin de SQL Server 2008 se puede instalar en el subsistema de 32 bits de Windows on Windows 64 (WOW64) de un servidor de 64 bits.
2

Admite SQL Server 2008 Express, no SQL Server 2008 Express con herramientas y SQL Server 2008 Express con Advanced Services.

SQL Server 2008 Express con herramientas y SQL Server 2008 Express con Advanced Services se puede instalar en el subsistema Windows on Windows 64 (WOW64) de 32 bits de un servidor de 64 bits con este sistema operativo.
4

Se admite solamente en SQL Server SP1 o superior para SQL Server 2008 Express con herramientas y SQL Server 2008 Express con Advanced Services. Nota: La compatibilidad con SQL Server 2008 en Windows Server 2003 R2 es la misma que en Windows Server 2003 SP2.

SQL Server 2008 Express x64 (64 bits) En la tabla siguiente se muestran los requisitos del sistema para SQL Server 2008 Express x64 (64 bits): Componente Requisito

Procesador

Tipo de procesador:

Mnimo: AMD Opteron, AMD Athlon 64, Intel Xeon compatible con Intel EM64T, Intel Pentium IV compatible con EM64T

Velocidad de procesador:


Sistema operativo

Mnimo: 1,4 GHz

Recomendado: 2,0 GHz o ms

Windows Server 2003 x64 Windows Server 2003 SP2 de 64 bits x64 Standard1 Windows Server 2003 SP2 de 64 bits x64 Datacenter Windows Server 2003 SP2 de 64 bits x64 Enterprise1 Windows Vista Ultimate x64 Windows Vista Home Premium x64 Windows Vista Home Basic x64 Windows Vista Enterprise x64 Windows Vista Business x64 Windows Server 2008 de 64 bits x64 Web1 Windows Server 2008 de 64 bits x64 Standard Windows Server 2008 de 64 bits x64 Standard sin Hyper-V1 Windows Server 2008 de 64 bits x64 Datacenter Windows Server 2008 de 64 bits x64 Datacenter sin Hyper-V1 Windows Server 2008 de 64 bits x64 Enterprise Windows Server 2008 de 64 bits x64 Enterprise sin Hyper-V1 Windows 7 de 64 bits x64 Ultimate Windows 7 de 64 bits x64 Home Basic

25

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Windows 7 de 64 bits x64 Home Premium Windows 7 de 64 bits x64 Enterprise Windows 7 de 64 bits x64 Professional Windows Server 2008 R2 de 64 bits x64 Web1 Windows Server 2008 R2 de 64 bits x64 Foundation1 Windows Server 2008 R2 de 64 bits x64 Standard1 Windows Server 2008 R2 de 64 bits x64 Enterprise1 Windows Server 2008 R2 de 64 bits x64 Datacenter1

Memoria

RAM:

Mnimo: 256 MB

Recomendado: 1,024 GB

Mximo: 1 GB para Database Engine (Motor de base de datos)

1Herramientas de administracin es compatible con WOW64, una caracterstica de las ediciones de 64 bits de Microsoft Windows que permite que las aplicaciones de 32 bits se ejecuten en el modo de 32 bits de forma nativa. Las aplicaciones funcionan en el modo de 32 bits aunque el sistema operativo subyacente se ejecute en el sistema operativo de 64 bits. Nota: SQL Server 2008 no se admite en las instalaciones bsicas de servidor de Windows Server 2008.

Compatibilidad entre idiomas

La versin en ingls de SQL Server 2008 es compatible con todas las versiones traducidas de los sistemas operativos admitidos.

Las versiones traducidas de SQL Server 2008 son compatibles con sistemas operativos traducidos que estn en el mismo idioma que la versin traducida de SQL Server 2008. Las versiones localizadas de SQL Server se pueden actualizar a versiones localizadas de SQL Server 2008 del mismo idioma.

Las versiones localizadas de SQL Server no se pueden actualizar a la versin en ingls de SQL Server 2008. Las versiones localizadas de SQL Server no se pueden actualizar a versiones localizadas de SQL Server 2008 de un idioma distinto. Las versiones traducidas de SQL Server 2008 tambin son compatibles con las versiones en ingls de los sistemas operativos admitidos mediante la configuracin del Paquete de interfaz de usuario multilinge (MUI) de Windows. No obstante, deber comprobar algunas configuraciones del sistema operativo antes de instalar una versin traducida de SQL Server 2008 en un servidor que ejecute un sistema operativo en ingls con una configuracin de MUI que no sea en ingls. Compruebe que las siguientes configuraciones del sistema operativo coinciden con el idioma de SQL Server 2008 que desea instalar:

o o o

Configuracin de la interfaz de usuario del sistema operativo

Configuracin regional del usuario del sistema operativo

Configuracin regional del sistema

Si estas configuraciones del sistema operativo no coinciden con el idioma de la versin traducida de SQL Server, deber establecer correctamente estas configuraciones del sistema operativo antes de instalar SQL Server 2008.

Compatibilidad con sistemas extendidos Las versiones de 64 bits de SQL Server 2008 presentan compatibilidad con sistemas extendidos, tambin denominados Windows on Windows (WOW64). WOW64 es una caracterstica de las ediciones de 64 bits de Windows que permite que las aplicaciones de 32 bits se

26

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
ejecuten de forma nativa en el modo de 32 bits. Las aplicaciones funcionan en el modo de 32 bits aunque el sistema operativo subyacente se ejecute en el sistema operativo de 64 bits.

Requisitos de espacio en disco duro (32 y 64 bits) Durante la instalacin de SQL Server 2008, Windows Installer crea archivos temporales en la unidad del sistema. Antes de ejecutar el programa de instalacin para instalar o actualizar SQL Server, compruebe que dispone de al menos 2,0 GB de espacio en disco en la unidad del sistema para estos archivos. Este requisito es aplicable incluso si instala todos los componentes de SQL Server en una unidad distinta de la predeterminada. Los requisitos reales de disco duro dependen de la configuracin del sistema y de las caractersticas que decida instalar. En la tabla siguiente se muestran los requisitos de espacio en disco de los componentes de SQL Server 2008: Caracterstica Requisito de espacio en disco

Database Engine (Motor de base de datos) y archivos de datos, Replicacin y Bsqueda de texto 280 MB completo

Analysis Services y archivos de datos

90 MB

Reporting Services y Administrador de informes

120 MB

Integration Services

120 MB

Componentes de cliente

850 MB

Libros en pantalla de SQL Server y Libros en pantalla de SQL Server Compact

240 MB

Instalar SQL Server en un controlador de dominio Por razones de seguridad, Microsoft recomienda que no instale SQL Server 2008 en un controlador de dominio. El programa de instalacin de SQL Server no impedir la instalacin en un equipo que sea un controlador de dominio, pero se aplican las limitaciones siguientes:

En Windows Server 2003, los servicios de SQL Server se pueden ejecutar en una cuenta de dominio o en una cuenta de sistema local. No puede ejecutar los servicios de SQL Server en un controlador de dominio en una cuenta del servicio local o en una cuenta del servicio de red. Una vez instalado en un equipo de SQL Server, no puede cambiar el equipo de un miembro de dominio a un controlador de dominio. Debe desinstalar SQL Server antes de cambiar el equipo host a un controlador de dominio. Una vez instalado en un equipo de SQL Server, no puede cambiar el equipo de un controlador de dominio a un miembro de dominio. Debe desinstalar SQL Server antes de cambiar el equipo host a un miembro de dominio. Las instancias del clster de conmutacin por error de SQL Server no se admiten en el caso en que los nodos de clsteres sean controladores de dominio. El programa de instalacin de SQL Server no puede crear grupos de seguridad ni suministrar cuentas de servicio de SQL Server en un controlador de dominio de solo lectura. En este escenario, se producir un error en el programa de instalacin.

Clientes compatibles (64 bits) Los componentes de cliente de 64 bits de SQL Server 2008 pueden instalarse en Windows Server 2003 (64 bits).

RAID RAID (matriz redundante de discos independientes) es un sistema de discos, denominado matriz, que contiene varias unidades de disco para proporcionar mayor rendimiento, confiabilidad y capacidad de almacenamiento a un costo menor. Las matrices con tolerancia a errores estn divididas en seis niveles RAID: del 0 al 5. Cada nivel utiliza un algoritmo diferente para implementar la tolerancia a errores. Si bien RAID no forma parte de SQL Server, su implementacin puede afectar directamente al rendimiento de SQL Server. Con SQL Server se utilizan normalmente los niveles RAID 0, 1 y 5. Nota: RAID slo est disponible en Microsoft Windows 2000 y versiones posteriores. Una matriz de discos de hardware mejora el rendimiento de E/S debido a que las funciones de E/S, tales como la creacin de bandas y reflejos, se controlan de forma eficaz mediante el firmware. Por el contrario, una RAID basada en el sistema operativo representa un menor

27

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
costo pero consume ciclos del procesador. Cuando el costo representa un problema y se necesita redundancia y alto rendimiento, los volmenes RAID-5 son una buena solucin. La creacin de bandas de datos (RAID 0) es la configuracin RAID con mejor rendimiento, pero si un disco tiene errores, se deja de tener acceso a todos los datos del conjunto de bandas. Una tcnica comn de instalacin de los sistemas de administracin de bases de datos relacionales consiste en configurar la base de datos en una unidad RAID 0 y, a continuacin, colocar el registro de transacciones en una unidad reflejada (RAID 1). Puede obtener el mejor rendimiento de E/S de disco para la base de datos y mantener la posibilidad de recuperar los datos a travs de un registro de transacciones reflejado, siempre y cuando realice copias de seguridad de la base de datos con regularidad. Si es necesario recuperar rpidamente los datos, tenga en cuenta la posibilidad de reflejar el registro de transacciones y colocar la base de datos en un disco RAID 5. RAID 5 proporciona redundancia de todos los datos de la matriz. Esto permite que se generen errores en un solo disco y la mayora de las veces se reemplace sin que se produzca tiempo de inactividad del sistema. RAID 5 ofrece un rendimiento menor, en comparacin con RAID 0 o RAID 1, pero proporciona una confiabilidad mayor y una recuperacin ms rpida.

Niveles RAID y SQL Server Los niveles RAID (matriz redundante de discos independientes) 0, 1 y 5 suelen implementarse con SQL Server. Nivel 0 Este nivel tambin se conoce como creacin de bandas en disco porque utiliza un sistema de archivos de disco llamado conjunto de bandas. Los datos se dividen en bloques y se reparten con un orden fijo entre todos los discos de una matriz. RAID 0 mejora el rendimiento de lectura y escritura al repartir las operaciones en varios discos. As, las operaciones se pueden realizar de forma independiente y simultnea. RAID 0 es similar a RAID 5, pero RAID 5, adems, proporciona tolerancia a errores.

Nivel 1 Este nivel tambin se conoce como reflejo de discos porque utiliza un sistema de archivos de disco llamado conjunto de reflejos. El reflejo de discos proporciona una copia redundante e idntica de un disco seleccionado. Todos los datos que se escriben en el disco principal se escriben en el disco reflejado. RAID 1 proporciona tolerancia a errores y, normalmente, mejora el rendimiento de lectura, aunque puede empeorar el rendimiento de la escritura.

Nivel 2 Este nivel agrega redundancia al utilizar un mtodo de correccin de errores que reparte la paridad entre todos los discos. RAID 2 tambin emplea una estrategia de creacin de bandas en disco que divide un archivo en bytes y lo reparte en varios discos. Esta estrategia slo ofrece una mejora mnima en la utilizacin del disco y en el rendimiento de la lectura y escritura respecto al reflejo (RAID 1). RAID 2 no es tan eficaz como otros niveles RAID y no se suele utilizar.

Nivel 3

Este nivel utiliza el mismo mtodo de creacin de bandas que RAID 2, pero el mtodo de correccin de errores slo requiere un disco para los datos de paridad. La cantidad del espacio de disco utilizado vara segn el nmero de discos de datos. RAID 3 proporciona alguna mejora del rendimiento de lectura y escritura.

28

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Nivel 4

Este nivel emplea los datos en bandas con bloques o segmentos mucho ms grandes que RAID 2 o RAID 3. Al igual que RAID 3, el mtodo de correccin de errores slo requiere un disco para los datos de paridad. Esta caracterstica mantiene separados los datos del usuario de los datos de correccin de errores. RAID 4 no es tan eficaz como otros niveles RAID y no se suele utilizar.

Nivel 5

Este nivel, tambin conocido como creacin de bandas con paridad, constituye la estrategia ms utilizada en diseos nuevos. RAID 5 es similar a RAID 4, ya que este nivel separa bandas de datos en grandes bloques a travs de los discos de una matriz. Sin embargo, RAID 5 se diferencia en que escribe los datos de paridad en todos los discos. La informacin de paridad proporciona la redundancia de los datos. Los datos y la informacin de paridad se organizan en la matriz de discos de forma que los dos tipos de informacin estn siempre en discos diferentes. La creacin de bandas con paridad ofrece un rendimiento superior al reflejo de discos (RAID 1). Sin embargo, cuando falta un miembro de una banda, el rendimiento de la lectura se reduce, por ejemplo, cuando se produce un error en un disco.

Nivel 10 (1+0) Este nivel tambin se conoce como reflejo con creacin de bandas. RAID 10 utiliza una matriz de discos con bandas que despus se reflejan en otro conjunto idntico de discos con bandas. Por ejemplo, se puede crear una matriz en bandas con cinco discos. A continuacin, la matriz de discos con bandas se refleja mediante otro conjunto de cinco discos con bandas. RAID 10 proporciona las ventajas de rendimiento de la creacin de bandas en disco y la redundancia de disco del reflejo. RAID 10 es el nivel que proporciona un mayor rendimiento de lectura y escritura, pero utiliza el doble de discos. Los niveles RAID superiores a 10 (1+0) pueden ofrecer mejoras adicionales de rendimiento o de tolerancia a errores. Generalmente, estos niveles son sistemas de propietario. Para obtener informacin acerca de estos tipos de sistemas RAID, pngase en contacto con el fabricante del hardware. Comparar diferentes implementaciones de niveles RAID En las tablas siguientes se muestran las ventajas y desventajas del uso de las diversas implementaciones de RAID (matriz redundante de discos independientes). Implementacin de RAID Ventaja Desventaja

Volmenes

RAID-5

de

Microsoft No implica un costo de hardware adicional.

Utiliza

recursos

de

Windows 2000 o posterior

procesamiento del sistema.

Creacin hardware

de

bandas

basada

en No compite por los ciclos del procesador. Mejor rendimiento Costo de todas las implementaciones de RAID.

adicional

de

hardware

especializado.

Las soluciones RAID que se suelen utilizar con SQL Server proporcionan diversos niveles de redundancia y tolerancia a errores. Implementacin de RAID Ventaja Desventaja

RAID 3, 5 o 10 basado en hardware

Rendimiento excelente. No compite por los ciclos Costo. del procesador.

RAID 1 basado en hardware

Redundancia excelente. No compite por los ciclos Costo adicional debido a que se necesita del procesador. ms hardware.

RAID 10 basado en hardware

Rendimiento excelente. Redundancia excelente.

Costo adicional debido a que se necesita ms hardware.

Volmenes reflejados de Windows 2000 Buena redundancia. Bajo costo.

Utiliza

recursos

de

procesamiento

del

29

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

o posterior

sistema.

RAID 5 basado en Windows 2000

Rendimiento de lectura excelente. Bajo costo.

Utiliza sistema.

recursos

de

procesamiento

del

Particiones La creacin de particiones en una base de datos mejora el rendimiento y simplifica el mantenimiento. Al dividir una tabla grande en tablas individuales ms pequeas, las consultas que tengan acceso nicamente a una parte de los datos pueden ejecutarse con mayor rapidez, ya que deben recorrer menos datos. Las tareas de mantenimiento (por ejemplo, volver a generar los ndices o hacer copias de seguridad de una tabla), pueden ejecutarse con mayor rapidez. Se puede conseguir la creacin de particiones sin dividir las tablas si las tablas se colocan fsicamente en unidades de disco individuales. La colocacin de una tabla en una unidad fsica y de las tablas relacionadas en una unidad independiente puede mejorar el rendimiento de las consultas, debido a que, cuando se ejecutan consultas que implican combinaciones entre las tablas, varios encabezados de discos leen los datos al mismo tiempo. Se pueden utilizar grupos de archivos de SQL Server para especificar los discos en los que se colocarn las tablas.

Particiones de hardware La creacin de particiones de hardware disea la base de datos de forma que aproveche la arquitectura del hardware disponible. Estos son ejemplos de particiones de hardware:

Varios procesadores que permiten mltiples subprocesos de operaciones, lo que permite que muchas consultas se ejecuten al mismo tiempo. Opcionalmente, una sola consulta puede ejecutarse ms rpidamente en varios procesadores, ya que permiten la ejecucin simultnea de los componentes de la consulta. Por ejemplo, distintos subprocesos pueden recorrer al mismo tiempo cada una de las tablas a las que hace referencia la consulta. Dispositivos RAID (matriz redundante de discos independientes) que permiten crear bandas de datos a travs de varias unidades de disco, para obtener un acceso ms rpido a los datos, ya que hay ms cabezales de lectura y escritura que leen los datos al mismo tiempo. Normalmente, se puede recorrer ms rpidamente una tabla separada en bandas a travs de varias unidades que la misma tabla almacenada en una sola unidad. De forma alternativa, almacenar tablas en unidades independientes desde las tablas relacionadas puede mejorar de forma significativa el rendimiento de las consultas que combinan esas tablas.

Crear particiones horizontales La creacin de particiones horizontales divide una tabla en varias tablas. As, cada tabla contiene el mismo nmero de columnas, pero menos filas. Por ejemplo, se podra crear una particin horizontal de una tabla que contenga mil millones de filas en 12 tablas; cada una de las tablas ms pequeas representara un mes de datos de un ao especfico. Las consultas que requieran datos de un mes especfico slo hacen referencia a la tabla apropiada. La determinacin del modo de crear particiones horizontales de las tablas depende de cmo se analicen los datos. Debera crear particiones de tablas de forma que las consultas hagan referencia al menor nmero posible de tablas. De lo contrario, un nmero excesivo de consultas UNION, utilizadas para mezclar las tablas de forma lgica en el momento de la consulta, podra afectar al rendimiento. Es comn crear particiones horizontales de datos basadas en la edad y el uso. Por ejemplo, una tabla puede contener datos de los ltimos cinco aos, pero normalmente slo se obtiene acceso a los datos del ao actual. En este caso, puede considerar la posibilidad de crear particiones de datos en cinco tablas, cada una de las cuales contendr slo los datos de un ao.

Particionamiento vertical El particionamiento vertical divide una tabla en varias tablas que contienen menos columnas. Los dos tipos de particionamiento vertical son la normalizacin y la divisin de filas:

La normalizacin es el proceso estndar de bases de datos que consiste en quitar columnas redundantes de una tabla y colocarlas en tablas secundarias vinculadas a la tabla principal mediante relaciones de clave principal y clave externa. La divisin de filas divide verticalmente la tabla original en tablas con menos columnas. Cada fila lgica de una tabla dividida coincide con la misma fila lgica en las dems tablas, segn se identifica en la columna UNIQUE KEY que es idntica en todas las tablas con particiones. Por ejemplo, al combinar la fila con el Id. 712 de cada tabla dividida se vuelve a crear la fila original.

Al Igual que las particiones horizontales, el particionamiento vertical permite a las consultas recorrer menos datos. De ese modo se aumenta el rendimiento de las consultas. Por ejemplo, una tabla que contenga siete columnas de las cuales generalmente slo se hace referencia a las cuatro primeras, puede beneficiarse de la divisin de las tres ltimas columnas en una tabla independiente. El particionamiento vertical se debe considerar detenidamente, ya que analizar datos de varias particiones requiere consultas que combinen las tablas. El particionamiento vertical tambin puede afectar al rendimiento si las particiones son muy grandes. Soluciones basadas en hardware Por lo general, las soluciones basadas en hardware se implementan mediante los niveles RAID (matriz redundante de discos independientes) 0, 1, 3 y 5. La RAID basada en hardware utiliza un controlador de unidades inteligente y una matriz redundante de unidades de disco para proteger frente a la prdida de datos en caso de producirse errores en los medios y para mejorar el rendimiento de las operaciones de lectura/escritura. Una matriz de discos es una solucin eficaz de almacenamiento en disco para equipos que ejecutan SQL Server. Los niveles RAID 1 a 5 basados en hardware automatizan la redundancia y la tolerancia a errores en el nivel de hardware. Ninguno de los niveles (0 a 5) provoca la sobrecarga del procesador del sistema. Normalmente, los archivos de datos individuales se reparten entre ms de

30

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
un disco. Puede implementar una solucin RAID basada en hardware que proporcione a un sistema la recuperacin fluida y continua despus de un error de los medios. Por lo general, una RAID basada en hardware ofrece ventajas de rendimiento con respecto a una RAID basada en software de Windows 2000 y versiones posteriores. Por ejemplo, puede mejorar significativamente el rendimiento de los datos si se implementa RAID 5 a travs de un hardware que no utilice recursos de software del sistema. Esto se consigue al utilizar ms discos de una capacidad determinada que los que utiliza una solucin de almacenamiento convencional. El rendimiento de la lectura y escritura y el tamao de almacenamiento total pueden mejorar si se utilizan varios controladores. Segn la configuracin, una RAID basada en hardware proporciona generalmente un buen rendimiento. Tambin facilita la administracin de varios discos porque permite tratar una matriz de discos como uno solo. Incluso puede reemplazar una unidad con errores sin cerrar el sistema. La desventaja de una solucin basada en hardware es el costo que supone. Tambin puede significar la dependencia con respecto a un fabricante.

Compresin de datos SQL Server 2008 admite la compresin de filas y pginas tanto para tablas como para ndices. La compresin de datos se puede configurar para los objetos de base de datos siguientes:

Una tabla entera que est almacenada como un montn. Una tabla entera que est almacenada como un ndice clster.

Un ndice no clster entero. Una vista indizada entera.

Para tablas e ndices con particiones, la opcin de compresin se puede configurar para cada particin y las diferentes particiones de un objeto no tienen por qu tener la misma configuracin de compresin.

Este tema es cubierto con lujo de detalles en la Seccin 24 de este Manual. 24 Disear una estrategia de compresin de datos. Considerar: nivel de fila o de pgina, frecuencia de actualizaciones, tasa de compresin, comprimir particiones, ndices especficos

NUMA Microsoft Microsoft SQL Server est preparado para el acceso no uniforme a memoria (NUMA) y realiza un buen rendimiento en hardware NUMA sin necesidad de establecer ninguna configuracin especial. A medida que aumentan la velocidad del reloj y el nmero de procesadores, resulta cada vez ms difcil reducir la latencia de la memoria necesaria para utilizar esta potencia de procesamiento adicional. Para evitarlo, los proveedores de hardware proporcionan cachs L3 grandes, pero esto es slo una solucin limitada. La arquitectura NUMA proporciona una solucin escalable a este problema. SQL Server se ha diseado para aprovechar los equipos basados en NUMA sin necesidad de realizar cambios en las aplicaciones. Conceptos de NUMA La tendencia en el hardware ha sido tener ms de un bus del sistema, y que cada uno de ellos sirva a un pequeo conjunto de procesadores. Cada grupo de procesadores tiene su propia memoria y, posiblemente, sus propios canales de E/S. Sin embargo, cada CPU puede tener acceso a la memoria asociada a otros grupos de forma coherente. Cada grupo se denomina nodo NUMA. El nmero de CPU dentro de un nodo NUMA depende del proveedor de hardware. Resulta ms rpido tener acceso a la memoria local que a la memoria asociada a otros nodos NUMA. Por este motivo se la denomina arquitectura de acceso no uniforme a memoria. En hardware de NUMA, algunas regiones de la memoria residen en buses fsicamente distintos de otras regiones. Puesto que NUMA utiliza memoria local y externa, tardar ms tiempo en obtener acceso a algunas regiones de memoria. Los trminos memoria local y memoria externa se suelen usar para hacer referencia a un subproceso que se est ejecutando. La memoria local es la que se encuentra en el mismo nodo en que la CPU est ejecutando el subproceso actualmente. As pues, toda memoria que no pertenezca al nodo en el que se est ejecutando actualmente el subproceso ser externa. La memoria externa tambin se denomina memoria remota. La relacin entre lo que cuesta obtener acceso a una memoria externa y a una memoria local se denomina relacin NUMA. Si la relacin NUMA es 1, se trata de multiproceso simtrico (SMP). Cuanto mayor sea la relacin, ms costar obtener acceso a la memoria de los dems nodos. A veces, el rendimiento de las aplicaciones de Windows que no estn preparadas para NUMA (incluido el Service Pack 3 de SQL Server 2000 y anteriores) es deficiente en hardware de NUMA. La principal ventaja de NUMA es su escalabilidad. La arquitectura NUMA fue diseada para traspasar los lmites de escalabilidad de la arquitectura SMP. Con SMP, el acceso a la memoria se expone en el mismo bus de memoria compartida. Esto funciona perfectamente en un nmero relativamente reducido de CPU, pero no cuando existen docenas, incluso cientos, de CPU que compiten para tener acceso al bus de memoria compartida. NUMA alivia estos cuellos de botella limitando el nmero de CPU en cualquier bus de memoria y conectando los nodos mediante una interconexin de alta velocidad.

31

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

NUMA de hardware y NUMA de software NUMA puede hacer coincidir la memoria con las CPU a travs de un hardware especializado (NUMA de hardware) o mediante la configuracin de la memoria de SQL Server (NUMA de software). Durante el inicio, SQL Server se configura basndose en el sistema operativo subyacente y en la configuracin del hardware o en la configuracin NUMA de software. Tanto para NUMA de hardware como de software, cuando SQL Server inicia una configuracin NUMA, el registro de SQL Server registra un mensaje de configuracin multimodo por cada nodo, junto con la mscara de CPU.

NUMA de hardware Los equipos con NUMA de hardware disponen de ms de un bus del sistema y cada uno de ellos sirve a un pequeo conjunto de procesadores. Cada grupo de procesadores tiene su propia memoria y, posiblemente, sus propios canales de E/S. Sin embargo, cada CPU puede tener acceso a la memoria asociada a otros grupos de forma coherente. Cada grupo se denomina nodo NUMA. El nmero de CPU dentro de un nodo NUMA depende del proveedor de hardware. El fabricante de hardware le puede indicar si su equipo es compatible con NUMA de hardware. Si tiene NUMA de hardware, lo puede configurar para que utilice memoria intercalada en vez de NUMA. En ese caso, Windows y, por tanto, SQL Server no lo reconocern como NUMA. Ejecute la siguiente consulta para conocer el nmero de nodos de memoria disponibles para SQL Server: SELECT DISTINCT memory_node_id FROM sys.dm_os_memory_clerks Si SQL Server devuelve slo un nico nodo de memoria (nodo 0), significar que no dispone de NUMA de hardware, o que el hardware est configurado como intercalado (no NUMA). Si cree que NUMA de hardware no est correctamente configurado, pngase en contacto con el proveedor de hardware para habilitar NUMA. SQL Server omite la configuracin de NUMA si NUMA de hardware tiene cuatro o menos CPU y al menos un nodo tiene nicamente una CPU.

NUMA de software SQL Server le permite agrupar las CPUs en nodos que se conocen como NUMA de software. Lo ms habitual es configurar NUMA de software si se tienen muchas CPU y no se dispone de NUMA de hardware, aunque tambin puede utilizar NUMA de software para subdividir los nodos NUMA de hardware en grupos ms pequeos. nicamente el programador de SQL Server y la interfaz de red de SQL Server (SNI) estn preparados para NUMA de software. Los nodos de memoria se crean en funcin de NUMA de hardware y, por tanto, no se ven influidos por NUMA de software. Por tanto, si por ejemplo tiene un equipo SMP con ocho CPU y crea cuatro nodos NUMA de software con dos CPU en cada uno, slo tendr un nodo de memoria sirviendo a los cuatro nodos NUMA. NUMA de software no proporciona afinidad entre memoria y CPU. Entre las ventajas de NUMA de software se incluyen la reduccin de E/S y los cuellos de botella de escritura diferida en los equipos con muchas CPU y sin NUMA de hardware. Existe un nico subproceso de E/S y un nico subproceso de escritura diferida para cada nodo NUMA. Dependiendo del uso de la base de datos, estos subprocesos nicos pueden suponer un cuello de botella importante para el rendimiento. La configuracin de cuatro nodos NUMA de software proporciona cuatro subprocesos de E/S y cuatro subprocesos de escritura diferida, lo que podra mejorar el rendimiento. No puede crear un NUMA de software que incluya varias CPU de diferentes nodos NUMA de hardware. Por ejemplo, si su hardware tiene ocho CPU (0...7) y dispone de dos nodos NUMA de hardware (0-3 y 4-7), podr crear NUMA de software combinando CPU(0,1) y CPU(2,3). No puede crear NUMA de software utilizando CPU (1, 5), pero puede utilizar la afinidad de CPU para establecer afinidad con una instancia de SQL Server para CPU procedentes de diferentes nodos NUMA. Por tanto, en el ejemplo anterior, si SQL Server usa las CPU 0-3, tendr un subproceso de E/S y un subproceso de escritura diferida. Si en el ejemplo anterior SQL Server utiliza las CPU 1, 2, 5 y 6, tendr acceso a dos nodos NUMA y tendr dos subprocesos de E/S y dos subprocesos de escritura diferida. Nota: Algunas configuraciones de hardware comparten recursos comunes como una cach en L3 o en L4. Los procesadores se pueden agrupar en torno a estos recursos compartidos para crear nodos NUMA de software.

Cmo SQL Server es compatible con NUMA Los siguientes cambios clave se insertaron en SQL Server 2005 para aprovechar la arquitectura de acceso no uniforme a memoria (NUMA). Agrupaciones de CPU comunes SQL Server agrupa a los programadores para que se asignen a la agrupacin de CPUs en funcin del lmite de NUMA de hardware expuesto por Windows. Por ejemplo, una caja de 16 vas puede tener 4 nodos NUMA y cada nodo, 4 CPU. De esta forma, se mejora la proximidad de la memoria para el grupo de programadores cuando las tareas se procesan en el nodo. SQL Server le permite subdividir aun ms las CPUs

32

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
asociadas a un nodo NUMA de hardware en mltiples nodos de CPU. Esto se denomina NUMA de software. Normalmente, se subdividiran las CPU para crear particiones del trabajo en los nodos de CPU. Cuando un subproceso que se ejecuta en un nodo NUMA de hardware especfico asigna memoria, el administrador de memoria de SQL Server intenta asignar memoria a partir de la memoria asociada al nodo NUMA por proximidad de la referencia. De forma similar, las pginas del grupo de bferes se distribuyen por los nodos NUMA de hardware. Para un subproceso es ms eficaz tener acceso a la memoria de una pgina de bfer que est asignada en la memoria local que tener acceso a dicha pgina desde una memoria externa. Cada nodo NUMA (NUMA de hardware o NUMA de software) tiene un puerto de finalizacin de E/S asociado que se utiliza para procesar la E/S de red. Este puerto ayuda a distribuir el control de E/S de red entre los mltiples puertos. Cuando se realiza una conexin del cliente con SQL Server, el cliente se enlaza a uno de los nodos. Todas las solicitudes de lotes de este cliente se procesarn en ese nodo. Cada vez que se inicia la instancia de SQL Server en un entorno NUMA, el registro de errores de SQL contiene mensajes informativos que describen la configuracin NUMA.

Cmo asigna SQL Server nodos NUMA de software a nodos NUMA de hardware NUMA de software se define una vez para todas las instancias de SQL Server en el equipo, por lo que varias instancias de Database Engine (Motor de base de datos) vern los mismos nodos NUMA de software. Por tanto, cada instancia de Database Engine (Motor de base de datos) utiliza la opcin affinity mask para seleccionar las CPU adecuadas. Cada instancia usar entonces los nodos NUMA de software que estn asociados con esas CPU. Al iniciarse, Windows asigna memoria al sistema operativo desde el NODO 0 de hardware. En consecuencia, el NODO 0 de hardware tiene menos memoria local disponible para otras aplicaciones que los otros nodos. Este problema se acenta si la cach del sistema de archivos es grande. Cuando se inicia SQL Server en un equipo con ms de un nodo NUMA, intenta iniciar en otro nodo NUMA diferente al NODO 0 con el fin de que sus estructuras globales se puedan asignar en la memoria local.

Cmo se asignan las conexiones a los nodos NUMA Tanto TCP como VIA pueden establecer afinidad con las conexiones a uno o varios nodos NUMA especficos. Cuando no se establece afinidad, o cuando se conectan a travs de canalizaciones con nombre o memoria compartida, las conexiones se distribuyen a los nodos NUMA por turnos. En un nodo NUMA, la conexin se ejecuta en el programador menos cargado de ese nodo. Debido a la naturaleza de la asignacin por turnos de las nuevas conexiones, es posible que todas las CPU de un nodo estn ocupadas mientras que otro nodo est inactivo. Si tiene muy pocas CPU (por ejemplo, 2) y si ve grandes desequilibrios de programacin debido a los lotes de larga duracin como la carga masiva, conseguir un mejor rendimiento si desactiva NUMA.

Limitaciones de las versiones de SQL Server SQL Server 2000 a travs del Service Pack 3 no incluye compatibilidad especial para NUMA; sin embargo, el Service Pack 4 cuenta con algunas optimizaciones de NUMA limitadas. SQL Server 2005 incluye muchas mejoras importantes y se recomienda a los usuarios de NUMA que actualicen a SQL Server 2005 para aprovechar todas las ventajas de la arquitectura NUMA. Aumentar o reducir el grupo de bferes en NUMA En este tema se describe la forma en que se asignan las pginas de memoria del grupo de bferes cuando se utiliza acceso no uniforme a memoria (NUMA). Use esta informacin para saber cmo SQL Server utiliza NUMA y aprender a interpretar los contadores del objeto buffer node.

Distribucin de memoria

Existe un nodo de memoria SQL Server por cada nodo fsico NUMA. Los nodos de memoria aumentan de forma independiente unos de otros, pero dividen la memoria de modo uniforme. Para mostrar la distribucin de memoria local frente a memoria externa en SQL Server, este tema utiliza un ejemplo que da por supuesto que el equipo tiene 16 gigabytes (GB) de memoria. Otras aplicaciones, entre ellas Windows, han utilizado parte de la memoria de cada nodo, SQL Server ha asignado parte de la memoria a sus procesos fuera del grupo de bferes y SQL Server tiene 10 GB de memoria para asignar al grupo de bferes. La memoria del grupo de bferes se divide entre cuatro nodos fsicos NUMA (N0, N1, N2 y N3), cada uno con la siguiente memoria local disponible:

N0 1 GB

N1 3 GB N2 3 GB

N3 3 GB

En la configuracin anterior, todos los nodos podran asignar y utilizar 2,5 GB de memoria; sin embargo, el nodo N0 terminar con 1,0 GB de su propia memoria y 1,5 GB de la memoria de otros nodos.

Asignacin de memoria durante el inicio

33

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Cuando se utiliza NUMA, SQL Server recibe una cantidad de memoria del sistema operativo similar a la que recibe un sistema no NUMA, incluso si la memoria libre inicial no se distribuye entre los nodos de modo uniforme. El grupo de bferes intenta obtener el mximo de memoria local posible para cada nodo; no obstante, esto es difcil porque Windows no tiene actualmente una API para la asignacin de memoria desde un nodo especfico. A medida que la memoria se asigna a SQL Server, se puede ver que algunos nodos reciben muchas pginas de otros nodos NUMA (denominadas pginas externas). Sin embargo, estas pginas no se utilizan durante el arranque porque, con frecuencia, pueden transferirse al nodo propietario y convertirse en locales para ese nodo. Algunos nodos pueden tener memoria externa cuando se alcance el valor de max server memory, pero una vez que se obtiene la memoria de destino, el grupo de bferes tratar de forma idntica a la memoria local y a la externa. Por ejemplo, en caso de presin de la memoria, el grupo de bferes no realizar ningn esfuerzo para liberar pginas de memoria externa antes que pginas de memoria local. Limitar la memoria a nodos especficos Si se ha configurado SQL Server para que se ejecute en un subconjunto de nodos NUMA disponibles, el grupo de bferes no se limitar automticamente a la memoria de esos nodos. En este caso, utilice la opcin max server memory para limitar el grupo de bferes.

Liberar memoria de un nodo Cuando se utiliza NUMA, los valores max server memory y min server memory se dividen de modo uniforme entre los nodos NUMA. Por ejemplo, si configura max server memory en 16 GB en el sistema con cuatro nodos, el grupo de bferes asigna 4 GB de memoria a cada nodo. Si desconecta uno de los nodos modificando el parmetro affinity mask, el parmetro max server memory se redistribuir entre los nodos restantes. As, en el ejemplo anterior de cuatro nodos, si desconecta dos nodos, los 8 GB de memoria libres se distribuirn de modo uniforme entre los nodos restantes. Dado que el grupo de bferes es capaz de utilizar pginas externas, si no hay memoria suficiente en los nodos restantes se utilizar memoria remota. Si desea que SQL Server no utilice memoria de los nodos que no estn ya en ejecucin, debe reducir el parmetro max server memory despus de desconectar los nodos.

Pginas externas Los nodos funcionan de forma totalmente independiente unos de otros. Todas las asignaciones y cancelaciones de asignacin de memoria para un nodo se realizan utilizando la memoria asociada al nodo. Sin embargo, si un trabajo que se ejecuta en el nodo N1 necesita obtener acceso a una base de datos que ya se encuentra en la memoria del nodo N2, tendr acceso a la memoria no local.

Observar la memoria local frente a la externa en el grupo de bferes

Se puede observar el grupo de bferes mediante el examen del objeto Buffer Node. La memoria total del grupo de bferes para SQL Server se muestra en el contador Pginas de destino del objeto Buffer Manager. La memoria del grupo de bferes para cada nodo se muestra en el contador Pginas de destino del objeto Buffer Node.

Cada nodo procesa el punto de comprobacin de su propia memoria Cada nodo de memoria tiene su propio subproceso de escritura diferida. Los puntos de comprobacin implcito y explcito llaman a este subproceso. Puesto que un equipo de multiproceso simtrico (SMP) slo tiene un subproceso de punto de comprobacin, los diferentes subprocesos en el uso de NUMA tienen como resultado un aumento de la velocidad del punto de comprobacin.

Comportamiento del recorrido de tabla Un recorrido de tabla que se ejecute en el nodo N1 slo llenar la memoria asociada al nodo N1, a menos que el recorrido se ejecute en paralelo en las CPU de varios nodos. Si el recorrido se ejecuta exclusivamente en un solo nodo, slo se utilizarn las pginas de bfer de ese nodo. Esto sirve de ayuda en la particin de la carga de trabajo de una aplicacin. Escenarios de NUMA En equipos que tienen muchas CPU, el hardware de acceso no uniforme a memoria (NUMA) puede mejorar el rendimiento de forma considerable al asignar memoria dedicada a cada CPU. Este tema presenta algunas configuraciones de NUMA, afinidad de CPU y afinidad de conexiones que pueden mejorar el rendimiento de determinados escenarios. Los siguientes valores de configuracin afectan a estas configuraciones:

El hardware de NUMA lo proporciona el fabricante del equipo.

El NUMA de software se configura en el Registro. La afinidad de CPU se configura con la opcin affinity mask.

La afinidad de puertos con NUMA se configura como un valor de servidor mediante el Administrador de configuracin de SQL Server.

Escenarios tiles Los siguientes escenarios suelen darse a menudo cuando se utiliza NUMA.

34

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
A. No existe afinidad de puertos con NUMA Se trata del estado predeterminado en un equipo con NUMA de hardware y una nica instancia de SQL Server. Todo el trfico entra por un solo puerto y se distribuye por turnos a todos los nodos NUMA que estn disponibles. NUMA mejora la proximidad de la memoria y el acceso a la CPU, y aumenta el nmero de subprocesos de E/S y de escritura diferida. Una vez establecidas las conexiones, el nodo se convierte en su mbito, , lo que proporciona el equilibrio automtico de la carga entre los nodos NUMA. Las aplicaciones cliente pueden conectarse a un solo puerto y su implementacin es ms fcil.

B. Se asocia un nico puerto a varios nodos para mejorar el rendimiento de una aplicacin prioritaria Configure la afinidad de un puerto con varios nodos NUMA de hardware para dar servicio a una aplicacin de mayor prioridad. Configure la afinidad de un segundo puerto con otro nodo NUMA de hardware para dar servicio a una aplicacin secundaria. La memoria y los recursos de CPU de las dos aplicaciones estn asignados de forma desequilibrada, proporcionando as a la aplicacin principal el triple de memoria local y el triple de recursos de CPU en comparacin con la aplicacin secundaria. La aplicacin secundaria puede ser una segunda instancia de Database Engine (Motor de base de datos), una funcin menos importante de la misma instancia de Database Engine (Motor de base de datos) o incluso la misma base de datos. As puede crearse una ejecucin de subprocesos prioritaria mediante el uso de recursos adicionales para la conexin que se favorece.

C. Se asocian varios puertos a varios nodos Es posible asignar varios puertos a los mismos nodos NUMA. Esto permite configurar permisos distintos para varios puertos. Por ejemplo, puede restringir de forma estricta el acceso proporcionado a travs de un puerto mediante el control de los permisos del extremo TCP correspondiente. En este ejemplo, el puerto 1450 est disponible para toda la intranet. El puerto 1433 est abierto a Internet a travs de un firewall, pero el acceso es muy restringido. Ambos puertos utilizan NUMA al completo y por igual.

Asignar subprocesos a una CPU De forma predeterminada, cada instancia de SQL Server inicia cada subproceso. A continuacin, el sistema operativo asigna cada subproceso a una CPU determinada. El sistema operativo distribuye los subprocesos de las instancias de SQL Server de manera uniforme

35

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
entre los microprocesadores o las CPU de un equipo. En ocasiones, tambin puede mover un subproceso de una CPU que se utiliza mucho a otra CPU. Los administradores de SQL Server pueden utilizar la opcin de configuracin affinity mask para que una o varias CPU no sean aptas para ejecutar subprocesos de una instancia especfica de SQL Server. El valor de affinity mask especifica un patrn de bits que indica las CPU que se utilizan para ejecutar subprocesos de esa instancia de SQL Server. Por ejemplo, el valor 13 de affinity mask representa el patrn de bits 1101. En un equipo con cuatro CPU, esto indica que los subprocesos de esa instancia de SQL Server se pueden programar en las CPU 0, 2 y 3, pero no en la 1. Si se especifica affinity mask, la instancia de SQL Server asignar subprocesos de manera uniforme a las CPU que se han incluido en la mscara. Otro efecto de affinity mask es que el sistema operativo no mueve subprocesos de una CPU a otra. Sin embargo, affinity mask se usa con poca frecuencia. La mayora de los sistemas obtienen un rendimiento ptimo permitiendo que el sistema operativo programe los subprocesos entre las CPU disponibles. Usar la opcin lightweight pooling La sobrecarga que supone el cambio de contexto de los subprocesos no es excesiva. La mayora de las instancias de SQL Server no experimentarn ninguna diferencia de rendimiento si se establece la opcin lightweight pooling en 0 o en 1. Las nicas instancias de SQL Server que podran mejorar con lightweight pooling son las que se ejecutan en un equipo de las siguientes caractersticas:

Un servidor de gran tamao con varias CPU. Todas las CPU se ejecutan casi al mximo de su capacidad.

Hay muchos cambios de contexto.

Estos sistemas pueden notar un pequeo incremento en el rendimiento si el valor de lightweight pooling se establece en 1. No se recomienda utilizar la programacin en modo de fibra para un funcionamiento habitual. La razn es que puede reducir el rendimiento al eliminar las ventajas normales del cambio de contexto, y que algunos componentes de SQL Server no funcionan correctamente en modo de fibra. Programar tareas o lotes en SQL Server Cada instancia de SQL Server es un proceso independiente del sistema operativo. Cada instancia tiene que controlar miles de solicitudes simultneas de los usuarios. Las instancias de SQL Server utilizan subprocesos de Microsoft Windows o, si estn configuradas, fibras, para administrar estas tareas simultneas de manera eficaz. Cada instancia de SQL Server ejecuta siempre varios subprocesos para procesos del sistema. Esto incluye uno o varios subprocesos para cada biblioteca de red del servidor, un subproceso de red para controlar la E/S de red y un subproceso de seales para comunicarse con el Administrador de control de servicios. Descripcin de la programacin Cada instancia de SQL Server tiene un nivel interno que implementa un entorno similar a un sistema operativo. Este nivel interno se utiliza para la programacin y sincronizacin de tareas simultneas sin tener que llamar al kernel de Windows. Tambin puede programar fibras o subprocesos de Windows de forma eficaz. Cada instancia de SQL Server mantiene un grupo de fibras o subprocesos de Windows para procesar las consultas del usuario. El tamao mximo de este grupo se controla mediante la opcin de configuracin del servidor max worker threads. Para comprender cmo se procesa una solicitud o tarea, le ser de ayuda entender los siguientes trminos bsicos: conexin Se establece una conexin cuando el usuario inicia una sesin correctamente. A continuacin, el usuario puede enviar una o varias instrucciones de Transact-SQL para ejecutarse. Una conexin se cierra cuando el usuario la cierra explcitamente o cuando se termina. lote Un lote SQL es un conjunto de una o varias instrucciones de Transact-SQL enviadas desde un cliente a una instancia de SQL Server para ejecutarse. Representa una unidad de trabajo enviada por los usuarios al Database Engine (Motor de base de datos). tarea Una tarea representa una unidad de trabajo programada por SQL Server. Un lote puede estar asignado a una o varias tareas. Por ejemplo, una consulta en paralelo ser ejecutada por varias tareas. Subproceso de Windows Cada subproceso de Windows representa un mecanismo de ejecucin independiente. fibra Una fibra es un subproceso ligero que requiere menos recursos que un subproceso de Windows y que puede cambiar el contexto en el modo de usuario. Un subproceso de Windows se puede asignar a varias fibras. subproceso de trabajo Un subproceso de trabajo representa un subproceso lgico en SQL Server asignado internamente (1:1) a un subproceso de Windows o, si se ha seleccionado el valor ON para lightweight pooling, a una fibra. La asignacin se mantiene hasta que se cancela la asignacin del subproceso de trabajo a causa de presin de memoria o porque ha estado inactiva durante un tiempo prolongado. La asociacin entre una tarea y un subproceso de trabajo se mantiene a lo largo de la duracin de la tarea.

Administrar conexiones de usuario y recursos de subprocesos de trabajo Aunque los subprocesos y las fibras utilizan los recursos de manera moderada, los consumen. En sistemas con cientos o miles de conexiones de usuario que tienen un subproceso de trabajo por conexin, el consumo de recursos puede reducir la eficacia de SQL Server. Sin embargo, no es necesario asignar un subproceso de trabajo dedicado para cada conexin de usuario, pues la mayora de las conexiones en realidad pasan gran parte del tiempo esperando la recepcin de los lotes enviados por el cliente. En cambio, la instancia de SQL Server utiliza un grupo de subprocesos de trabajo. El grupo de subprocesos de trabajo slo debe ser lo suficientemente grande como para dar servicio al nmero de conexiones de usuario que ejecutan lotes al mismo tiempo en esa instancia. Si se deja la opcin max worker

36

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
threads con su valor predeterminado de 0, la instancia de SQL Server podr asignar eficazmente las conexiones de usuario a varios subprocesos de trabajo. De este modo se garantiza que no consuman demasiados recursos.

Configurar SQL Server para fibras La opcin de configuracin del servidor lightweight pooling controla si una instancia de SQL Server utiliza fibras o subprocesos de Windows. El valor predeterminado de esta opcin es 0. Esto indica que la instancia de SQL Server programa un subproceso de Windows por subproceso de trabajo, hasta el mximo establecido en la opcin max worker threads. Si se selecciona un valor de 1 para la opcin lightweight pooling, SQL Server utilizar fibras en lugar de subprocesos de Windows. Esto se denomina ejecucin en modo de fibra. En modo de fibra, una instancia de SQL Server asigna un subproceso de Windows por programador de SQL y, a continuacin, una fibra por subproceso de trabajo, hasta alcanzar el mximo establecido en la opcin max worker threads. Una instancia de SQL Server utiliza los mismos algoritmos para programar y sincronizar las tareas cuando se utilizan fibras o subprocesos de Windows. SQL Server Express no admite fibras. No se recomienda utilizar la programacin en modo de fibra para un funcionamiento habitual. La razn es que puede reducir el rendimiento al eliminar las ventajas normales del cambio de contexto, y que algunos componentes de SQL Server no funcionan correctamente en modo de fibra.

Funcionamiento de la programacin de tareas o lotes Cuando una aplicacin se conecta al Database Engine (Motor de base de datos), se le asigna un Id. de sesin (SPID). Toda la informacin que se debe conservar durante la conexin se administra en estructuras de datos internas asociadas al SPID. Cuando una instancia de SQL Server recibe lotes de los clientes, los divide en una o varias tareas y luego asocia cada una de ellas a un subproceso de trabajo disponible del grupo de subprocesos de trabajo. Un subproceso de trabajo est enlazado a una tarea durante toda su vigencia. Un subproceso de trabajo ejecuta la solicitud en el programador de SQL asociado. Si no hay ningn subproceso de trabajo disponible y no se ha alcanzado el valor de max worker threads, la instancia de SQL Server asignar un nuevo subproceso de trabajo al nuevo lote. Si no hay subprocesos o fibras disponibles y se ha alcanzado el valor de max worker threads, la instancia de SQL Server bloquear la nueva tarea hasta que quede libre un subproceso de trabajo. Una vez que un subproceso de trabajo se asocia a una tarea, permanece asociado a ella hasta que se completa, por ejemplo hasta que se devuelve al cliente el ltimo de los conjuntos de resultados que genera el lote. En ese momento, el subproceso de trabajo se libera y puede unirse a las tareas asociadas al siguiente lote. El Database Engine (Motor de base de datos) slo debe realizar un trabajo de forma activa para una conexin desde el momento en el que se recibe un lote hasta que se devuelven los resultados al cliente. Es posible que durante este perodo haya momentos en los que el lote no requiera un procesamiento activo. Por ejemplo, puede haber momentos en los que el Database Engine (Motor de base de datos) deba esperar que una operacin de lectura recupere los datos necesarios para la consulta actual o espere a que otro lote libere un bloqueo. La asociacin entre una tarea y un subproceso de trabajo se mantiene incluso cuando la tarea est bloqueada en algn recurso. Cuando el Database Engine (Motor de base de datos) empieza a procesar una tarea asociada a un lote, programa el subproceso de trabajo asociado a la tarea para que realice el trabajo. Una vez el subproceso de trabajo ha completado el trabajo para la tarea, la instancia de SQL Server distribuye el subproceso de trabajo a la siguiente tarea que est lista para trabajar. Un SPID permanece constante para una conexin a lo largo de toda su duracin. En las conexiones de larga duracin es posible que las tareas de lote individuales sean ejecutadas por muchos subprocesos de trabajo distintos. Por ejemplo, puede que trabajo1 ejecute las tareas del primer lote y trabajo2 las del segundo. Algunas instrucciones se pueden procesar en paralelo. En ese caso, puede que varios subprocesos de trabajo ejecuten varias tareas de un lote al mismo tiempo. Base de datos tempdb La base de datos del sistema tempdb es un recurso global disponible para todos los usuarios conectados a la instancia de SQL Server y se utiliza para incluir lo siguiente:

Objetos de usuario temporales creados explcitamente como: tablas temporales locales o globales, procedimientos almacenados temporales, variables de tabla o cursores. Objetos internos creados por SQL Server Database Engine (Motor de base de datos de SQL Server), por ejemplo, tablas de trabajo para almacenar resultados intermedios para colas u ordenacin. Versiones de fila generadas por las transacciones de modificacin de datos en una base de datos que utiliza transacciones de lectura confirmada que usan transacciones de aislamiento de control de versiones de filas o de aislamiento de instantneas. Versiones de fila que se generan mediante transacciones de modificacin de datos para caractersticas como operaciones de ndice en lnea, conjuntos de resultados activos mltiples (MARS) y desencadenadores AFTER.

Las operaciones realizadas en tempdb se registran con un nivel mnimo. Esto permite que se reviertan las transacciones. tempdb se vuelve a crear cada vez que se inicia SQL Server, de forma que el sistema siempre se inicia con una copia limpia de la base de datos. Las tablas y los procedimientos almacenados temporales se quitan automticamente en la desconexin y ninguna conexin permanece activa cuando se cierra el sistema. Por tanto, en la base de datos tempdb no hay nada que deba guardarse de una a otra sesin de SQL Server. No se permite realizar operaciones de copia de seguridad y restauracin en tempdb.

Propiedades fsicas de tempdb

En la tabla siguiente se muestran los valores iniciales de configuracin de los archivos de datos y registro de tempdb. El tamao de estos archivos puede variar ligeramente para cada edicin de SQL Server. Archivo Nombre lgico Nombre fsico Crecimiento del archivo

37

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Datos principales

tempdev

tempdb.mdf

Crecimiento automtico del 10 por ciento hasta llenar el disco

Registro

templog

templog.ldf

Crecimiento automtico del 10 por ciento hasta un mximo de 2 terabytes

El tamao de tempdb puede afectar al rendimiento de un sistema. Por ejemplo, si el tamao de tempdb es demasiado pequeo, el procesamiento del sistema podra estar demasiado ocupado con el crecimiento automtico de la base de datos y, por tanto, no podra satisfacer las necesidades de carga de trabajo cada vez que se inicia SQL Server. Para evitar esta sobrecarga, aumente el tamao de tempdb.

Mejoras en el rendimiento de tempdb En SQL Server, el rendimiento de tempdb se mejora de las siguientes maneras:

Las tablas temporales y las variables de tabla se pueden almacenar en cach. El almacenamiento en cach permite que las operaciones que quitan y crean los objetos temporales se ejecuten muy rpidamente y reduce la contencin de la asignacin de pginas Se mejora el protocolo de bloqueo temporal de pgina de asignacin. Esto reduce el nmero de bloqueos temporales UP (de actualizacin) utilizados. Se reduce la sobrecarga de registro para tempdb. Esto reduce el consumo de ancho de banda de E/S del disco en el archivo de registro de tempdb. Se mejora el algoritmo para asignar pginas mixtas en tempdb.

Opciones de base de datos En la siguiente tabla se muestra el valor predeterminado de las opciones de base de datos de la base de datos tempdb y se indica si la opcin se puede modificar. Opcin de base de datos Valor predeterminado Se puede modificar

ALLOW_SNAPSHOT_ISOLATION

OFF

ANSI_NULL_DEFAULT

OFF

ANSI_NULLS

OFF

ANSI_PADDING

OFF

ANSI_WARNINGS

OFF

ARITHABORT

OFF

AUTO_CLOSE

OFF

No

AUTO_CREATE_STATISTICS

ON

AUTO_SHRINK

OFF

No

AUTO_UPDATE_STATISTICS

ON

AUTO_UPDATE_STATISTICS_ASYNC

OFF

CHANGE_TRACKING

OFF

No

CONCAT_NULL_YIELDS_NULL

OFF

CURSOR_CLOSE_ON_COMMIT

OFF

CURSOR_DEFAULT

GLOBAL

Opciones de disponibilidad de la base de datos

ONLINE

No

38

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

MULTI_USER READ_WRITE No No

DATE_CORRELATION_OPTIMIZATION

OFF

DB_CHAINING

ON

No

ENCRYPTION

OFF

No

NUMERIC_ROUNDABORT

OFF

PAGE_VERIFY

CHECKSUM para las nuevas instalaciones de SQL Server. NONE para las actualizaciones de SQL Server.

PARAMETERIZATION

SIMPLE

QUOTED_IDENTIFIER

OFF

READ_COMMITTED_SNAPSHOT

OFF

No

RECOVERY

SIMPLE

No

RECURSIVE_TRIGGERS

OFF

Opciones de Service Broker

ENABLE_BROKER

TRUSTWORTHY

OFF

No

Restricciones

En la base de datos tempdb no se pueden realizar las siguientes operaciones:

Agregar grupos de archivos. Realizar una copia de seguridad o restaurar la base de datos.

Cambiar intercalaciones. La intercalacin predeterminada es la intercalacin de servidor. Cambiar el propietario de la base de datos. tempdb pertenece a dbo.

Crear una instantnea de base de datos. Eliminar la base de datos.

Eliminar el usuario guest de la base de datos. Habilitar el mecanismo de captura de cambios en los datos.

Participar en el reflejo de la base de datos. Quitar el grupo de archivos principal, el archivo de datos principal o el archivo de registro.

Cambiar el nombre de la base de datos o del grupo de archivos principal.

39

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Ejecutar DBCC CHECKALLOC. Ejecutar DBCC CHECKCATALOG.

Establecer la base de datos en OFFLINE. Establecer la base de datos o el grupo de archivos principal en READ_ONLY.

Optimizar el rendimiento de tempdb El tamao y la ubicacin fsica de la base de datos tempdb puede afectar al rendimiento de un sistema. Por ejemplo, si el tamao definido en tempdb es demasiado pequeo, parte de la carga de procesamiento del sistema puede deberse al crecimiento automtico de tempdb hasta el tamao necesario para admitir la carga de trabajo cada vez que se reinicia la instancia de SQL Server. Para evitar esta sobrecarga, aumente el tamao de los archivos de registro y de datos de tempdb. Recomendaciones sobre el tamao y la ubicacin de tempdb Para obtener un rendimiento ptimo de tempdb, se recomienda la configuracin siguiente al usar tempdb en un entorno de produccin:

Establezca el modelo de recuperacin de tempdb en SIMPLE. Este modelo recupera espacio del registro para mantener bajos los requisitos de espacio. Permita que los archivos de tempdb crezcan automticamente cuando sea necesario. De este modo, el archivo podr crecer hasta que el disco est lleno. Nota: Si el entorno de produccin no puede tolerar los tiempos de espera de aplicaciones que podran producirse durante las operaciones de crecimiento automtico, asigne espacio previamente para acomodar la carga de trabajo esperada.

Establezca el incremento de crecimiento de archivos en un tamao razonable para evitar que los archivos de la base de datos tempdb crezcan en un porcentaje demasiado pequeo. Si el crecimiento de los archivos es demasiado pequeo comparado con la cantidad de datos que se escriben en tempdb, es posible que sea necesario expandir tempdb constantemente. Esto afectar al rendimiento. Se recomienda seguir estas directrices generales al establecer el incremento de FILEGROWTH para archivos de tempdb. Tamao de archivos de tempdb Incremento de FILEGROWTH

De 0 a 100 MB

10 MB

De 100 a 200 MB

20 MB

200 MB o superior

10%*

* Podra ser necesario ajustar este porcentaje en funcin de la velocidad del subsistema de E/S en que estn ubicados los archivos de tempdb. Para evitar que se produzcan tiempos de espera de bloqueo temporal, se recomienda limitar la operacin de crecimiento automtico a unos dos minutos. Por ejemplo, si el subsistema de E/S puede inicializar un archivo a 50 MB por segundo, se deber establecer el incremento de FILEGROWTH en 6 GB como mximo, independientemente del tamao de los archivos de tempdb. Siempre que sea posible, use la inicializacin de archivos de base de datos instantnea para mejorar el rendimiento de las operaciones de crecimiento automtico. Asigne espacio previamente para todos los archivos de tempdb estableciendo el tamao de archivo en un valor lo suficientemente alto para acomodar la carga de trabajo habitual del entorno. As se evita que tempdb se expanda con demasiada frecuencia, lo que puede afectar al rendimiento. La base de datos tempdb debe establecerse de modo que crezca automticamente, pero slo con el fin de aumentar el espacio en disco para las excepciones no previstas. Cree tantos archivos como sea necesario para maximizar el ancho de banda del disco. El uso de varios archivos reduce la contencin de almacenamiento de tempdb y produce una escalabilidad considerablemente superior. No obstante, no cree demasiados archivos porque podra disminuir el rendimiento y aumentar la carga administrativa. Como regla general, cree un archivo de datos por CPU del servidor (teniendo en cuenta la configuracin de affinity mask) y, a continuacin, aumente o disminuya el nmero de archivos segn sea necesario. Tenga en cuenta que una CPU de doble ncleo se cuenta como dos CPU. Asigne a cada archivo de datos el mismo tamao para obtener un rendimiento ptimo de relleno proporcional.

Coloque la base de datos tempdb en un subsistema de E/S rpido. Cree bandas en disco si hay muchos discos conectados directamente. Coloque la base de datos tempdb en discos diferentes de los que utilizan las bases de datos de usuario.

Modificar los parmetros de tamao y de crecimiento de tempdb

40

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Puede modificar los parmetros de tamao y de crecimiento de archivos de los archivos de datos o de registro de tempdb mediante uno de los mtodos siguientes:

La instruccin ALTER DATABASE SQL Server Management Studio

Los valores de los parmetros de tamao y de crecimiento de archivos se usan cuando se crea tempdb. Por ejemplo, si aumenta el tamao del archivo de datos de tempdb a 20 MB y el incremento de crecimiento de archivos al 15%, los nuevos valores se aplican inmediatamente. Si las actividades transaccionales posteriores producen el crecimiento de tempdb, el archivo de datos volver al tamao de 20 MB cada vez que se reinicie la instancia de SQL Server. Ver los parmetros de tamao y de crecimiento de tempdb Puede ver los parmetros de tamao y de crecimiento de archivos de los archivos de datos o de registro de tempdb mediante uno de los mtodos siguientes:

SQL Server Management Studio

Ejecutando

la

siguiente

consulta.

SELECT name AS FileName, size*1.0/128 AS FileSizeinMB, CASE max_size WHEN 0 THEN 'Autogrowth is off.' WHEN -1 THEN 'Autogrowth is on.' ELSE 'Log file will grow to a maximum size of 2 TB.' END, growth AS 'GrowthValue', 'GrowthIncrement' = CASE WHEN growth = 0 THEN 'Size is fixed and will not grow.' WHEN growth > 0 AND is_percent_growth = 0 THEN 'Growth value is in 8-KB pages.' ELSE 'Growth value is a percentage.' END FROM tempdb.sys.database_files; GO

2 Disear instancias de SQL Server. Considerar : configuracin de la instancia, configuracin del rea de superficie, afinidad del CPU, asignacin de memoria, grado mximo de paralelismo (MAXDOP), collation Configuracin de instancia Utilice la pgina Configuracin de instancia del Asistente para la instalacin de SQL Server con el fin de especificar si desea crear una instancia predeterminada o una instancia con nombre de SQL Server. Si an no hay instalada una instancia de SQL Server, se crear una predeterminada, a menos que especifique una instancia con nombre. Cada instancia de SQL Server est compuesta de un conjunto distinto de servicios que tienen una configuracin concreta para las intercalaciones y otras opciones. La estructura de directorios, la estructura del Registro y los nombres de servicio reflejan todos el nombre de la instancia y un identificador de instancia concreto que se crea durante la instalacin SQL Server. La instancia puede ser una instancia predeterminada o una instancia con nombre. El nombre de instancia predeterminado es MSSQLSERVER; SQLExpress para SQL Server Express. Para realizar una conexin, no es necesario que un cliente especifique el nombre de la instancia. La instancia con nombre queda determinada por el usuario durante la instalacin. Puede instalar SQL Server como una instancia con nombre sin instalar primero la instancia predeterminada. La instancia predeterminada podra ser una instalacin de SQL Server 2000, SQL Server 2005 o SQL Server 2008. Al mismo tiempo, slo una instalacin de SQL Server, independientemente de la versin, puede ser la instancia predeterminada.

Instancias mltiples

SQL Server admite varias instancias de SQL Server en un solo servidor o procesador, pero slo una puede ser la predeterminada. Todas las dems deben ser instancias con nombre. Un equipo puede ejecutar varias instancias de SQL Server simultneamente y cada instancia se ejecuta independientemente de las otras instancias.

41

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Opciones Slo instancias de clsteres de conmutacin por error: especifique el nombre de red de clsteres de conmutacin por error de SQL Server. Este nombre identifica la instancia de clster de conmutacin por error en la red. Instancia predeterminada o con nombre: tenga presente la informacin siguiente a la hora de decidir entre instalar una instancia predeterminada o una instancia con nombre de SQL Server:

Si piensa instalar una nica instancia de SQL Server en un servidor de base de datos, debe ser una instancia predeterminada. Use una instancia con nombre para aquellas situaciones en las que piensa tener varias instancias en el mismo equipo. Un servidor solo puede alojar una instancia predeterminada. Cualquier aplicacin que instale SQL Server Express debe instalarlo como instancia con nombre. Con ello se reducen los conflictos en situaciones en las que se instalan varias aplicaciones en el mismo equipo.

Instancia predeterminada Seleccione esta opcin para instalar una instancia predeterminada de SQL Server. Un equipo slo puede alojar una instancia predeterminada; todas las dems instancias deben ser instancias con nombre. No obstante, si tiene instalada una instancia predeterminada de SQL Server, podr agregar una instancia predeterminada de Analysis Services al mismo equipo. Instancia con nombre Seleccione esta opcin para crear una instancia con nombre nueva. Cuando asigne un nombre a una instancia de SQL Server, tenga en cuenta lo siguiente:

En los nombres de instancia no se distinguen maysculas y minsculas.

Los nombres de instancia no pueden contener el trmino "Default" ni otras palabras clave reservadas. Si se utiliza una palabra clave reservada en un nombre de instancia, se producir un error en el programa de instalacin. Si especifica MSSQLServer como nombre de instancia, se crear una instancia predeterminada. En SQL Server Express, si especifica SQLExpress como nombre de instancia, se crear una instancia predeterminada. Los nombres de instancias estn limitados a 16 caracteres. El primer carcter del nombre de la instancia debe ser una letra. Las letras aceptables son las que define el estndar Unicode 2.0. Se incluyen los caracteres latinos, a-z, A-Z y los caracteres alfabticos de otros idiomas. Los siguientes caracteres pueden ser letras definidas por el estndar Unicode 2.0, nmeros decimales del alfabeto Latn bsico y de otros alfabetos nacionales, el signo de dlar ($) o un carcter de subrayado (_). En los nombres de instancia no se permiten espacios incrustados ni otros caracteres especiales. Tampoco se permiten la barra diagonal inversa (\), la coma (,), los dos puntos (:), el punto y coma (;), la comilla simple ('), el smbolo de y comercial (&) ni la arroba (@). Nota: Slo los caracteres que sean vlidos en la pgina actual de cdigos de Windows se pueden utilizar en los nombres de instancia de SQL Server. Si se utiliza un carcter Unicode no admitido, se producir un error en el programa de instalacin.

Instancias y caractersticas detectadas Vea una lista de las instancias y los componentes de SQL Server instalados en el equipo en el que se ejecuta el programa de instalacin de SQL Server. Id. de instancia: de forma predeterminada, el nombre de instancia se utiliza como identificador de la instancia. Se usa para identificar los directorios de instalacin y las claves del Registro para la instancia de SQL Server. Es as en las instancias predeterminadas y en las instancias con nombre. Con una instancia predeterminada, el nombre y el identificador seran MSSQLSERVER. Para utilizar un identificador de instancia no predeterminado, especifquelo en el campo Id. de instancia. Nota: No se admiten identificadores de instancia que comienzan por un subrayado (_) o que contienen el signo de almohadilla (#) o el signo de dlar ($).

Directorio raz de instancia: de forma predeterminada, el directorio raz de la instancia es C:\Archivos de programa\Microsoft SQL Server\. Para especificar un directorio raz no predeterminado, haga clic en el botn Examinar o proporcione un nombre de ruta. Todos los componentes de una instancia determinada de SQL Server se administran como una unidad. Todos los Service Packs y actualizaciones de SQL Server se aplicarn a cada componente de una instancia de SQL Server. Todos los componentes de SQL Server que comparten el mismo nombre de instancia deben cumplir los siguientes criterios:

La misma versin

42

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
La misma edicin La misma configuracin de idioma

El mismo estado de clster Nota: Reporting Services no detecta los clsteres.

El mismo sistema operativo

Configuracin del rea de superficie En la configuracin predeterminada de nuevas instalaciones de SQL Server, muchas caractersticas no estn habilitadas. SQL Server instala selectivamente y solo inicia servicios y caractersticas claves para minimizar el nmero de caractersticas que pueden ser atacadas por un usuario malintencionado. Un administrador del sistema puede cambiar esta configuracin predeterminada en el momento de la instalacin y puede habilitar o deshabilitar de forma selectiva las caractersticas de una instancia en ejecucin de SQL Server. Adems, algunos componentes no pueden estar disponibles al conectar desde otros equipos hasta que se configuren los protocolos. Nota: A diferencia de las nuevas instalaciones, los servicios o caractersticas existentes no se desactivan durante una actualizacin, pero las opciones de configuracin adicionales de rea expuesta pueden aplicarse una vez completada la actualizacin. Opciones de protocolo, conexin e inicio Utilice el Administrador de configuracin de SQL Server para iniciar y detener servicios, configurar opciones de inicio, y habilitar protocolos y otras opciones de conexin. Para iniciar el Administrador de configuracin de SQL Server

1.

En el men Inicio, seleccione Todos los programas, seleccione Microsoft SQL Server 2008, seleccione Herramientas de configuracin y, a continuacin, haga clic en Administrador de configuracin de SQL Server.

o o

Utilice el rea Servicios de SQL Server para iniciar los componentes y configurar las opciones de inicio automticas.

Utilice el rea Configuracin de red de SQL Server para habilitar protocolos de conexin y opciones de conexin tales como los puertos TCP/IP fijos o para forzar el cifrado.

La conectividad remota tambin puede depender de la configuracin correcta de un firewall.

Habilitar y deshabilitar caractersticas Habilitar y deshabilitar caractersticas SQL Server se puede configurar utilizando facetas en SQL Server Management Studio. Para configurar rea expuesta mediante facetas 1. En Management Studio, conecte con un componente de SQL Server.

2. 3. 4. 5.

En el Explorador de objetos, haga clic con el botn secundario en servidor y, a continuacin, haga clic en Facetas.

En el cuadro de dilogo Ver facetas, expanda la lista Faceta y seleccione la faceta Configuracin de rea expuesta adecuada (Configuracin de rea expuesta, Configuracin de rea expuesta para Analysis Services o Configuracin de rea expuesta para Reporting Services).

En el rea Propiedades de faceta, seleccione los valores que desee para cada propiedad.

Haga clic en Aceptar.

Para comprobar peridicamente la configuracin de una faceta, use la Administracin basada en directiva. Tambin puede establecer opciones de Database Engine (Motor de base de datos) mediante el procedimiento almacenado sp_configure. Para cambiar la propiedad EnableIntegrated Security de SSRS, utilice la configuracin de las propiedades de SQL Server Management Studio. Para cambiar la propiedad Eventos de programacin y entrega de informes habilitados y la propiedad Servicio web y acceso HTTP habilitados, modifique el archivo de configuracin RSReportServer.config.

Opciones del smbolo del sistema

43

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Utilice el cmdlet Invoke-PolicyEvaluation SQL Server de PowerShell para invocar Directivas de configuracin de rea expuesta.

Extremos SOAP y de Service Broker Para desactivar los extremos, use la Administracin basada en directivas. Para crear y modificar propiedades de extremos, utilice CREATE ENDPOINT (Transact-SQL) y ALTER ENDPOINT (Transact-SQL).

Afinidad del CPU Para llevar a cabo una multitarea, Microsoft Windows 2000 y Windows Server 2003 a veces mueven subprocesos entre distintos procesadores. Aunque esta actividad es eficaz desde el punto de vista del sistema operativo, puede reducir el rendimiento de SQL Server cuando la carga del sistema es grande, ya que la memoria cach de cada procesador se carga repetidamente con datos. La asignacin de procesadores a subprocesos especficos puede mejorar el rendimiento en estas condiciones al eliminar las operaciones de repeticin de carga del procesador y reducir la migracin de subprocesos entre procesadores (con lo que se reduce el cambio de contexto); dicha asociacin entre un subproceso y un procesador se denomina afinidad del procesador. SQL Server admite la afinidad del procesador por medio de dos opciones de mscara de afinidad: affinity mask (tambin conocida como CPU affinity mask) y affinity I/O mask. La compatibilidad de la afinidad de CPU y de E/S con servidores que tienen entre 33 y 64 procesadores requiere el uso adicional de affinity64 mask (opcin) y affinity64 I/O mask (opcin), respectivamente. Nota: La compatibilidad de la afinidad con servidores que tienen entre 33 y 64 procesadores solamente est disponible en sistemas operativos de 64 bits. La opcin affinity mask, que exista en versiones anteriores de SQL Server, controla la afinidad de la CPU de forma dinmica. En SQL Server, la opcin affinity mask se puede configurar sin necesidad de reiniciar la instancia de SQL Server. Si utiliza sp_configure, debe ejecutar RECONFIGURE o RECONFIGURE WITH OVERRIDE despus de establecer una opcin de configuracin. Cuando se utiliza SQL Server Express, es necesario reiniciar despus de modificar la opcin affinity mask. Los cambios en las mscaras de afinidad se producen de forma dinmica, lo que permite el inicio y cierre a peticin de los programadores de CPU que enlazan los subprocesos en SQL Server. Esto puede ocurrir cuando cambien las condiciones del servidor. Por ejemplo, si se agrega al servidor una nueva instancia de SQL Server, puede ser necesario realizar ajustes en la opcin affinity mask para redistribuir la carga del procesador. Las modificaciones de las mscaras de bits de afinidad requieren que SQL Server habilite un nuevo programador de CPU y deshabilite el programador de CPU existente. A continuacin se pueden procesar otros lotes en los programadores nuevos o restantes. Para iniciar un nuevo programador de CPU, SQL Server crea un nuevo programador y lo agrega a la lista de programadores estndar. El nuevo programador slo se tiene en cuenta para los nuevos procesos por lotes entrantes. Los procesos por lotes actuales continan ejecutndose en el mismo programador. Los subprocesos de trabajo migran al nuevo programador cuando se liberan o cuando se crean nuevos subprocesos de trabajo. Para cerrar un programador, es necesario que todos los procesos por lotes del programador finalicen sus actividades y se cierren. Los programadores que se han cerrado se marcan como sin conexin para que no se programe ningn proceso por lotes nuevo en ellos. Tanto si se agrega un nuevo programador como si se quita, las tareas permanentes del sistema, como lockmonitor, checkpoint, subproceso de tarea del sistema (DTC en procesamiento) y el proceso de seal, continan ejecutndose en el programador mientras el servidor est operativo. Estas tareas permanentes del sistema no se migran de forma dinmica. Para redistribuir la carga del procesador para estas tareas del sistema entre los programadores, es necesario reiniciar la instancia de SQL Server. Si SQL Server intenta cerrar un programador asociado con una tarea permanente del sistema, sta contina ejecutndose en el programador sin conexin (sin migracin). Este programador est enlazado a los procesadores de la mscara de afinidad modificada y no debe imponer ninguna carga en el procesador con el que se estableci la afinidad antes del cambio. La existencia de programadores sin conexin adicionales no debera afectar significativamente a la carga del sistema. En caso contrario, es necesario reiniciar el servidor de base de datos para volver a configurar las tareas. La mscara de afinidad de E/S afecta directamente a las tareas de afinidad de E/S (como lazywriter y logwriter). Si no se ha establecido la afinidad para las tareas lazywriter y logwriter, siguen las mismas reglas definidas para las dems tareas permanentes, como lockmonitor o checkpoint. Para asegurarse de que la nueva mscara de afinidad es vlida, el comando RECONFIGURE comprueba que las afinidades normales de CPU y E/S se excluyen mutuamente. En caso contrario, se enva un mensaje de error a la sesin de cliente y al registro de errores de SQL Server para indicar que no se recomienda dicha configuracin. La ejecucin de la opcin RECONFIGURE WITH OVERRIDE permite afinidades de CPU y E/S que no se excluyen mutuamente. Si especifica una mscara de afinidad que intenta asignarse a una CPU inexistente, el comando RECONFIGURE enva un mensaje de error a la sesin de cliente y al registro de errores de SQL Server. El uso de la opcin RECONFIGURE WITH OVERRIDE no tiene efecto en este caso y se vuelve a enviar el mismo error de configuracin. Tambin puede excluir la actividad de SQL Server de los procesadores a los que el sistema operativo Windows 2000 o Windows Server 2003 han asignado cargas de trabajo especficas. Si establece el valor 1 para un bit que representa un procesador, el motor de base de datos de SQL Server selecciona dicho procesador para la asignacin de subprocesos. Si establece el valor 0 (predeterminado) para affinity mask, los algoritmos de programacin de Windows 2000 o Windows Server 2003 establecen la afinidad del subproceso. Si establece affinity mask en cualquier valor distinto de cero, la afinidad de SQL Server interpreta el valor como una mscara de bits que especifica los procesadores que se pueden seleccionar. Mediante la separacin de los subprocesos de SQL Server para que se ejecuten en determinados procesadores, Microsoft Windows 2000 o Windows Server 2003 pueden evaluar mejor el control de los procesos especficos de Windows por parte del sistema. Por ejemplo, en un servidor de 8 CPU en el que se ejecutan dos instancias de SQL Server (instancias A y B), el administrador del sistema puede utilizar la opcin affinity mask para asignar el primer conjunto de 4 CPU a la instancia A y el segundo conjunto de 4 CPU a la instancia B. Para

44

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
configurar ms de 32 procesadores, establezca las opciones affinity mask y affinity64 mask. Los valores de affinity mask son los siguientes:

Una opcin affinity mask de un byte cubre hasta 8 CPU en un equipo con varios procesadores. Una opcin affinity mask de dos bytes cubre hasta 16 CPU en un equipo con varios procesadores.

Una opcin affinity mask de tres bytes cubre hasta 24 CPU en un equipo con varios procesadores. Una opcin affinity mask de cuatro bytes cubre hasta 32 CPU en un equipo con varios procesadores.

Para cubrir ms de 32 CPU, configure una opcin affinity mask de cuatro bytes para las primeras 32 CPU y una opcin affinity64 mask de hasta cuatro bytes para las restantes CPU.

Como la configuracin de la afinidad del procesador de SQL Server es una operacin especial, se recomienda utilizarla slo cuando sea necesario. En la mayor parte de los casos, el mejor rendimiento se obtiene con la afinidad predeterminada de Microsoft Windows 2000 o Windows Server 2003. Al configurar las mscaras de afinidad, tambin debe considerar los requisitos de CPU para otras aplicaciones. Nota: Puede utilizar el Monitor de sistema de Windows para ver y analizar el uso individual del procesador. Al especificar la opcin affinity mask, debe utilizarla en conexin con la opcin de configuracin affinity I/O mask. No habilite la misma CPU en el modificador affinity mask y la opcin affinity I/O mask. Los bits correspondientes a cada CPU deben estar en uno de los tres estados siguientes:

0 tanto en la opcin affinity mask como en la opcin affinity I/O mask.

1 en la opcin affinity mask y 0 en la opcin affinity I/O mask. 0 en la opcin affinity mask y 1 en la opcin affinity I/O mask.

Advertencia: No configure la afinidad de CPU en el sistema operativo Windows y la mscara de afinidad en SQL Server simultneamente. Estos valores de configuracin intentan lograr el mismo resultado y, si las configuraciones no son coherentes, puede obtener resultados impredecibles. La afinidad de CPU de SQL Server se configura mejor mediante la opcin sp_configure de SQL Server. Ejemplo Como ejemplo de configuracin de la opcin affinity mask, si los procesadores 1, 2 y 5 estn seleccionados como disponibles con el valor 1 para los bits 1, 2 y 5, y el valor 0 para los bits 0, 3, 4, 6 y 7, se especifica el valor hexadecimal 0x26 o el valor decimal equivalente 38. Enumere los bits de derecha a izquierda. La opcin affinity mask comienza a contar los procesadores de 0 a 31, de modo que en el ejemplo siguiente el contador 1 representa el segundo procesador del servidor. sp_configure 'show advanced options', 1; RECONFIGURE; GO sp_configure 'affinity mask', 38; RECONFIGURE; GO A continuacin se indican los valores de affinity mask para un sistema con 8 CPU. Valor decimal Mscara de bits binarios Permitir subprocesos de SQL Server en procesadores

00000001

00000011

0y1

00000111

0, 1 y 2

15

00001111

0, 1, 2 y 3

31

00011111

0, 1, 2, 3 y 4

63

00111111

0, 1, 2, 3, 4 y 5

127

01111111

0, 1, 2, 3, 4, 5 y 6

255

11111111

0, 1, 2, 3, 4, 5, 6 y 7

45

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
La opcin affinity mask es una opcin avanzada. Si va a utilizar el procedimiento almacenado del sistema sp_configure para cambiar la configuracin, solo podr cambiar el valor de affinity mask si show advanced options se establece en 1. Despus de ejecutar el comando RECONFIGURE de Transact-SQL, la nueva configuracin se aplica inmediatamente sin necesidad de reiniciar la instancia de SQL Server.

Consideraciones acerca de las licencias La afinidad dinmica est estrictamente restringida por las licencias de CPU. SQL Server no permite la configuracin de las opciones de mscara de afinidad que infrinjan las directivas de las licencias.

Inicio Si una mscara de afinidad especificada infringe las directivas de las licencias durante el inicio de SQL Server o al adjuntar la base de datos, el nivel del motor completar el proceso de inicio o la operacin para adjuntar o restaurar la base de datos; despus, volver a establecer en cero el valor de ejecucin de sp_configure para la opcin affinity mask y enviar un mensaje de error al registro de errores de SQL Server.

Reconfigurar Si una mscara de afinidad determinada infringe las directivas de las licencias en la ejecucin del comando RECONFIGURE de Transact-SQL, se enva un mensaje de error a la sesin de cliente y al registro de errores de SQL Server solicitando que el administrador de la base de datos vuelva a configurar la mscara de afinidad. En este caso no se acepta ningn comando RECONFIGURE WITH OVERRIDE. Mximo grado de paralelismo (MAXDOP) Cuando SQL Server se ejecuta en un equipo con ms de un microprocesador o CPU, detecta el mejor grado de paralelismo, es decir, el nmero de procesadores que se emplea para ejecutar una nica instruccin en cada ejecucin de planes en paralelo. Puede utilizar la opcin max degree of parallelism (grado mximo de paralelismo) para limitar el nmero de procesadores que debe utilizarse en la ejecucin de planes en paralelo. El valor predeterminado, 0, usa todos los procesadores disponibles. Establezca la opcin max degree of parallelism en 1 para suprimir la generacin de planes en paralelo. Establezca un valor superior a 1 (hasta un mximo de 64) para limitar el nmero mximo de procesadores que se utilizan en la ejecucin de una consulta. Si especifica un valor superior al nmero de procesadores disponibles, se utilizar el nmero real de procesadores disponibles. Si el equipo tiene slo un procesador, el valor de max degree of parallelism se pasar por alto. Omitir la opcin max degree of parallelism SQL Server considerar los planes de ejecucin en paralelo para consultas, las operaciones de lenguaje de definicin de datos (DDL) de ndice y el llenado de cursores estticos y dinmicos. Puede omitir el valor de la opcin max degree of parallelism especificando la sugerencia de consulta MAXDOP en la instruccin de la consulta. Las operaciones de ndice que crean o vuelven a generar un ndice, o que eliminan un ndice agrupado, pueden consumir recursos de forma intensiva. Puede omitir el valor de la opcin max degree of parallelism para operaciones de ndice especificando la opcin de ndice MAXDOP en la instruccin del ndice. El valor de MAXDOP se aplica a la instruccin en tiempo de ejecucin y no se almacena en los metadatos del ndice. Adems de las operaciones de consultas e ndices, esta opcin tambin controla el paralelismo de DBCC CHECKTABLE, DBCC CHECKDB y DBCC CHECKFILEGROUP. Puede deshabilitar los planes de ejecucin en paralelo de estas instrucciones mediante el uso de la marca de traza 2528. Nota: Si el valor de la opcin affinity mask no es el predeterminado, es posible que se limite el nmero de procesadores disponibles para SQL Server en sistemas de multiproceso simtrico (SMP).

Establecer la opcin max degree of parallelism max degree of parallelism es una opcin avanzada. Si utiliza el procedimiento almacenado del sistema sp_configure para cambiar el valor, podr cambiar la opcin max degree of parallelism slo si show advanced options tiene establecido el valor 1. El valor tiene efecto inmediatamente (sin necesidad de reiniciar el servicio MSSQLSERVER). En el siguiente ejemplo se asigna el valor 8 a la opcin max degree of parallelism. sp_configure 'show advanced options', 1; GO RECONFIGURE WITH OVERRIDE; GO sp_configure 'max degree of parallelism', 8; GO RECONFIGURE WITH OVERRIDE; GO

Arquitectura de la memoria

SQL Server adquiere y libera memoria de manera dinmica segn sea preciso. Normalmente, no es necesario que un administrador especifique la cantidad de memoria que se debe asignar a SQL Server, aunque todava existe esta opcin y es necesaria en algunos entornos.

46

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
SQL Server es compatible con AWE (Extensiones de ventana de direccin), que permite utilizar ms de 4 gigabytes (GB) de memoria fsica en las versiones de 32 bits de los sistemas operativos Microsoft Windows. Se admiten hasta 64 GB de memoria fsica. Las instancias de SQL Server que se ejecutan en Microsoft Windows 2000 utilizan la asignacin de memoria AWE esttica y las instancias que se ejecutan en Microsoft Windows Server 2003 usan la asignacin de memoria AWE dinmica. Nota: La compatibilidad con AWE slo est disponible en las ediciones Enterprise, Standard y Developer de SQL Server, y slo se aplica a los sistemas operativos de 32 bits. Analysis Services no puede beneficiarse de la memoria asignada de AWE. Si la memoria fsica disponible es menor que el espacio de direcciones virtuales del modo de usuario, AWE no se puede habilitar. Uno de los principales objetivos de diseo de todo el software de base de datos es minimizar la E/S de disco porque las operaciones de lectura y escritura del disco realizan un uso muy intensivo de los recursos. SQL Server crea un grupo de bferes en la memoria para contener las pginas ledas en la base de datos. Gran parte del cdigo de SQL Server est dedicado a minimizar el nmero de lecturas y escrituras fsicas entre el disco y el grupo de bferes. SQL Server intenta encontrar un equilibrio entre dos objetivos:

Evitar que el grupo de bferes sea tan grande que todo el sistema se quede con poca memoria. Minimizar la E/S fsica a los archivos de base de datos al maximizar el tamao del grupo de bferes.

De forma predeterminada, las ediciones de SQL Server 2005 administran dinmicamente la memoria para cada instancia. Existen diferencias en la forma en que SQL Server administra la memoria asignada de AWE en Windows 2000 y las versiones posteriores de los sistemas operativos. Nota: En un sistema con mucha carga, algunas consultas grandes que necesitan una gran cantidad de memoria para ejecutarse no pueden obtener la cantidad mnima de memoria solicitada y reciben un error de tiempo de espera agotado mientras esperan los recursos de memoria. Para solucionarlo, aumente la opcin query wait. Para una consulta en paralelo, considere la posibilidad de reducir la opcin max degree of parallelism. Nota: En un sistema con mucha carga y mucha presin de la memoria, las consultas con combinaciones de mezcla, orden y mapa de bits en el plan de consulta pueden quitar el mapa de bits si no obtienen la memoria mnima necesaria para dicho mapa de bits. Esto puede afectar al rendimiento de la consulta y, si el proceso de ordenacin no cabe en la memoria, puede aumentar el uso de las tablas de trabajo en la base de datos tempdb, lo que hace que tempdb crezca. Para resolver este problema, agregue memoria fsica u optimice las consultas para que usen otro plan de consulta ms rpido. Proporcionar la cantidad mxima de memoria a SQL Server Mediante AWE y el privilegio Lock Pages in Memory, puede proporcionar las siguientes cantidades de memoria a SQL Server Database Engine (Motor de base de datos de SQL Server). 32 bits 64 bits

Memoria convencional.

Todas las ediciones de SQL Server: hasta Todas las ediciones de SQL Server: hasta el lmite de el lmite de espacio de direcciones espacio de direcciones virtuales del proceso: virtuales del proceso:


Mecanismo AWE (permite a SQL Ediciones

2 GB

7 terabytes en la arquitectura IA64

3 GB con el parmetro de inicio /3gb1 Nota:

8 terabytes en la arquitectura x64

En Windows Server 2003 la limitacin es de 512 GB; en 4 GB en WOW642 Service Pack 1 de Windows Server 2003, un 1 terabyte. Si Windows admite memoria adicional, SQL Server puede llegar a los lmites mencionados. Standard, Enterprise y No aplicable3

Server superar el lmite del espacio Developer de SQL Server: el grupo de de direcciones virtuales del proceso bferes puede tener acceso a un mximo en plataformas de 32 bits). de 64 GB de memoria.

Privilegio (OS)

del

sistema Pages in

operativo Ediciones

Standard,

Enterprise

y Ediciones Enterprise Puede

y Developer proporcionar

de SQL Server: una ventaja de

Lock

Memory Developer de SQL Server: requerido para recomendado para evitar la paginacin del sistema

(permite bloquear memoria fsica e que el proceso de SQL Server utilice el operativo. operativo bloqueada).4 de la

impedir la paginacin en el sistema mecanismo AWE. La memoria asignada a rendimiento en funcin de la carga de trabajo. La memoria travs del mecanismo AWE no se puede cantidad de memoria a la que se puede tener acceso es paginar. similar al caso de memoria convencional.

47

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Si se concede este privilegio sin habilitar AWE, no tiene efecto en el servidor. 1 /3gb es un parmetro de inicio del sistema operativo..
2

WOW64 (Windows on Windows 64) es un modo en el que SQL Server de 32 bits se ejecuta en un sistema operativo de 64 bits.

Tenga en cuenta que la opcin awe enabled de sp_configure est presente en SQL Server de 64 bits, pero se omite. Se eliminar en futuras versiones o los Service Pack de SQL Server de 64 bits.
4

Si se concede el privilegio Lock Pages in Memory (con compatibilidad de 32 bits para AWE o directamente en 64 bits), se recomienda establecer tambin la opcin max server memory.

Administracin dinmica de memoria El comportamiento predeterminado de administracin de memoria del SQL Server Database Engine (Motor de base de datos de SQL Server) de Microsoft es adquirir toda la memoria que necesita sin provocar una escasez de memoria en el sistema. El Database Engine (Motor de base de datos) lo consigue mediante las API de notificacin de memoria de Microsoft Windows. El espacio de direccin virtual de SQL Server se puede dividir en dos regiones diferenciadas: espacio ocupado por el grupo de bferes y el resto. Si el mecanismo AWE est activado, el grupo de bferes puede residir en la memoria asignada de AWE, lo que proporciona espacio adicional para las pginas de base de datos. El grupo de bferes se utiliza como origen principal de asignacin de memoria de SQL Server. Los componentes externos que residen dentro del proceso de SQL Server, como los objetos COM, y que no reconocen los recursos de administracin de memoria de SQL Server, utilizan la memoria situada fuera del espacio de direcciones virtuales ocupado por el grupo de bferes. Cuando SQL Server se inicia, calcula el tamao del espacio de direcciones virtuales del grupo de bferes basndose en un nmero de parmetros, como la cantidad de memoria fsica en el sistema, el nmero de subprocesos de servidor y varios parmetros de inicio. SQL Server reserva la cantidad calculada de su espacio de direcciones virtuales del proceso para el grupo de bferes, pero slo adquiere (confirma) la cantidad necesaria de memoria fsica para la carga actual. A continuacin, la instancia sigue adquiriendo la memoria que necesita para la carga de trabajo. A medida que se conectan ms usuarios y se ejecutan consultas, SQL Server adquiere la memoria fsica adicional segn la demanda. Una instancia de SQL Server sigue adquiriendo memoria fsica hasta que alcanza su asignacin de max server memory o hasta que Windows indica que ya no existe ms memoria libre; libera memoria cuando se supera el valor de min server memory y Windows indica que hay escasez de memoria libre. Cuando se inician otras aplicaciones en un equipo que ejecuta una instancia de SQL Server, consumen memoria y la cantidad de memoria fsica disponible cae por debajo del destino de SQL Server. La instancia de SQL Server ajusta su consumo de memoria. Si se detiene otra aplicacin y hay ms memoria disponible, la instancia de SQL Server aumenta el tamao de su asignacin de memoria. SQL Server puede liberar y adquirir varios megabytes de memoria por segundo, lo que permite ajustarse rpidamente a los cambios de asignacin de memoria.

Efectos de las opciones min y max server memory

Las opciones de configuracin min server memory (memoria mnima del servidor) y max server memory (memoria mxima del servidor) establecen los lmites superior e inferior de la cantidad de memoria que utiliza el grupo de bferes del SQL Server Database Engine (Motor de base de datos de SQL Server) de Microsoft. El grupo de bferes no adquiere inmediatamente la cantidad de memoria especificada en min server memory. El grupo de bferes comienza con la memoria precisa para el inicio. Segn aumenta la carga de trabajo del Database Engine (Motor de base de datos), se sigue adquiriendo la memoria necesaria para permitir la carga de trabajo. El grupo de bferes no libera nada de la memoria adquirida hasta que alcanza la cantidad especificada en min server memory. Una vez alcanzado el valor de min server memory, el grupo de bferes utiliza el algoritmo estndar para adquirir y liberar memoria segn sea preciso. La nica diferencia es que el grupo de bferes nunca deja que su asignacin de memoria baje del nivel especificado en min server memory, y nunca adquiera ms memoria del nivel especificado en max server memory. Nota: SQL Server adquiere, como un proceso, ms memoria de la especificada en la opcin max server memory. Los componentes tanto internos como externos pueden asignar memoria fuera del grupo de bferes, lo cual consume memoria adicional, pero la memoria asignada en el grupo de bferes normalmente representa la cantidad ms grande de memoria que SQL Server consume. La cantidad de memoria que adquiere el Database Engine (Motor de base de datos) es totalmente dependiente de la carga de trabajo colocada en la instancia. Una instancia de SQL Server que no procesa muchas solicitudes nunca podr alcanzar el nivel de min server memory. Si se especifica el mismo valor para min server memory y max server memory, una vez que la memoria asignada al motor de base de datos alcanza ese valor, el Database Engine (Motor de base de datos) detiene dinmicamente la adquisicin y liberacin de la memoria para el grupo de bferes. Si una instancia de SQL Server se est ejecutando en un equipo donde se inician o detienen otras aplicaciones con frecuencia, la asignacin y cancelacin de asignacin de memoria por parte de la instancia de SQL Server puede ralentizar el inicio de otras aplicaciones. Adems, si SQL Server es una de las diversas aplicaciones de servidor que se ejecutan en un nico equipo, los administradores del sistema pueden necesitar controlar la cantidad de memoria asignada a SQL Server. En estos casos, puede utilizar las opciones min server memory y max server memory para controlar cunta memoria puede utilizar SQL Server. Las opciones min server memory y max server memory se expresan en megabytes.

Memoria compatible con las ediciones de SQL Server

48

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
La siguiente tabla especifica la memoria mxima admitida en cada edicin de SQL Server 2008. Edicin de SQL Server Memoria mxima admitida

Enterprise

Sistema operativo mximo

Developer

Sistema operativo mximo

Standard

Sistema operativo mximo

Web

Sistema operativo mximo

Workgroup

4 GB (64 bits), mximo sistema operativo (32 bits)

Express

1 GB

Express with Tools

1 GB

Express con Advanced Services

1 GB

Cmo habilitar la opcin de bloqueo de pginas en memoria (Windows)

La opcin Lock Pages in Memory (bloqueo de pginas en memoria) de la directiva de Windows est deshabilitada de forma predeterminada. Se debe habilitar este privilegio para configurar las extensiones de ventana de direccin (AWE). Esta directiva determina qu cuentas pueden utilizar un proceso para mantener los datos en la memoria fsica, impidiendo que el sistema realice la paginacin de los datos en la memoria virtual del disco. En los sistemas operativos de 32 bits, la configuracin de este privilegio cuando no se utiliza AWE puede dificultar en gran medida el rendimiento del sistema. El bloqueo de pginas en memoria no es necesario en sistemas operativos de 64 bits. Utilice la herramienta Directiva de grupo de Windows (gpedit.msc) para habilitar esta directiva para la cuenta utilizada por SQL Server. Debe ser el administrador del sistema para cambiar esta directiva. Para habilitar la opcin de bloqueo de pginas en memoria

1.

En el men Inicio, haga clic en Ejecutar. En el cuadro Abrir, escriba gpedit.msc. Se abrir el cuadro de dilogo Directiva de grupo.

2. 3. 4.
5.

En la consola Directiva de grupo, expanda Configuracin del equipo y, a continuacin, expanda Configuracin de Windows.

Expanda Configuracin de seguridad y, a continuacin, expanda Directivas locales.

Seleccione la carpeta Asignacin de derechos de usuario. Las directivas se mostrarn en el panel de detalles. En el panel, haga doble clic en la opcin de bloqueo de pginas en memoria.

6. 7.

En el cuadro de dilogo Configuracin de la directiva de seguridad local, haga clic en Agregar.

En el cuadro de dilogo Seleccionar usuarios o grupos, agregue una cuenta con privilegios para ejecutar sqlservr.exe.

Collation (Intercalaciones) La configuracin de intercalacin de SQL Server 2008 depende del tipo de instalacin. Normalmente, se debe elegir una intercalacin de SQL Server que admita la configuracin regional del sistema de Windows que ms se suela usar en la organizacin. Para identificar la configuracin regional del sistema de Windows en los equipos que ejecutan Windows 2000, haga clic en Configuracin regional en el Panel de control y, a continuacin, haga clic en Avanzadas. En Windows Vista, utilice la ficha Formatos. Para identificar la configuracin regional del sistema de Windows en equipos que ejecutan Windows Server 2003, haga clic en Configuracin regional y de idioma en el Panel de control y, a continuacin, haga clic en la ficha Opciones regionales. En la mayora de los casos, un equipo ejecuta la configuracin regional del sistema de Windows que coincide con los requisitos de idioma del usuario. Por consiguiente, el programa de instalacin de SQL Server detecta automticamente la configuracin regional del sistema de Windows y selecciona la intercalacin de SQL Server adecuada. Para mantener la compatibilidad con las versiones anteriores, la intercalacin del idioma ingls (EE.UU.) predeterminada es SQL_Latin1_General*.

49

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Las intercalaciones de SQL Server 2008 controlan lo siguiente:

La pgina de cdigos que se utiliza para almacenar datos no Unicode en SQL Server. Las reglas que rigen la forma en que SQL Server ordena y compara los caracteres que se almacenan en tipos de datos no Unicode. El programa de instalacin de SQL Server detectar la intercalacin de Windows en el equipo donde se instala SQL Server. A continuacin, seleccionar automticamente la intercalacin para la instancia de SQL Server. Los rdenes y las comparaciones pueden ser diferentes para caracteres Unicode y no Unicode.

Utilice la tabla siguiente para determinar qu intercalacin debe elegir, si debe elegir alguna. Nota: Si actualiza a partir de una versin anterior de un valor de intercalacin de SQL Server, no se requiere ninguna opcin de intercalacin. Tarea Intercalacin

Instalar

en

un

sistema

nuevo

sin Utilice la intercalacin que identifica el programa de instalacin y, a continuacin, elija

requisitos para sincronizar con sistemas binario, maysculas o minsculas, u otras opciones, segn desee. existentes. Cuando el programa de instalacin de SQL Server detecta que el equipo est ejecutando la configuracin regional del sistema en ingls de EE.UU., selecciona automticamente la intercalacin de SQL Server 2008: Orden alfabtico, no distingue maysculas de minsculas, para utilizar con el juego de caracteres 1252. Para seleccionar la intercalacin de Windows equivalente, seleccione Designador de intercalacin, seleccione Latin1_General y, a continuacin, desactive Distinguir maysculas de minsculas.

Actualizar Server 6.5 instancia Server, o

una o

instalacin

de a de

SQL Use la intercalacin de SQL Server 2008 que seleccione el programa de instalacin. una SQL

SQL

Server 7.0 una

predeterminada instalar

instancia

predeterminada de SQL Server 2008 que pueda cambiar por una instalacin de SQL Server 6.5.

Sincronizar con una instancia existente Seleccione SERVERPROPERTY(N'Collation') en el Editor de cdigos de la instancia de SQL Server. existente y especifique Collation. Si el nombre de la intercalacin de la instancia existente comienza por "SQL", seleccione la misma intercalacin de SQL Server en el programa de instalacin. Si el nombre de intercalacin de la instancia existente no comienza por "SQL", se trata de un nombre de intercalacin de Windows. Consta del nombre del designador de intercalacin seguido de una descripcin de las opciones (binario, distinguir maysculas de minsculas, acentos, Kana y ancho) que se especifican. Seleccione el mismo designador de intercalacin y las mismas opciones de orden de Windows en el programa de instalacin de SQL Server.

Sincronizar con una instalacin existente Ejecute sp_helpsort en el sistema existente. Despus, use el identificador de orden para de SQL Server 6.5, SQL Server 7.0 o seleccionar una intercalacin de SQL Server y hacer as que la instancia de SQL Server sea SQL Server 2000. compatible con una instalacin existente.

Nota: Al ejecutar una accin que dependa de las intercalaciones, la intercalacin de SQL Server que utiliza el objeto de referencia debe utilizar una pgina de cdigos que admita el sistema operativo del equipo.

Seleccionar una intercalacin de SQL Server Este tema describe las opciones de intercalacin de SQL Server 2008 para instancias de SQL Server que requieran compatibilidad con versiones de SQL Server que no utilizan intercalaciones. Las siguientes intercalaciones de SQL Server aparecen en la pgina Configuracin de intercalacin del Asistente para la instalacin de SQL Server.

50

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Id. del criterio Nombre de criterio Descripcin de ordenacin de de ordenacin SQL Intercalacin de SQL

31

diction.437

Orden alfabtico, distingue maysculas SQL_Latin1_General_Cp437_CS_AS_KI_WI de minsculas

32

nocase.437

Orden

alfabtico,

no

distingue SQL_Latin1_General_Cp437_CI_AS_KI_WI

maysculas de minsculas

33

nocasepr.437

Orden

alfabtico,

no

distingue SQL_Latin1_General_Pref_Cp437_CI_AS_KI_WI

maysculas de minsculas, preferencia por maysculas

34

noaccent.437

Orden acentos

alfabtico,

no

distingue SQL_Latin1_General_Cp437_CI_AI_KI_WI

maysculas de minsculas, no distingue

40

cp437bin.437

Binario

SQL_Latin1_General_Cp437_BIN

40

cp850bin.850

Binario

SQL_Latin1_General_Cp850_BIN

41

diction.850

Orden alfabtico, distingue maysculas SQL_Latin1_General_Cp850_CS_AS_KI_WI de minsculas

42

nocase.850

Orden

alfabtico,

no

distingue SQL_Latin1_General_Cp850_CI_AS_KI_WI

maysculas de minsculas

44

noaccent.850

Orden acentos

alfabtico,

no

distingue SQL_Latin1_General_Cp850_CI_AI_KI_WI

maysculas de minsculas, no distingue

44

nocase34.850

Orden

alfabtico,

no

distingue SQL_Latin1_General_Pref_Cp850_CI_AS_KI_WI

maysculas de minsculas, preferencia por maysculas

49

nocase34.850

Compatibilidad datos que

estricta

con

bases

de SQL_1xCompat_Cp850_CI_AS_KI_WI de

distinguen

maysculas

minsculas de la versin 1.x

51

diction.iso

Orden alfabtico, distingue maysculas SQL_Latin1_General_Cp1_CS_AS_KI_WI de minsculas

52

nocase.iso

Orden

alfabtico,

no

distingue SQL_Latin1_General_Cp1_CI_AS_KI_WI

maysculas de minsculas

53

nocasepr.iso

Orden

alfabtico,

no

distingue SQL_Latin1_General_Pref_Cp1_CI_AS_KI_WI

maysculas de minsculas, preferencia por maysculas

54

noaccent.iso

Orden acentos

alfabtico,

no

distingue SQL_Latin1_General_Cp1_CI_AI_KI_WI

maysculas de minsculas, no distingue

55

altdict.850

Orden alfabtico alternativo, distingue SQL_AltDiction_Cp850_CS_AS_KI_WI maysculas de minsculas

56

altnocsp.850

Orden alfabtico alternativo, no distingue SQL_AltDiction_Pref_Cp850_CI_AS_KI_WI maysculas de minsculas, preferencia por maysculas

51

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

57

altnoacc.850

Orden alfabtico alternativo, no distingue SQL_AltDiction_Cp850_CI_AI_KI_WI maysculas de minsculas, no distingue acentos

58

scan.850

Orden distingue

alfabtico

escandinavo, de

no SQL_Scandainavian_Pref_Cp850_CI_AS_KI_WI

maysculas

minsculas,

preferencia por maysculas

59

scandict.850

Orden alfabtico escandinavo, distingue SQL_Scandainavian_Cp850_CS_AS_KI_WI maysculas de minsculas

60

scannocase.850

Orden alfabtico escandinavo que no SQL_Scandainavian_Cp850_CI_AS_KI_WI distingue maysculas de minsculas, sin preferencia por maysculas o minsculas

61

altnocs.850

Orden alfabtico alternativo, no distingue SQL_AltDiction_Cp850_CI_AS_KI_WI maysculas de minsculas

80

binary.250

Binario

SQL_Latin1_General_1250_BIN

81

diction.250

Orden alfabtico, distingue maysculas SQL_Latin1_General_Cp1250_CS_AS_KI_WI de minsculas

82

nocase.250

Orden

alfabtico,

no

distingue SQL_Latin1_General_Cp1250_CI_AS_KI_WI

maysculas de minsculas

83

csydic.250

Orden

alfabtico

checo,

distingue SQL_Czech_Cp1250_CS_AS_KI_WI

maysculas de minsculas

84

csync.250

Orden

alfabtico

checo,

no

distingue SQL_Czech_Cp1250_CI_AS_KI_WI

maysculas de minsculas

85

hundic.250

Orden

alfabtico

hngaro,

distingue SQL_Hungarian_Cp1250_CS_AS_KI_WI

maysculas de minsculas

86

hunnc.250

Orden alfabtico hngaro, no distingue SQL_Hungarian_Cp1250_CI_AS_KI_WI maysculas de minsculas

87

plkdic.250

Orden

alfabtico

polaco,

distingue SQL_Polish_Cp1250_CS_AS_KI_WI

maysculas de minsculas

88

plknc.250

Orden alfabtico polaco, no distingue SQL_Polish_Cp1250_CI_AS_KI_WI maysculas de minsculas

89

romdic.250

Orden

alfabtico

rumano,

distingue SQL_Romanian_Cp1250_CS_AS_KI_WI

maysculas de minsculas

90

romnc.250

Orden alfabtico rumano, no distingue SQL_Romanian_Cp1250_CI_AS_KI_WI maysculas de minsculas

91

shldic.250

Orden

alfabtico

croata,

distingue SQL_Croatian_Cp1250_CS_AS_KI_WI

maysculas de minsculas

92

shlnc.250

Orden alfabtico croata, no distingue SQL_Croatian_Cp1250_CI_AS_KI_WI maysculas de minsculas

93

skydic.250

Orden

alfabtico

eslovaco,

distingue SQL_Slovak_Cp1250_CS_AS_KI_WI

maysculas de minsculas

94

skync.250

Orden alfabtico eslovaco, no distingue SQL_Slovak_Cp1250_CI_AS_KI_WI

52

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

maysculas de minsculas

95

slvdic.250

Orden

alfabtico

esloveno,

distingue SQL_Slovenian_Cp1250_CS_AS_KI_WI

maysculas de minsculas

96

slvnc.250

Orden alfabtico esloveno, no distingue SQL_Slovenian_Cp1250_CI_AS_KI_WI maysculas de minsculas

104

binary.250

Binario

SQL_Latin1_General_1251_BIN

105

diction.251

Orden alfabtico, distingue maysculas SQL_Latin1_General_Cp1251_CS_AS_KI_WI de minsculas

106

nocase.251

Orden

alfabtico,

no

distingue SQL_Latin1_General_Cp1251_CI_AS_KI_WI

maysculas de minsculas

107

ukrdic.251

Orden

alfabtico

ucraniano,

distingue SQL_Ukrainian_Cp1251_CS_AS_KI_WI

maysculas de minsculas

108

ukrnc.251

Orden alfabtico ucraniano, no distingue SQL_Ukrainian_Cp1251_CI_AS_KI_WI maysculas de minsculas

112

binary.253

Binario

SQL_Latin1_General_1253_BIN

113

diction.253

Orden alfabtico, distingue maysculas SQL_Latin1_General_Cp1253_CS_AS_KI_WI de minsculas

114

nocase.253

Orden

alfabtico,

no

distingue SQL_Latin1_General_Cp1253_CI_AS_KI_WI

maysculas de minsculas

121

graltdct.253

Orden alfabtico, distingue maysculas SQL_Latin1_General_Cp1253_CI_AS_KI_WI de minsculas, distingue acentos

124

grnoacce.253

Orden acentos

alfabtico,

no

distingue SQL_Latin1_General_Cp1253_CI_AI_KI_WI

maysculas de minsculas, no distingue

128

binary.254

Binario

SQL_Latin1_General_1254_BIN

129

diction.254

Orden alfabtico, distingue maysculas SQL_Latin1_General_Cp1254_CS_AS_KI_WI de minsculas

130

nocase.254

Orden

alfabtico,

no

distingue SQL_Latin1_General_Cp1254_CI_AS_KI_WI

maysculas de minsculas

136

binary.255

Binario

SQL_Latin1_General_1255_BIN

137

diction.255

Orden alfabtico, distingue maysculas SQL_Latin1_General_Cp1255_CS_AS_KI_WI de minsculas

138

nocase.255

Orden

alfabtico,

no

distingue SQL_Latin1_General_Cp1255_CI_AS_KI_WI

maysculas de minsculas

144

binary.256

Binario

SQL_Latin1_General_1256_BIN

145

diction.256

Orden alfabtico, distingue maysculas SQL_Latin1_General_Cp1256_CS_AS_KI_WI de minsculas

146

nocase.256

Orden

alfabtico,

no

distingue SQL_Latin1_General_Cp1256_CI_AS_KI_WI

53

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

maysculas de minsculas

152

binary.257

Binario

SQL_Latin1_General_1257_BIN

153

diction.257

Orden alfabtico, distingue maysculas SQL_Latin1_General_Cp1257_CS_AS_KI_WI de minsculas

154

nocase.257

Orden

alfabtico,

no

distingue SQL_Latin1_General_Cp1257_CI_AS_KI_WI

maysculas de minsculas

155

etidic.257

Orden

alfabtico

estonio,

distingue SQL_Estonian_Cp1257_CS_AS_KI_WI

maysculas de minsculas

156

etinc.257

Orden alfabtico estonio, no distingue SQL_Estonian_Cp1257_CI_AS_KI_WI maysculas de minsculas

157

lvidic.257

Orden

alfabtico

letn,

distingue SQL_Latvian_Cp1257_CS_AS_KI_WI

maysculas de minsculas

158

lvinc.257

Orden

alfabtico

letn,

no

distingue SQL_Latvian_Cp1257_CI_AS_KI_WI

maysculas de minsculas

159

lthdic.257

Orden

alfabtico

lituano,

distingue SQL_Lithuanian_Cp1257_CS_AS_KI_WI

maysculas de minsculas

160

lthnc.257

Orden alfabtico lituano, no distingue SQL_Lithuanian_Cp1257_CI_AS_KI_WI maysculas de minsculas

183

danonocp.iso

Orden

alfabtico

dans/noruego, de

no SQL_Danish_Pref_Cp1_CI_AS_KI_WI

distingue

maysculas

minsculas,

preferencia por maysculas

184

islanocp.iso

Orden

alfabtico

sueco/finlands SQL_SwedishPhone_Pref_Cp1_CI_AS_KI_WI

[telefnico], no distingue maysculas de minsculas, preferencia por maysculas

185

svf2nocp.iso.iso

Orden

alfabtico

sueco/finlands SQL_SwedishStd_Pref_Cp1_CI_AS_KI_WI

[estndar], no distingue maysculas de minsculas, preferencia por maysculas

186

islanocp.iso

Orden alfabtico islands, no distingue SQL_Icelandic_Pref_Cp1_CI_AS_KI_WI maysculas de minsculas, preferencia por maysculas

Nota: Cada nombre de intercalacin de SQL tiene una cadena equivalente en cdigo de Transact-SQL

3 Disear la Base de Datos fsica y la ubicacin de los objetos. Considerar: colocacin de los ndices y del heap, archivos de datos y log, grupos de archivos, colocacin de las particiones, colocacin de los objetos grandes, catlogo de full text. Especificar estructuras de diseo fsico Puede especificar qu estructuras de diseo fsico utilizarn durante la optimizacin la interfaz grfica de usuario (GUI) del Asistente para la optimizacin de Database Engine (Motor de base de datos) o la utilidad del smbolo del sistema dta. A travs de la GUI o del smbolo del sistema, los usuarios pueden especificar los tipos de ndices y particiones que el Asistente para la optimizacin de Database Engine (Motor de base de datos) tendr en cuenta en una recomendacin, y si mantienen o eliminan los ndices y particiones existentes. Antes de iniciar una operacin de optimizacin, los usuarios deben elegir dos opciones:

54

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
El conjunto de caractersticas que tienen previsto utilizar en la base de datos. El subconjunto de estructuras de diseo fsico existentes en la base de datos que debe formar parte de la recomendacin del Asistente para la optimizacin de Database Engine (Motor de base de datos).

Para especificar el conjunto de caractersticas, los usuarios deben proporcionar la clase de objetos que utilizarn y cmo se crearn las particiones de dichos objetos. En las siguientes secciones se describen las opciones que estn disponibles con las dos interfaces del Asistente para la optimizacin de Database Engine (Motor de base de datos).

Opciones de optimizacin a travs de la GUI La GUI del Asistente para la optimizacin de Database Engine (Motor de base de datos) es compatible con la mayora de opciones de optimizacin admitidas por la utilidad del smbolo del sistema dta. Sin embargo, la utilidad del smbolo del sistema proporciona ms opciones y una mayor flexibilidad porque admite totalmente la caracterstica de configuracin especificada por el usuario. En las siguientes tablas se describen las opciones de optimizacin disponibles en la ficha Opciones de optimizacin de la GUI.

Estructuras de diseo fsico para usar en la base de datos Opcin de optimizacin Hace que las recomendaciones del Asistente para la optimizacin de motor de base de datos Agreguen ndices agrupados, ndices no agrupados y vistas indizadas. Agreguen slo vistas indizadas. Plantese la posibilidad de agregar ndices filtrados. Esta opcin est disponible cuando se selecciona la opcin ndices y vistas indizadas, la opcin ndices o la opcin ndices no clster. ndices ndices no agrupados Evaluar utilizacin slo de estructuras de diseo fsico (PDS) existentes Agreguen slo ndices. Agreguen slo ndices no agrupados. Evalen nicamente las estructuras de diseo fsico existentes, no ninguna estructura nueva.

ndices y vistas indizadas Vistas indizadas Incluir ndices filtrados

Estrategia de particin que se va a utilizar Opcin de optimizacin No crear particiones Particiones completas Particiones alineadas Slo recomiende las particiones que estn alineadas con las particiones existentes de la tabla o vista subyacente. Al seleccionar esta opcin se mejora la capacidad de administracin. Utilice particiones en su recomendacin. Hace que el Asistente para la optimizacin de motor de base de datos

No utilice particiones en su recomendacin.

Estructuras de diseo fsico que se mantienen en la base de datos Opcin de optimizacin No mantener ninguna estructura de diseo fsico (PDS) existente Hace que el Asistente para la optimizacin de motor de base de datos Quite cualquier estructura de diseo fsico existente, si es apropiado. Seleccione la opcin Evaluar utilizacin slo de estructuras de diseo fsico (PDS) existentes junto con esta opcin para establecer el Asistente para la optimizacin de Database Engine (Motor de base de datos) en el modo de slo eliminacin, que nicamente analiza las estructuras de diseo fsico actuales para determinar si se pueden eliminar. Mantener slo ndices Mantener todas las estructuras de diseo fsico (PDS) existentes Mantener slo ndices Quite todas las estructuras excepto los ndices agrupados, si es adecuado. Quite todas las estructuras excepto los ndices, si es adecuado. Mantenga todas las estructuras existentes.

55

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
agrupados Mantener particiones alineadas Quite todas las estructuras excepto las particiones alineadas, si es adecuado.

Opciones de optimizacin de la utilidad dta Puede especificar los objetos del conjunto de caractersticas que desea que el Asistente para la optimizacin de Database Engine (Motor de base de datos) incluya en la configuracin recomendada mediante las opciones fa y fp respectivamente. Los valores que puede especificar para estas opciones se enumeran en las dos tablas siguientes, Objetos del conjunto de caractersticas (-fa) y Particiones del conjunto de caractersticas (-fp).

Objetos del conjunto de caractersticas (-fa) Valor IDX_IV IDX IV Descripcin ndices y vistas indizadas. Slo ndices (opcin predeterminada). Slo vistas indizadas (las vistas indizadas se aplican a todas las ediciones de SQL Server 2008 y SQL Server 2005, y a la edicin SQL Server 2000 Enterprise). NCL_IDX Slo ndices no agrupados.

Particiones del conjunto de caractersticas (-fp) Valor NONE FULL Descripcin No crear particiones (valor predeterminado). Particiones completas (para mejorar el rendimiento).

ALIGNED Totalmente alineado. Esto indica que una tabla y todos los ndices de la misma tienen particiones similares. Al seleccionar esta opcin se mejora la capacidad de administracin. Para especificar las estructuras de diseo fsico de la base de datos que deben formar parte de la recomendacin del Asistente para la optimizacin de Database Engine (Motor de base de datos), puede utilizar la opcin -fk . Los valores que puede especificar para la opcin se enumeran en la siguiente tabla.

Estructuras de diseo que se mantienen (-fk)

Valor ALL NONE CL_IDX IDX ALIGNED

Descripcin Todo (valor predeterminado). Nada. Slo ndices agrupados. Slo ndices agrupados y no agrupados. Todas las estructuras alineadas de particin solamente.

Modo de slo eliminacin (-fx) Para especificar el modo de slo eliminacin, utilice la opcin -fx. Esta opcin hace que el Asistente para la optimizacin de Database Engine (Motor de base de datos) slo tenga en cuenta la eliminacin de las estructuras de diseo fsico existentes. No se tienen en cuenta las nuevas estructuras de diseo fsico. El Asistente para la optimizacin de Database Engine (Motor de base de datos) analiza la utilidad de las estructuras de diseo fsico existentes y recomienda la eliminacin de las estructuras que se utilizan poco. Esta opcin no necesita valores. No puede utilizarse con -fa, -fp ni -fk ALL.

Crear una base de datos (motor de base de datos) Para crear una base de datos, tiene que determinar el nombre de la base de datos, el propietario, su tamao y los archivos y grupos de archivos utilizados para almacenarla. Antes de crear una base de datos, tenga en cuenta lo siguiente:

56

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Para crear una base de datos, debe, como mnimo, disponer de permiso CREATE DATABASE, CREATE ANY DATABASE o ALTER ANY DATABASE. En SQL Server, algunos permisos se establecen en los archivos de datos y de registro de cada base de datos.Los permisos evitan que los archivos se modifiquen accidentalmente si residen en un directorio sin restriccin de permisos. El usuario que crea la base de datos se convierte en su propietario. Pueden crearse hasta 32.767 bases de datos en una instancia de SQL Server.

El nombre de la base de datos debe ajustarse a las reglas establecidas para los Identificadores. Todos los objetos definidos por el usuario de la base de datos model se copiarn en todas las bases de datos recin creadas. Puede agregar a la base de datos model todos los objetos (tablas, vistas, procedimientos almacenados, tipos de datos, etc.) que desee incluir en todas las bases de datos recien creadas.

Archivos y grupos de archivos de base de datos Se utilizan tres tipos de archivos para almacenar una base de datos. stos incluyen archivos principales, archivos secundarios y registros de transacciones. La base de datos debe tener un archivo de datos principal y, como mnimo, un archivo de registro de transacciones. Tiene la opcin de crear uno o varios archivos de datos secundarios as como archivos de registro de transacciones adicionales. Archivos principales Estos archivos contienen la informacin de inicio de la base de datos. Se utilizan tambin para almacenar datos. Cada base de datos tiene un archivo principal. Archivos secundarios Estos archivos contienen todos los datos que no caben en el archivo de datos principal. No es necesario que las bases de datos tengan archivos de datos secundarios si el archivo principal es lo suficientemente grande como para contener todos los datos. Algunas bases de datos pueden ser muy grandes y necesitar varios archivos de datos secundarios o utilizar archivos secundarios en unidades de disco distintas, de modo que los datos estn distribuidos en varios discos. Registros de transacciones Estos archivos contienen la informacin de registro que se utiliza para recuperar la base de datos. Cada base de datos debe tener al menos un archivo de registro de transacciones, aunque puede tener ms de uno. El tamao mnimo de un archivo de registro es de 512 KB. Cuando cree una base de datos, defina el mayor tamao posible para los archivos de datos, segn la cantidad de datos mxima prevista para la base datos.

Inicializacin de archivos Los archivos de datos y de registro se inicializan para sobrescribir los datos existentes que queden en el disco de archivos eliminados anteriormente. Tambin se inicializan y se llenan con ceros cuando se realiza alguna de las siguientes operaciones:

Crear una base de datos Agregar archivos a una base de datos existente

Aumentar el tamao de un archivo existente Restaurar una base de datos o un grupo de archivos

En SQL Server, los archivos de datos se pueden inicializar de forma instantnea.Esto permite la ejecucin rpida de las operaciones de archivo mencionadas anteriormente.

Instantneas de base de datos Puede utilizar la instruccin CREATE DATABASE para crear una vista esttica de slo lectura, denominada instantnea de base de datos, de una base de datos existente, la base de datos de origen. Una instantnea de base de datos es coherente en cuanto a las transacciones con la base de datos tal como exista en el momento de la creacin de la instantnea. Una base de datos de origen puede tener varias instantneas.

Bases de datos extrables Puede crear una base de datos de slo lectura que pueda distribuirse mediante un medio extrable, por ejemplo, un CD-ROM. Le resultar de utilidad para distribuir grandes bases de datos con datos del historial; por ejemplo, una base de datos con datos detallados acerca de las ventas del ao pasado.

Descripcin de archivos y grupos de archivos

57

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Como mnimo, todas las bases de datos de SQL Server tienen dos archivos del sistema operativo: un archivo de datos y un archivo de registro.Los archivos de datos contienen datos y otros objetos, como tablas, ndices, procedimientos almacenados y vistas. Los archivos de registro contienen la informacin necesaria para recuperar todas las transacciones de la base de datos. Los archivos de datos se pueden agrupar en grupos de archivos para su asignacin y administracin. Archivos de la base de datos Las bases de datos de SQL Server tienen tres tipos de archivos, tal como se muestra en la tabla siguiente. Archivo Principal Descripcin El archivo de datos principal incluye la informacin de inicio de la base de datos y apunta a los dems archivos de la misma. Los datos y objetos del usuario se pueden almacenar en este archivo o en archivos de datos secundarios. Cada base de datos tiene un archivo de datos principal. La extensin recomendada para los nombres de archivos de datos principales es .mdf. Secundario Los archivos de datos secundarios son opcionales, estn definidos por el usuario y almacenan los datos del usuario. Se pueden utilizar para distribuir datos en varios discos colocando cada archivo en una unidad de disco distinta. Adems, si una base de datos supera el tamao mximo establecido para un archivo de Windows, puede utilizar los archivos de datos secundarios para permitir el crecimiento de la base de datos. La extensin recomendada para los nombres de archivos de datos secundarios es .ndf. Registro de transacciones Los archivos del registro de transacciones contienen la informacin de registro que se utiliza para recuperar la base de datos. Cada base de datos debe tener al menos un archivo de registro. La extensin recomendada para los nombres de archivos de registro es .ldf. Por ejemplo, puede crearse una base de datos sencilla denominada Ventas con un archivo principal que contenga todos los datos y objetos y un archivo de registro con la informacin del registro de transacciones. Por otra parte, puede crearse una base de datos ms compleja, Pedidos, compuesta por un archivo principal y cinco archivos secundarios. Los datos y objetos de la base de datos se reparten entre los seis archivos, y cuatro archivos de registro adicionales contienen la informacin del registro de transacciones. De forma predeterminada, los datos y los registros de transacciones se colocan en la misma unidad y ruta de acceso para administrar los sistemas de un solo disco, pero puede que esto no resulte ptimo para los entornos de produccin. Se recomienda colocar los archivos de datos y de registro en distintos discos.

Grupos de archivos

Cada base de datos tiene un grupo de archivos principal. Este grupo de archivos contiene el archivo de datos principal y cualquier otro archivo secundario que no se encuentre en otro grupo de archivos. Se pueden crear grupos de archivos definidos por el usuario para agrupar archivos con fines administrativos y de asignacin y ubicacin de datos. Por ejemplo, pueden crearse tres archivos, Datos1.ndf, Datos2.ndf y Datos3.ndf, en tres unidades de disco respectivamente para asignarlos posteriormente al grupo de archivos grArchivos1. A continuacin, se puede crear una tabla especficamente para el grupo de archivos grArchivos1. Las consultas de datos de la tabla se distribuirn por los tres discos, con lo que mejorar el rendimiento. Puede obtenerse la misma mejora del rendimiento con un solo archivo creado en un conjunto de bandas RAID (matriz redundante de discos independientes). No obstante, los archivos y grupos de archivos permiten agregar fcilmente nuevos archivos a discos nuevos. Todos los archivos de datos se almacenan en los grupos de archivos que se indican en la tabla siguiente. Grupo de archivos Principal Descripcin Grupo de archivos que contiene el archivo principal. Todas las tablas del sistema se asignan al grupo de archivos principal. Definido por el usuario Cualquier grupo de archivos creado especficamente por el usuario al crear la base de datos o al modificarla.

Grupo de archivos predeterminado Cuando se crean objetos en la base de datos sin especificar a qu grupo de archivos pertenecen, se asignan al grupo de archivos predeterminado. Siempre existe un grupo de archivos designado como predeterminado. Los archivos del grupo de archivos predeterminado deben ser lo suficientemente grandes como para dar cabida a todos los objetos nuevos no asignados a otros grupos de archivos. El grupo de archivos PRINCIPAL es el predeterminado, a menos que se cambie mediante la instruccin ALTER DATABASE. Los objetos y las tablas del sistema no se asignan al nuevo grupo de archivos predeterminado, sino que siguen asignados al grupo de archivos PRIMARY. Arquitectura de archivos y grupos de archivos

SQL Server asigna una base de datos a un conjunto de archivos del sistema operativo. Los datos y la informacin del registro nunca se mezclan en el mismo archivo, y cada archivo slo es utilizado por una base de datos. Los grupos de archivos se denominan colecciones con nombre de archivos que se utilizan como ayuda en tareas de colocacin de datos y administrativas, como las operaciones de copias de seguridad y restauracin. Archivos de base de datos

58

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Las bases de datos de SQL Server utilizan tres tipos de archivos:

Archivos de datos principales El archivo de datos principal es el punto de partida de la base de datos y apunta a los otros archivos de la base de datos. Cada base de datos tiene un archivo de datos principal. La extensin recomendada para los nombres de archivos de datos principales es .mdf. Archivos de datos secundarios Los archivos de datos secundarios son todos los archivos de datos menos el archivo de datos principal. Puede que algunas bases de datos no tengan archivos de datos secundarios, mientras que otras pueden tener varios archivos de datos secundarios. La extensin de nombre de archivo recomendada para los archivos de datos secundarios es .ndf. Archivos de registro Los archivos de registro almacenan toda la informacin de registro que se utiliza para recuperar la base de datos. Como mnimo, tiene que haber un archivo de registro por cada base de datos, aunque puede haber varios. La extensin de nombre de archivo recomendada para los archivos de registro es .ldf.

SQL Server no exige las extensiones de nombre de archivo .mdf, .ndf y .ldf, pero estas extensiones ayudan a identificar las distintas clases de archivos y su uso. En SQL Server, las ubicaciones de todos los archivos de una base de datos se guardan tanto en el archivo principal de la base de datos como en la base de datos maestra. SQL Server Database Engine (Motor de base de datos de SQL Server) utiliza casi siempre la informacin de ubicacin del archivo de la base de datos maestra. Sin embargo, Database Engine (Motor de base de datos) utiliza la informacin de ubicacin del archivo principal para inicializar las entradas de ubicacin de archivos de la base de datos maestra en las siguientes situaciones:

Al adjuntar una base de datos mediante la instruccin CREATE DATABASE con la opcin FOR ATTACH o la opcin FOR ATTACH_REBUILD_LOG. Al actualizar desde SQL Server versin 2000 o versin 7.0 Al restaurar la base de datos maestra.

Nombres de archivo lgico y fsico Los archivos de SQL Server tienen dos nombres: logical_file_name logical_file_name es el nombre que se utiliza para hacer referencia al archivo en todas las instrucciones Transact-SQL. El nombre de archivo lgico tiene que cumplir las reglas de los identificadores de SQL Server y tiene que ser nico entre los nombres de archivos lgicos de la base de datos. os_file_name os_file_name es el nombre del archivo fsico que incluye la ruta de acceso al directorio. Debe seguir las reglas para nombres de archivos del sistema operativo. Los archivos de datos y de registro de SQL Server se pueden colocar en sistemas de archivos FAT o NTFS. Se recomienda utilizar el sistema de archivos NTFS por las caractersticas de seguridad que ofrece. No se pueden colocar grupos de archivos de datos de lectura/escritura, y archivos de registro, en un sistema de archivos NTFS comprimido. Slo las bases de datos de slo lectura y los grupos de archivos secundarios de slo lectura se pueden colocar en un sistema de archivos NTFS comprimido. Cuando se ejecutan varias instancias de SQL Server en un nico equipo, cada instancia recibe un directorio predeterminado diferente para albergar los archivos de las bases de datos creadas en la instancia.

Pginas de archivo de datos Las pginas de un archivo de datos de SQL Server estn numeradas secuencialmente, comenzando por cero (0) para la primera pgina del archivo. Cada archivo de una base de datos tiene un nmero de identificador nico. Para identificar de forma nica una pgina de una base de datos, se requiere el identificador del archivo y el nmero de la pgina. El siguiente ejemplo muestra los nmeros de pgina de una base de datos que tiene un archivo de datos principal de 4 MB y un archivo de datos secundario de 1 MB.

59

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

La primera pgina de cada archivo es una pgina de encabezado de archivo que contiene informacin acerca de los atributos del archivo. Algunas de las otras pginas del comienzo del archivo tambin contienen informacin de sistema, como mapas de asignacin. Una de las pginas de sistema almacenadas en el archivo de datos principal y en el archivo de registro principal es una pgina de inicio de la base de datos que contiene informacin acerca de los atributos de la base de datos.

Tamao de archivo Los archivos de SQL Server pueden crecer de forma automtica a partir del tamao especificado inicialmente. Cuando se define un archivo, se puede especificar un incremento de crecimiento. Cada vez que se llena el archivo, el tamao aumenta en la cantidad especificada. Si hay varios archivos en un grupo de archivos, no crecern automticamente hasta que todos los archivos estn llenos. A continuacin, el crecimiento tiene lugar por turnos. Cada archivo tambin puede tener un tamao mximo especificado. Si no se especifica un tamao mximo, el archivo puede crecer hasta utilizar todo el espacio disponible en el disco. Esta caracterstica es especialmente til cuando SQL Server se utiliza como una base de datos incrustada en una aplicacin para la que el usuario no dispone fcilmente de acceso a un administrador del sistema. El usuario puede dejar que los archivos crezcan automticamente cuando sea necesario y evitar as las tareas administrativas de supervisar la cantidad de espacio disponible en la base de datos y asignar ms espacio manualmente.

Archivos de instantneas de bases de datos La forma de archivo que utiliza una instantnea de base de datos para almacenar sus datos de copia por escritura depende de si la instantnea la ha creado un usuario o se utiliza internamente:

Una instantnea de base de datos que crea un usuario almacena sus datos en uno o ms archivos dispersos. La tecnologa de archivos dispersos es una caracterstica del sistema de archivos NTFS. Al principio, un archivo disperso no incluye datos de usuario y no se le asigna espacio en disco. Las instantneas de bases de datos las utilizan internamente algunos comandos DBCC. Entre estos comandos se incluyen: DBCC CHECKDB, DBCC CHECKTABLE, DBCC CHECKALLOC y DBCC CHECKFILEGROUP. Una instantnea de base de datos interna utiliza secuencias de datos alternativos dispersos de los archivos de base de datos originales. Como los archivos dispersos, las secuencias de datos alternativos son una caracterstica del sistema de archivos NTFS. El uso de las secuencias de datos alternativos dispersos permite que varias asignaciones de datos se asocien a un nico archivo o carpeta sin afectar a las estadsticas de tamao o volumen.

Grupos de archivos de una base de datos Los objetos y archivos de una base de datos se pueden agrupar en grupos de archivos con fines de asignacin y administracin. Hay dos tipos de grupos de archivos: Principal El grupo de archivos principal contiene el archivo de datos principal y los dems archivos asignados especficamente a otro grupo de archivos. Todas las pginas de las tablas del sistema estn asignadas al grupo de archivos principal. Definidos por el usuario Los grupos de archivos definidos por el usuario son los grupos de archivos especificados mediante la palabra clave FILEGROUP en la instruccin CREATE DATABASE o ALTER DATABASE. Los archivos de registro nunca forman parte de un grupo de archivos. El espacio del registro se administra de forma independiente del espacio de datos. Ningn archivo puede pertenecer a ms de un grupo de archivos. Las tablas, los ndices y los datos de objetos grandes se pueden asociar a un grupo de archivos especfico. En este caso, todas sus pginas se asignarn a dicho grupo de archivos o se pueden crear particiones en las tablas e ndices. Los datos de las tablas e ndices con particiones se dividen en unidades y cada una de ellas se puede colocar en un grupo de archivos independiente de una base de datos.

60

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Un grupo de archivos de cada base de datos se designa como grupo de archivos predeterminado. Cuando se crea una tabla o un ndice sin especificar un grupo de archivos, se supone que todas las pginas se asignarn a partir del grupo de archivos predeterminado. Slo un grupo de archivos puede ser el predeterminado en un momento dado. Los miembros de la funcin fija db_owner de la base de datos pueden cambiar el grupo de archivos predeterminado de un grupo a otro. Si no se especifica ningn grupo de archivos predeterminado, se considera como tal al grupo de archivos principal.

Ejemplo de archivos y grupos de archivos En el siguiente ejemplo se crea una base de datos con una contrasea de SQL Server. La base de datos tiene un archivo de datos principal, un grupo de archivos definido por el usuario y el archivo de registro. El archivo de datos principal est en el grupo de archivos principal y el grupo de archivos definido por el usuario tiene dos archivos de datos secundarios. Una instruccin ALTER DATABASE hace que el grupo de archivos definido por el usuario sea el grupo predeterminado. A continuacin, se crea una tabla que especifica el grupo de archivos definido por el usuario. USE master; GO -- Create the database with the default data -- filegroup and a log file. Specify the -- growth increment and the max size for the -- primary data file. CREATE DATABASE MyDB ON PRIMARY ( NAME='MyDB_Primary', FILENAME= 'c:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\data\MyDB_Prm.mdf', SIZE=4MB, MAXSIZE=10MB, FILEGROWTH=1MB), FILEGROUP MyDB_FG1 ( NAME = 'MyDB_FG1_Dat1', FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\data\MyDB_FG1_1.ndf', SIZE = 1MB, MAXSIZE=10MB, FILEGROWTH=1MB), ( NAME = 'MyDB_FG1_Dat2', FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\data\MyDB_FG1_2.ndf', SIZE = 1MB, MAXSIZE=10MB, FILEGROWTH=1MB) LOG ON ( NAME='MyDB_log', FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\data\MyDB.ldf', SIZE=1MB, MAXSIZE=10MB, FILEGROWTH=1MB); GO ALTER DATABASE MyDB MODIFY FILEGROUP MyDB_FG1 DEFAULT; GO -- Create a table in the user-defined filegroup. USE MyDB; CREATE TABLE MyTable ( cola int PRIMARY KEY, colb char(8) ) ON MyDB_FG1; GO La siguiente ilustracin resume los resultados del ejemplo anterior.

61

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Descripcin de pginas y extensiones La unidad fundamental del almacenamiento de datos en SQL Server es la pgina. El espacio en disco asignado a un archivo de datos (.mdf o .ndf) de una base de datos se divide lgicamente en pginas numeradas de forma contigua de 0 a n. Las operaciones de E/S de disco se realizan en el nivel de pgina. Es decir, SQL Server lee o escribe pginas de datos enteras. Las extensiones son una coleccin de ocho pginas fsicamente contiguas; se utilizan para administrar las pginas de forma eficaz. Todas las pginas se almacenen en extensiones. Pginas En SQL Server, el tamao de pgina es de 8 KB. Esto significa que las bases de datos de SQL Server tienen 128 pginas por megabyte. Cada pgina empieza con un encabezado de 96 bytes, que se utiliza para almacenar la informacin del sistema acerca de la pgina. Esta informacin incluye el nmero de pgina, el tipo de pgina, el espacio disponible en la pgina y el Id. de unidad de asignacin del objeto propietario de la pgina. En la siguiente tabla se muestran los tipos de pgina utilizados en los archivos de datos de una base de datos de SQL Server. Tipo de pgina Datos Contenido Las filas de datos con todos los datos, excepto los datos text, ntext, image, nvarchar(max), varchar(max), varbinary(max) y xml, cuando text in row est establecido en ON. ndice Texto o imagen Entradas de ndice. Tipos de datos de objetos grandes:

Datos text, ntext, image, nvarchar(max), varchar(max), varbinary(max) y xml.

Columnas de longitud variable cuando la fila de datos sobrepasa 8 KB:

Mapa de asignacin global, Mapa de asignacin global compartido Espacio disponible en pginas Mapa de asignacin de ndices

varchar, nvarchar, varbinary y sql_variant.

Informacin acerca de si se han asignado las extensiones.

Informacin acerca de la asignacin de pginas y el espacio disponible disponible en las pginas. Informacin acerca de las extensiones utilizadas por una tabla o un ndice por unidad de asignacin.

62

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Mapa cambiado masivamente Informacin acerca de las extensiones modificadas por operaciones masivas desde la ltima instruccin BACKUP LOG por unidad de asignacin. Mapa cambiado diferencial Informacin acerca de las extensiones que han cambiado desde la ltima instruccin BACKUP DATABASE por unidad de asignacin.

Nota: Los archivos de registro no contienen pginas, contienen series de registros. Las filas de datos se colocan en las pginas una a continuacin de otra, empezando inmediatamente despus del encabezado. Al final de la pgina, comienza una tabla de desplazamiento de fila y cada una de esas tablas contiene una entrada para cada fila de la pgina. Cada entrada registra la distancia del primer byte de la fila desde el inicio de la pgina. Las entradas de la tabla de desplazamiento de fila estn en orden inverso a la secuencia de las filas de la pgina.

Compatibilidad con filas largas Las filas no pueden abarcar pginas; no obstante, se pueden apartar de la pgina de la fila ciertas partes de la fila para que sta pueda tener un tamao mucho mayor. La cantidad mxima de datos y de sobrecarga que est contenida en una nica fila de una pgina es de 8.060 bytes (8 KB). Sin embargo, esto no incluye los datos almacenados en el tipo de pgina Texto o imagen. Esta restriccin es menos estricta para tablas que contienen columnas varchar, nvarchar, varbinary o sql_variant. Cuando el tamao de fila total de todas las columnas variables y fijas de una tabla excede el lmite de 8.060 bytes, SQL Server mueve dinmicamente una o ms columnas de longitud variable a pginas de la unidad de asignacin ROW_OVERFLOW_DATA, empezando por la columna con el mayor ancho. Esto se realiza cuando una operacin de insercin o actualizacin aumenta el tamao total de la fila ms all del lmite de 8060 bytes. Cuando una columna se mueve a una pgina de la unidad de asignacin ROW_OVERFLOW_DATA, se mantiene un puntero de 24 bytes de la pgina original de la unidad de asignacin IN_ROW_DATA. Si una operacin posterior reduce el tamao de la fila ,SQL Server vuelve a mover las columnas dinmicamente a la pgina de datos original.

Extensiones Las extensiones son la unidad bsica en la que se administra el espacio. Una extensin consta de ocho pginas contiguas fsicamente, es decir 64 KB. Esto significa que las bases de datos de SQL Server tienen 16 extensiones por megabyte. Para hacer que la asignacin de espacio sea eficaz, SQL Server no asigna extensiones completas a tablas con pequeas cantidades de datos. SQL Server tiene dos tipos de extensiones:

Las extensiones uniformes son propiedad de un nico objeto; slo el objeto propietario puede utilizar las ocho pginas de la extensin. Las extensiones mixtas, que pueden estar compartidas por hasta ocho objetos. Cada una de las 8 pginas de la extensin puede ser propiedad de un objeto diferente.

A las tablas o ndices nuevos se les suelen asignar pginas de extensiones mixtas. Cuando la tabla o el ndice crecen hasta el punto de ocupar ocho pginas, se pasan a extensiones uniformes para las posteriores asignaciones. Si crea un ndice de una tabla existente que dispone de filas suficientes para generar ocho pginas en el ndice, todas las asignaciones del ndice estn en extensiones uniformes.

63

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Arquitectura de estructuras de tablas y datos de ndices

Los objetos de la base de datos de SQL Server se almacenan como una coleccin de pginas de 8 KB. En esta seccin se describe el modo en que se organizan y almacenan las pginas de tablas e ndices, y se obtiene acceso a ellas. Organizacin de tablas e ndices Las tablas y los ndices se almacenan como una coleccin de pginas de 8 KB. En este tema se describe el modo en el que se organizan las pginas de tablas e ndices. Organizacin de tablas En la siguiente ilustracin se muestra la organizacin de una tabla. Una tabla est incluida en una o varias particiones y cada particin incluye filas de datos con una estructura de ndice clster o de montn. Las pginas del ndice clster o de montn se administran en una o varias unidades de asignacin, segn los tipos de columna de las filas de datos.

Particiones Las pginas de tablas e ndices estn incluidas en una o varias particiones. Una particin es una unidad de organizacin de datos definida por el usuario. De forma predeterminada, una tabla o un ndice slo incluyen una particin que contiene todas las pginas de tablas o ndices. La particin se encuentra en un solo grupo de archivos. Una tabla o un ndice con una sola particin es equivalente a la estructura organizativa de tablas e ndices de versiones anteriores de SQL Server. Cuando una tabla o un ndice utilizan varias particiones, se crean particiones horizontales de los datos para que se asignen los grupos de filas a particiones individuales, en funcin de la columna especificada. Las particiones se pueden colocar en uno o varios grupos de archivos de la base de datos. La tabla o el ndice se tratarn como una sola entidad lgica cuando se realicen consultas o actualizaciones en los datos. Para ver las particiones utilizadas por una tabla o un ndice, utilice la vista de catlogo sys.partitions (Transact-SQL).

Tablas, montones e ndices clster Las tablas de SQL Server utilizan uno de estos dos mtodos para organizar sus pginas de datos en una particin:

64

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Las tablas agrupadas son tablas que tienen un ndice clster. Las filas de datos estn almacenadas en un orden basado en la clave del ndice clster. El ndice clster se implementa como una estructura de rbol b que admite la recuperacin rpida de las filas a partir de los valores de las claves del ndice clster. Las pginas de cada nivel del ndice, incluidas las pginas de datos del nivel hoja, se vinculan en una lista con vnculos dobles. Sin embargo, el desplazamiento de un nivel a otro se produce mediante valores de claves. Los montones son tablas que no tienen ningn ndice clster. Las filas de datos no se almacenan en ningn orden concreto, ni tampoco hay un orden concreto en la secuencia de las pginas de datos. Las pginas de datos no estn vinculadas en una lista vinculada.

Las vistas indizadas tienen la misma estructura de almacenamiento que las tablas agrupadas. Cuando un montn o una tabla agrupada tienen varias particiones, cada una de ellas tiene una estructura de montn o de rbol b que incluye el grupo de filas de esa particin especfica. Por ejemplo, si una tabla agrupada tiene cuatro particiones, hay cuatro rboles b, uno en cada particin.

ndices no agrupados Los ndices no agrupados tienen una estructura de rbol b similar a la de los ndices clster. La diferencia est en que los ndices no agrupados no tienen ningn efecto en el orden de las filas de datos. El nivel hoja contiene las filas del ndice. Cada fila del ndice contiene el valor de clave no agrupada, un localizador de filas y columnas incluidas o sin clave. El localizador apunta a la fila de datos que incluye el valor de clave.

ndices XML En cada columna xml de la tabla se puede crear un ndice XML principal y varios secundarios. Un ndice XML es una representacin dividida y persistente de los objetos binarios grandes (BLOB) XML de la columna de tipo de datos xml. Los ndices XML se almacenan como tablas internas. Para ver informacin acerca de los ndices xml, utilice las vistas de catlogo sys.xml_indexes o sys.internal_tables.

Unidades de asignacin Una unidad de asignacin es una coleccin de pginas de un montn o un rbol b utilizada para administrar los datos segn su tipo de pgina. En la tabla siguiente se enumeran los tipos de unidades de asignacin que se utilizan para administrar los datos en tablas e ndices. Tipo de unidad de asignacin IN_ROW_DATA Se utiliza para administrar

Filas de datos o ndices que incluyen todos los tipos de datos excepto los datos de objetos grandes (LOB). Las pginas son del tipo datos o ndice.

LOB_DATA

Datos de objetos grandes almacenados en uno o varios de los tipos de datos text, ntext, image, xml, varchar(max), nvarchar(max) o varbinary(max), o bien tipos definidos por el usuario CLR (CLR UDT). Las pginas son del tipo texto e imagen.

ROW_OVERFLOW_DATA

Datos de longitud variable almacenados en varchar, nvarchar o varbinary, o bien columnas sql_variant que superan el lmite de tamao de las filas de 8.060 bytes. Las pginas son del tipo texto e imagen.

Un montn o un rbol b slo puede tener una unidad de asignacin de cada tipo en una particin especfica.

Unidad de asignacin IN_ROW_DATA Por cada particin utilizada por una tabla (montn o tabla agrupada), un ndice o una vista indizada, hay una unidad de asignacin IN_ROW_DATA formada por una coleccin de pginas de datos. Esta unidad de asignacin tambin incluye colecciones adicionales de pginas para implementar cada ndice XML y no agrupado definido para la tabla o la vista. Las colecciones de pginas de cada particin de una tabla, ndice o vista indizada estn delimitadas por punteros de pgina en la vista del sistema sys.system_internals_allocation_units. Importante: La vista del sistema sys.system_internals_allocation_units slo puede utilizarla internamente Microsoft SQL Server. La compatibilidad con versiones posteriores no est garantizada. Cada particin de una tabla, ndice o vista indizada tiene una fila en sys.system_internals_allocation_units identificada de forma nica mediante un Id. de contenedor (container_id). El Id. de contenedor tiene una asignacin uno a uno para partition_id en la vista de catlogo sys.partitions que mantiene la relacin entre los datos de la tabla, el ndice o la vista indizada de una particin y las unidades de asignacin utilizadas para administrar los datos en la particin. La asignacin de pginas a una particin de tabla, ndice o vista indizada se administra mediante una cadena de pginas IAM. La columna first_iam_page de sys.system_internals_allocation_units apunta a la primera pgina IAM de la cadena de pginas IAM que administran el espacio asignado a la tabla, el ndice o la vista indizada de la unidad de asignacin IN_ROW_DATA.

65

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
sys.partitions devuelve una fila para cada particin de una tabla o un ndice.

Un montn tiene una fila en sys.partitions con index_id = 0. La columna first_iam_page de sys.system_internals_allocation_units apunta a la cadena IAM de la coleccin de pginas de datos de montn de la particin especificada. El servidor utiliza las pginas IAM para buscar las pginas en la coleccin de pginas de datos, puesto que no estn vinculadas. Un ndice clster de una tabla o vista tiene una fila en sys.partitions con index_id = 1. La columna root_page de sys.system_internals_allocation_units apunta a la parte superior del rbol b del ndice clster en la particin especificada. El servidor utiliza el rbol b del ndice para buscar las pginas de datos en la particin. Cada ndice no agrupado creado para una tabla o vista tiene una fila en sys.partitions con index_id > 1. La columna root_page de sys.system_internals_allocation_units apunta a la parte superior del rbol b del ndice no agrupado en la particin especificada. Cada tabla que tiene al menos una columna LOB tambin tiene una fila en sys.partitions con index_id > 250. La columna first_iam_page apunta a la cadena de pginas IAM que administra las pginas de la unidad de asignacin LOB_DATA.

Unidad de asignacin ROW_OVERFLOW_DATA Por cada particin utilizada por una tabla (montn o tabla agrupada), un ndice o una vista indizada, hay una unidad de asignacin ROW_OVERFLOW_DATA. Esta unidad de asignacin no tiene ninguna pgina hasta que una fila de datos con columnas de longitud variable (varchar, nvarchar, varbinary o sql_variant) de la unidad de asignacin IN_ROW_DATA supera el lmite de tamao de fila de 8 KB. Cuando se alcanza la limitacin de tamao, SQL Server mueve la columna ms ancha de esa fila a una pgina de la unidad de asignacin ROW_OVERFLOW_DATA. Se mantiene un puntero de 24 bytes a estos datos no consecutivos en la pgina original. Las pginas de texto o imagen de la unidad de asignacin ROW_OVERFLOW_DATA se administran del mismo modo que las de la unidad de asignacin LOB_DATA; es decir, mediante una cadena de pginas IAM.

Unidad de asignacin LOB_DATA Cuando una tabla o un ndice tiene uno o varios tipos de datos LOB, se asignar una unidad de asignacin LOB_DATA por particin para administrar el almacenamiento de esos datos. Los tipos de datos LOB incluyen text, ntext, image, xml, varchar(max), nvarchar(max), varbinary(max) y los tipos definidos por el usuario CLR.

Ejemplo de unidad de asignacin y particin

En el ejemplo siguiente se devuelven los datos de unidad de asignacin y particin para dos tablas: DatabaseLog, un montn con datos LOB e ndices no agrupados, y Currency, una tabla agrupada sin datos LOB y un ndice no agrupado. Ambas tablas tienen una sola particin. USE AdventureWorks; GO SELECT o.name AS table_name,p.index_id, i.name AS index_name , au.type_desc AS allocation_type, au.data_pages, partition_number FROM sys.allocation_units AS au JOIN sys.partitions AS p ON au.container_id = p.partition_id JOIN sys.objects AS o ON p.object_id = o.object_id JOIN sys.indexes AS i ON p.index_id = i.index_id AND i.object_id = p.object_id WHERE o.name = N'DatabaseLog' OR o.name = N'Currency' ORDER BY o.name, p.index_id; El conjunto de resultados es el siguiente. Tenga en cuenta que la tabla DatabaseLog utiliza los tres tipos de unidad de asignacin, pues contiene tipos de pginas de datos y de texto e imagen. La tabla Currency no tiene datos LOB, pero tiene la unidad de asignacin necesaria para administrar las pginas de datos. Si ms adelante se modifica la tabla Currency para incluir una columna de tipo de datos LOB, se crear una unidad de asignacin LOB_DATA para administrar esos datos. table_name index_id index_name allocation_type data_pages partition_number ----------- -------- ----------------------- ------------------------- -----------Currency 1 PK_Currency_CurrencyCode IN_ROW_DATA 1 1 Currency 3 AK_Currency_Name IN_ROW_DATA 1 1 DatabaseLog 0 NULL IN_ROW_DATA 160 1 DatabaseLog 0 NULL ROW_OVERFLOW_DATA 0 1 DatabaseLog 0 NULL LOB_DATA 49 1 (5 row(s) affected)

Estructuras de montn Un montn es una tabla que no tiene un ndice agrupado. Los montones tienen una fila en sys.partitions, con index_id = 0 para cada particin que el montn utiliza. De forma predeterminada, un montn contiene una sola particin. Cuando un montn tiene varias particiones, cada particin incluye una estructure de montn que contiene los datos de esa particin especfica. Por ejemplo, si un montn tiene cuatro particiones, existirn cuatro estructuras de montn, una en cada particin. Dependiendo de los tipos de datos incluidos en el montn, cada estructura de montn tendr una o ms unidades de asignacin para almacenar y administrar los datos de una particin especfica. Como mnimo, cada montn dispondr de una unidad de asignacin IN_ROW_DATA por particin. El montn tambin dispondr de una unidad de asignacin LOB_DATA por particin si contiene columnas de objeto grande (LOB), as como una unidad de asignacin ROW_OVERFLOW_DATA por unidad, si contiene columnas de longitud variable que superan el lmite de tamao de fila de 8.060 bytes.. La columna first_iam_page en la vista de sistema sys.system_internals_allocation_units seala la primera pgina IAM de la cadena de pginas IAM que administra el espacio asignado a la pila en una particin especfica. SQL Server utiliza las pginas IAM para desplazarse

66

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
por el montn. Las pginas de datos y las filas que se encuentran en ellas no estn en ningn orden concreto y no estn vinculadas. La nica conexin lgica entre las pginas de datos es la informacin registrada en las pginas IAM. Importante: La vista del sistema sys.system_internals_allocation_units slo puede utilizarla internamente Microsoft SQL Server. La compatibilidad con versiones posteriores no est garantizada.

Los recorridos de tablas o las lecturas secuenciales de un montn se hacen recorriendo las pginas IAM para buscar las extensiones que almacenan las pginas de dicho montn. Como la IAM representa las extensiones en el mismo orden en el que se encuentran en los archivos de datos, ello significa que los recorridos secuenciales de un montn recorren secuencialmente cada archivo. Utilizar las pginas IAM para establecer la secuencia de recorrido tambin significa que las filas del montn no se devuelven normalmente en el orden en que se introdujeron. La siguiente ilustracin muestra cmo SQL Server Database Engine (Motor de base de datos de SQL Server) utiliza las pginas IAM para recuperar las filas de datos en un solo montn de particin.

Estructuras de ndices clster En SQL Server, los ndices se organizan como rboles b. Las pginas de un rbol b de ndice se llaman nodos del ndice. El nodo superior del rbol b se llama nodo raz. El nivel inferior de los nodos del ndice se denomina nodos hoja. Los niveles del ndice entre el nodo raz y los nodos hoja se conocen en conjunto como niveles intermedios. En un ndice agrupado, los nodos hoja contienen las pginas de datos de la tabla subyacente. El nodo raz y los nodos intermedios incluyen pginas de ndice que contienen filas de ndice. Cada fila de ndice contiene un valor clave y un puntero a una pgina de nivel intermedio en el rbol b, o bien a una fila de datos del nivel hoja del ndice. Las pginas de cada nivel del ndice se vinculan en una lista con vnculos dobles. Los ndices agrupados tienen una fila en sys.partitions, con index_id = 1 para cada particin utilizada por el ndice. De forma predeterminada, un ndice agrupado tiene una sola particin. Cuando un ndice agrupado tiene mltiples particiones, cada particin tiene una estructura de rbol b que contiene los datos de esa particin especfica. Por ejemplo, si un ndice agrupado tiene cuatro particiones, hay cuatro estructuras de rbol b, una en cada particin. En funcin de los tipos de datos del ndice agrupado, cada estructura de ndice agrupado tendr una o ms unidades de asignacin en las que almacenar y administrar los datos de una particin especfica. Como mnimo, cada ndice agrupado tendr una unidad de asignacin IN_ROW_DATA por particin. El ndice agrupado tambin tendr una unidad de asignacin LOB_DATA por particin si contiene columnas de objetos grandes (LOB). Tambin tendr una unidad de asignacin ROW_OVERFLOW_DATA por particin si contiene columnas de longitud variable que superen el lmite de tamao de fila de 8.060 bytes. Las pginas de la cadena de datos y las filas que contienen se ordenan segn el valor de la clave de ndice agrupado. Todas las inserciones se hacen en el punto en el que el valor de clave de la fila insertada quede dentro de la secuencia de orden entre las filas existentes. Las colecciones de pginas del rbol b estn delimitadas por punteros de pgina en la vista del sistema sys.system_internals_allocation_units. Importante: La vista del sistema sys.system_internals_allocation_units slo puede utilizarla internamente Microsoft SQL Server. La compatibilidad con versiones posteriores no est garantizada.

En un ndice agrupado, la columna root_page de sys.system_internals_allocation_units apunta al nivel superior del ndice agrupado para una particin especfica. SQL Server baja en el ndice para buscar la fila correspondiente a una clave de ndice agrupado. Para buscar un intervalo de claves, SQL Server se desplaza por el ndice hasta encontrar el valor de clave inicial del intervalo y despus recorre las pginas de datos mediante los punteros anterior y siguiente. Para buscar la primera pgina de la cadena de pginas de datos, SQL Server sigue los punteros situados ms a la izquierda desde el nodo raz del ndice. En esta ilustracin se muestra la estructura de un ndice agrupado en una sola particin.

67

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Estructuras de ndices no agrupados Los ndices no agrupados tienen la misma estructura de rbol b que los ndices agrupados, excepto por las siguientes diferencias importantes: Las filas de datos de la tabla subyacente no estn ordenadas ni almacenadas basndose en sus claves no agrupadas. La capa de hoja de un ndice no agrupado est compuesta por pginas de ndices, en lugar de pginas de datos. Los ndices no agrupados se pueden definir en una tabla o vista con un ndice clster o un montn. Cada fila del ndice no agrupado contiene un valor de clave no agrupada y un localizador de fila. Este localizador apunta a la fila de datos del ndice clster o el montn que contiene el valor de clave. Los localizadores de filas de las filas de ndices no agrupados pueden ser un puntero a la fila o una clave de ndice agrupado para una fila, tal como se describe a continuacin: Si la tabla es un montn, lo que significa que no tiene ningn ndice agrupado, el localizador de fila es un puntero a la fila. El puntero se genera a partir del identificador (Id.) de archivo, el nmero de pgina y el nmero de la fila dentro de la pgina. El puntero completo se conoce como Id. de fila (RID). Si la tabla tiene un ndice clster o si el ndice est en una vista indizada, el localizador de fila es la clave del ndice clster para la fila. Si el ndice clster no es un ndice nico, SQL Server hace que las claves duplicadas sean nicas agregando un valor generado internamente denominado valor de unicidad. Este valor de cuatro bytes no es visible para los usuarios. Slo se agrega cuando es necesario para que la clave agrupada sea nica para usarla en los ndices no agrupados. SQL Server recupera la fila de datos buscando el ndice clster con el valor de clave del ndice clster que est almacenado en la fila de hoja del ndice no agrupado. Los ndices no agrupados tienen una fila en sys.partitions, con index_id >0 para cada particin utilizada por el ndice. De forma predeterminada, un ndice no agrupado tiene una sola particin. Cuando un ndice no agrupado tiene varias particiones, cada una tiene una estructura de rbol b que contiene las filas de ndice de esa particin especfica. Por ejemplo, si un ndice no agrupado tiene cuatro particiones, habr cuatro estructuras de rbol b, una en cada particin. En funcin de los tipos de datos del ndice no agrupado, cada estructura de ndice no agrupado tendr una o ms unidades de asignacin en las que almacenar y administrar los datos de una particin especfica. Como mnimo, cada ndice no agrupado tendr una unidad de asignacin IN_ROW_DATA por particin encargada de almacenar las pginas de rbol b del ndice. El ndice no agrupado tambin tendr una unidad de asignacin LOB_DATA por particin si contiene columnas de objetos grandes (LOB). Tambin tendr una unidad de asignacin ROW_OVERFLOW_DATA por particin si contiene columnas de longitud variable que superen el lmite de tamao de fila de 8.060 bytes. Las colecciones de pginas del rbol b estn delimitadas por punteros root_page en la vista del sistema sys.system_internals_allocation_units. Importante: La vista del sistema sys.system_internals_allocation_units slo puede utilizarla internamente Microsoft SQL Server. La compatibilidad con versiones posteriores no est garantizada.

68

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
En la siguiente ilustracin se muestra la estructura de un ndice no agrupado en una sola particin.

Bsqueda de texto completo (Full Text Search) Introduccin a la bsqueda de texto completo Las consultas de texto completo realizan las bsquedas lingsticas contra los datos de texto en ndices de texto completo sobre palabras y frases basndose en las reglas de un idioma determinado, como ingls o japons. Las consultas de texto completo pueden contener palabras y frases sencillas, o formas diversas de una palabra o frase. La bsqueda de texto completo es aplicable en una gama amplia de escenarios empresariales, como e-businesses: bsqueda de elementos en un sitio Web; bufetes de abogados: bsqueda de historiales de casos legales en un repositorio de datos; o departamentos de recursos humanos: comparacin de descripciones de trabajos con curriculum vitae almacenados. Las tareas administrativas y de desarrollo bsicas de la bsqueda de texto completo son equivalentes independientemente de los escenarios empresariales. Sin embargo, en un escenario empresarial determinado, el ndice y las consultas de texto completo se pueden ajustar a los objetivos empresariales. Por ejemplo, para un e-business podra ser ms importante la maximizacin del rendimiento que la clasificacin de resultados, la exactitud de la recuperacin (cuntas de las coincidencias existentes devuelve realmente una consulta de texto completo) o la admisin de varios idiomas. Para un bufete de abogados, recuperar cada posible acierto (recuperacin total de informacin) podra ser la consideracin ms importante. Informacin general acerca de cmo configurar una base de datos para la bsqueda de texto completo En cualquier escenario, un administrador de bases de datos realiza los siguientes pasos bsicos para configurar columnas de tabla en una base de datos para la bsqueda de texto completo: 1.Crear un catlogo de texto completo 2.En cada tabla en la que se desea buscar, crear un ndice de texto completo por: a.Identificar cada columna de texto que se desea incluir en el ndice de texto completo. b.Si una columna determinada contiene documentos almacenados como datos binarios (varbinary, varbinary(max)o datos de image ), se debe especificar una columna de la tabla (la columna de tipo) que identifica el tipo de cada documento en la columna que se va a indizar. c.Especificar el idioma que se desea que utilice la bsqueda de texto completo en los documentos de la columna. d.Elegir el mecanismo del seguimiento de cambios que se desea utilizar en el ndice de texto completo para el seguimiento de cambios en la tabla base y sus columnas. La bsqueda de texto completo admite varios idiomas a travs del uso de los componentes lingsticos siguientes: separadores de palabras y lematizadores, listas de palabras irrelevantes y archivos de diccionarios de sinnimos. Los archivos de diccionario de sinnimos y, en algunos casos, las listas de palabras irrelevantes requieren su configuracin por un administrador de la base de datos. Un archivo de

69

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
diccionario de sinnimos determinado admite todos los ndices de texto completo que utilicen el idioma correspondiente, y una lista de palabras irrelevantes determinada puede estar asociada a tantos ndices de texto completo como se desee.

Informacin general sobre consultas de texto completo Una vez agregadas las columnas a un ndice de texto completo, las aplicaciones y los usuarios pueden ejecutar las consultas de texto completo en el texto de las columnas. Estas consultas pueden buscar cualquiera de lo siguiente: Una o varias palabras o frases especficas (trmino simple) Una palabra o frase cuyas palabras empiezan con un texto determinado (trmino de prefijo) Formas con inflexin de una palabra determinada (trmino de generacin) Una palabra o frase que est cerca de otra palabra o frase (trmino de proximidad) Formas sinnimas de una palabra determinada (diccionario de sinnimos) Palabras o frases que usan valores ponderados (trmino ponderado) Las consultas de texto completo usan un pequeo conjunto de predicados (CONTAINS y FREETEXT) de Transact-SQL y funciones (CONTAINSTABLE y FREETEXTTABLE). Sin embargo, los objetivos de la bsqueda en un escenario empresarial determinado influyen en la estructura exacta de las consultas de texto completo; por ejemplo: e-business - bsqueda de un producto en un sitio web: SELECT product_id FROM products WHERE CONTAINS(product_description, Snap Happy 100EZ OR FORMSOF(THESAURUS,Snap Happy) OR 100EZ) AND product_cost<200 Escenario de contratacin de empleados bsqueda de candidatos para un puesto de trabajo que tengan experiencia en SQL Server: SELECT candidate_name,SSN FROM candidates WHERE CONTAINS(candidate_resume,SQL Server) AND candidate_division =DBA Comparacin de LIKE con la bsqueda de texto completo A diferencia de la bsqueda de texto completo, el predicado de Transact-SQLLIKE funciona slo en patrones de caracteres. Adems, no es posible utilizar el predicado de LIKE para consultar datos binarios con formato. Por otro lado, una consulta LIKE contra una cantidad grande de datos de texto no estructurados es mucho ms lenta que una consulta de texto completo equivalente contra los mismos datos. Una consulta LIKE realizada en millones de filas de datos de texto puede tardar minutos en devolver resultados, mientras que una consulta de texto completo en los mismos datos puede tardar nicamente segundos, en funcin del nmero de filas que se devuelvan. Arquitectura de la bsqueda de texto La bsqueda de texto completo se realiza gracias al motor de texto completo. El motor de texto completo desempea dos funciones: la indizacin y las consultas. A partir de SQL Server 2008, la arquitectura de bsqueda de texto completo consta de los procesos siguientes: Proceso de SQL Server (sqlserver.exe) Nota: El servicio MSFTESQL no existe en SQL Server 2008 y versiones posteriores. El proceso de SQL Server realiza ahora las tareas de texto completo que antes efectuaba el servicio MSFTESQL en SQL Server 2005 y versiones anteriores.

El proceso de host de demonio de filtro (fdhost.exe) Por razones de seguridad, a partir de SQL Server 2008, procesos independientes denominados hosts de demonio de filtro cargan los filtros. Una instancia del servidor utiliza un proceso multiproceso para todos los filtros multiproceso y un proceso de un solo subproceso para todos los filtros de un solo subproceso. Nota: fdhost.exe reemplaza al demonio de filtro del motor de texto completo (msftefd.exe) de SQL Server 2005 y versiones anteriores.

El servicio iniciador de FDHOST (MSSQLFDLauncher) crea los procesos de fdhost.exe, que se ejecutan con las credenciales de seguridad de la cuenta de servicio del iniciador de FDHOST. Por consiguiente, este servicio se debe estar ejecutando para que la indizacin de texto completo y la consulta de texto completo funcionen. Estos procesos contienen los componentes de la arquitectura de bsqueda de texto completo. Estos componentes y sus relaciones se resumen en la ilustracin siguiente. Los componentes se describen despus de la ilustracin.

70

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Proceso de SQL Server La bsqueda de texto completo utiliza los componentes siguientes del proceso SQL Server: Tablas de usuario Esta tablas contienen los datos cuyo texto se indizar. Recopilador de texto completo El recopilador de texto completo trabaja con los subprocesos de rastreo de texto completo (rellenado). Es responsable de programar y dirigir el rellenado de ndices de texto completo, y tambin de supervisar los catlogos de texto completo. Nota: Desde SQL Server 2008, un catlogo de texto completo es un objeto virtual y no pertenece a ningn grupo de archivos. Un catlogo de texto completo es un concepto lgico que hace referencia a un grupo de ndices de texto completo.

Archivos de sinnimos Estos archivos contienen sinnimos de los trminos de bsqueda.

71

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Objetos de listas de palabras irrelevantes Los objetos de listas de palabras irrelevantes contienen una lista de palabras comunes que no son tiles para la bsqueda. Nota: Los objetos de listas de palabras irrelevantes sustituyen a los archivos de palabras irrelevantes de SQL Server 2005 y versiones anteriores.

Procesador de consultas de SQL Server El procesador de consultas compila y ejecuta consultas SQL. Si una consulta SQL incluye una consulta de bsqueda de texto completo, la consulta se enva al motor de texto completo, durante la compilacin y durante la ejecucin. El resultado de la consulta se hace coincidir con el ndice de texto completo. Motor de texto completo El motor de texto completo de SQL Server se integra ahora totalmente con el procesador de consultas. El motor de texto completo compila y ejecuta consultas de texto completo. Como parte de la ejecucin de consultas, el motor de texto completo puede recibir entradas del diccionario de sinnimos y de la lista de palabras irrelevantes. En SQL Server 2008 y versiones posteriores, el motor de texto completo para SQL Server se ejecuta dentro del procesador de consultas de SQL Server. Escritor de ndices (indizador) El escritor de ndices genera la estructura que se utiliza para almacenar los tokens indizados. Administrador del demonio de filtro El administrador del demonio de filtro es responsable de supervisar el estado del host de demonio de filtro del motor de texto completo. Host de demonio de filtro El host de demonio de filtro es un proceso iniciado por el motor de texto completo. Ejecuta los componentes de bsqueda de texto completo siguientes, que son responsables de obtener acceso, filtrar y separar las palabras de los datos de las tablas, as como de separar las palabras y lematizar la entrada de la consulta: Los componentes del proceso de host de demonio de filtro son los siguientes: Controlador de protocolo Este componente extrae los datos de la memoria para su posterior procesamiento y tiene acceso a los datos de una tabla de usuario de una base de datos especificada. Una de sus responsabilidades es recopilar los datos de las columnas con indizacin de texto completo y pasarlos al host de demonio de filtro, que aplicar el filtrado y la separacin de palabras cuando sea necesario. . Filtros Algunos tipos de datos requieren un filtrado para que los datos de un documento puedan indizarse con texto completo, incluso los datos de las columnas varbinary, varbinary(max), image o xml. El filtro utilizado para un documento determinado depende de su tipo de documento. Por ejemplo, se utilizan filtros diferentes para los documentos de Microsoft Word (.doc), de Microsoft Excel (.xls) y XML (.xml). A continuacin, el filtro extrae fragmentos de texto del documento, mientras quita el formato incrustado y conserva el texto y, potencialmente, la informacin sobre la posicin del mismo. El resultado es una secuencia de informacin de texto. Separadores de palabras y lematizadores Un separador de palabras es un componente especfico del idioma que busca los lmites de palabras segn las reglas lxicas de un idioma determinado (separacin de palabras). Cada separador de palabras est asociado a un componente de lematizador especfico del idioma que conjuga los verbos y realiza las expansiones flexionales. Al realizar la indizacin, el host de demonio de filtro utiliza un separador de palabras y un lematizador para realizar el anlisis lingstico de los datos de texto de una columna de la tabla determinada. El lenguaje asociado a una columna de la tabla en el ndice de texto completo determina qu separador de palabras y lematizador se utilizan para indizar la columna.

4 Disear una estrategia de migracin, consolidacin, y actualizacin. Considerar: multi-instancia, instancias y collation de Base de Datos, objetos a nivel de servidor y a nivel de instancia objetos, aplicacin de service pack. Actualizaciones de versin y edicin Los siguientes escenarios de actualizacin se admiten en esta versin de SQL Server. Actualizacin de SQL Server 2000 (32 bits) MSDE Service Pack 41 SQL Server 2000 (32 bits) Standard SP41,4 Ruta de actualizacin admitida SQL Server 2008 Express SQL Server 2008 Standard SQL Server 2008 Enterprise SQL Server 2000 (32 bits) Developer SP41,4 SQL Server 2000 (32 bits) Enterprise SP41,4 SQL Server 2000 Enterprise Evaluation (32 bits, IA64)4,5 SQL Server 2000 (64 bits) Developer SP41,4 SQL Server 2000 (64 bits) IA64 Enterprise SP43,4,5 SQL Server 2000 (32 bits) Personal SP4 SQL Server 2005 (32 bits) Express1 SQL Server 2008 Developer SQL Server 2008 Enterprise No se admite la actualizacin. SQL Server 2008 (64 bits) IA64 Developer SQL Server 2008 (64 bits) IA64 Enterprise No se admite la actualizacin. SQL Server 2008 Express

72

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

SQL Server 2008 Express Tools SQL Server 2008 Express Advanced SQL Server 2008 Workgroup SQL Server 2005 (32 bits) Express1 Advanced1 SQL Server 2008 Express Advanced SQL Server 2008 Workgroup SQL Server 2005 (32 bits) Workgroup1 SQL Server 2008 Workgroup SQL Server 2008 Standard SQL Server 2008 Enterprise SQL Server 2005 (32 bits) Standard1 SQL Server 2008 Standard SQL Server 2008 Enterprise SQL Server 2005 (32 bits) Developer1 SQL Server 2005 (32 bits) Enterprise1 SQL Server 2005 Enterprise Evaluation (32 bits, IA64, X64) SQL Server 2005 IA64 (64 bits) Developer SQL Server 2005 IA64 (64 bits) Standard SQL Server 2005 IA64 (64 bits) Enterprise SQL Server 2005 X64 (64 bits) Developer SQL Server 2005 X64 (64 bits) Standard SQL Server 2008 Developer SQL Server 2008 Enterprise No se admite la actualizacin. SQL Server 2008 IA64 (64 bits) Developer SQL Server 2008 IA64 (64 bits) Enterprise SQL Server 2008 IA64 (64 bits) Enterprise SQL Server 2008 X64 (64 bits) Developer SQL Server 2008 X64 (64 bits) Standard SQL Server 2008 X64 (64 bits) Enterprise SQL Server 2005 X64 (64 bits) Enterprise SQL Server 2008 Express1 SQL Server 2008 X64 (64 bits) Enterprise SQL Server 2008 Express SQL Server 2008 Express Tools SQL Server 2008 Express Advanced SQL Server 2008 Workgroup SQL Server 2008 Standard SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express Tools SQL Server 2008 Express Tools SQL Server 2008 Express Advanced SQL Server 2008 Workgroup SQL Server 2008 Standard SQL Server 2008 Developer

73

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
SQL Server 2008 Enterprise SQL Server 2008 Express Advanced1 SQL Server 2008 Express Advanced SQL Server 2008 Workgroup SQL Server 2008 Standard SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express x64 (64 bits) SQL Server 2008 Express x64 (64 bits) SQL Server 2008 Express Tools x64 (64 bits) SQL Server 2008 Express Advanced x64 (64 bits) SQL Server 2008 Workgroup x64 (64 bits) SQL Server 2008 Standard x64 (64 bits) SQL Server 2008 Developer x64 (64 bits) SQL Server 2008 Enterprise x64 (64 bits) SQL Server 2008 Express Tools x64 (64 bits) SQL Server 2008 Express Tools x64 (64 bits) SQL Server 2008 Express Advanced x64 (64 bits) SQL Server 2008 Workgroup x64 (64 bits) SQL Server 2008 Standard x64 (64 bits) SQL Server 2008 Developer x64 (64 bits) SQL Server 2008 Enterprise x64 (64 bits) SQL Server 2008 Express Advanced x64 (64 bits) SQL Server 2008 Express Advanced x64 (64 bits) SQL Server 2008 Workgroup x64 (64 bits) SQL Server 2008 Standard x64 (64 bits) SQL Server 2008 Enterprise x64 (64 bits) SQL Server 2008 Workgroup1 SQL Server 2008 Workgroup SQL Server 2008 Standard SQL Server 2008 Enterprise SQL Server 2008 Web1 SQL Server 2008 Standard1,2 SQL Server 2008 Web SQL Server 2008 Standard SQL Server 2008 Enterprise SQL Server 2008 Developer1,2 SQL Server 2008 Workgroup SQL Server 2008 Standard SQL Server 2008 Developer SQL Server 2008 Enterprise

74

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
SQL Server 2008 Enterprise1,2 SQL Server 2008 Enterprise Evaluation2 SQL Server 2008 Enterprise SQL Server 2008 Enterprise Evaluation SQL Server 2008 Web SQL Server 2008 Workgroup SQL Server 2008 Standard SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 IA64 (64 bits) Enterprise Evaluation2 SQL Server 2008 IA64 (64 bits) Enterprise SQL Server 2008 IA64 (64 bits) Developer SQL Server 2008 IA64 (64 bits) Enterprise Evaluation SQL Server 2008 x64 (64 bits) Enterprise Evaluation2 SQL Server 2008 Enterprise Evaluation SQL Server 2008 Web SQL Server 2008 Workgroup SQL Server 2008 x64 (64 bits) Standard SQL Server 2008 x64 (64 bits) Developer SQL Server 2008 x64 (64 bits) Enterprise SQL Server 2008 IA64 (64 bits) Developer2 SQL Server 2008 IA64 (64 bits) Developer SQL Server 2008 IA64 (64 bits) Enterprise SQL Server 2008 Developer x64 (64 bits)2 SQL Server 2008 Workgroup x64 (64 bits) SQL Server 2008 Standard x64 (64 bits) SQL Server 2008 Developer x64 (64 bits) SQL Server 2008 Enterprise x64 (64 bits) SQL Server 2008 x64 (64 bits) Standard2 SQL Server 2008 x64 (64 bits) Standard SQL Server 2008 x64 (64 bits) Enterprise SQL Server 2008 IA64 (64 bits) Enterprise2 SQL Server 2008 x64 (64 bits) Enterprise2 SQL Server 2008 IA64 (64 bits) Enterprise SQL Server 2008 x64 (64 bits) Enterprise

1Puede actualizar esta edicin de SQL Server a SQL Server 2008 en el subsistema de 32 bits (WOW64) de un servidor de 64 bits.
2

Est limitado el cambio de edicin de un clster de conmutacin por error de SQL Server 2008. En los clsteres de conmutacin por error de SQL Server 2008, no se admiten los escenarios de degradacin de edicin siguientes:

SQL Server 2008 Enterprise a SQL Server 2008 Developer, Standard o Enterprise Evaluation. SQL Server 2008 Developer a SQL Server 2008 Standard o Enterprise Evaluation.

SQL Server 2008 Standard a SQL Server 2008 Enterprise Evaluation. SQL Server 2008 Enterprise Evaluation a SQL Server 2008 Standard.

No se admiten actualizaciones de clsteres de conmutacin por error de SQL Server 2000 (64 bits) IA64.

75

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
4

No se admiten actualizaciones de SQL Server 2000 Analysis Services a SQL Server 2008 en clsteres de conmutacin por error.

La actualizacin de SQL Server 2000 (64 bits ) no instalar las herramientas de administracin de SQL Server 2008. Para instalar las herramientas de administracin, deber volver a ejecutar el programa de instalacin cuando se haya completado la actualizacin. Notas de actualizacin

No se admiten instancias de SQL Server 2008 de distintas versiones. Los nmeros de versin de Database Engine (Motor de base de datos), Analysis Services y Reporting Services deben ser los mismos en una instancia de SQL Server 2008. Antes de actualizar a SQL Server, habilite la autenticacin de Windows para el Agente SQL Server y compruebe la configuracin predeterminada: la cuenta de servicio del Agente SQL Server debe ser miembro del grupo sysadmin de SQL Server. Antes de actualizar de una edicin de SQL Server 2008 a otra, compruebe que las funciones que actualmente utiliza son compatibles con la edicin a la que desea actualizar. No se admite la actualizacin entre plataformas. No puede actualizar una instancia de 32 bits de SQL Server a una nativa de 64 bits. Sin embargo, puede actualizar una instancia de 32 bits de SQL Server a WOW64, el subsistema de 32 bits de un servidor de 64 bits, tal y como se indica en la tabla anterior. Tambin puede realizar copias de seguridad o separar bases de datos de una instancia de 32 bits de SQL Server y, despus, si no estn publicadas en replicacin, restaurarlas o anexarlas a una instancia de SQL Server (64 bits). En este caso, tambin debe volver a crear los inicios de sesin y los dems objetos de usuario en las bases de datos del sistema maestra, msdb y model. Para actualizar a SQL Server 2008, debe ejecutar un sistema operativo compatible. La actualizacin se bloquear si hay un reinicio pendiente.

La actualizacin se bloquear si el servicio de Windows Installer no se est ejecutando. La actualizacin se bloquear si los contadores de rendimiento estn daados.

Para actualizar una instancia de SQL Server a un clster de conmutacin por error de SQL Server, la instancia debe ser un clster de conmutacin por error. Para actualizar una instancia independiente de SQL Server a un clster de conmutacin por error de SQL Server, instale un nuevo clster de conmutacin por error de SQL Server y luego migre las bases de datos de usuario desde la instancia independiente con el Asistente para copiar bases de datos.

Agregar componentes a una instancia de SQL Server No puede agregar componentes a una instalacin existente de SQL Server durante la actualizacin a SQL Server 2008. Cuando haya actualizado una instancia de SQL Server a SQL Server 2008, podr agregar caractersticas con el Asistente para la instalacin de SQL Server 2008: Setup.exe. Compatibilidad entre idiomas

La versin en ingls de SQL Server es compatible con todas las versiones traducidas de los sistemas operativos admitidos.

Las versiones traducidas de SQL Server son compatibles con sistemas operativos traducidos que estn en el mismo idioma que la versin traducida de SQL Server. Las versiones localizadas de SQL Server se pueden actualizar a versiones localizadas de SQL Server 2008 del mismo idioma.

Las versiones localizadas de SQL Server no se pueden actualizar a la versin en ingls de SQL Server 2008. Las versiones localizadas de SQL Server no se pueden actualizar a versiones localizadas de SQL Server 2008 de un idioma distinto. Las versiones traducidas de SQL Server tambin son compatibles con las versiones en ingls de los sistemas operativos admitidos mediante la configuracin del Paquete de interfaz de usuario multilinge (MUI) de Windows. No obstante, deber comprobar algunas configuraciones del sistema operativo antes de instalar una versin traducida de SQL Server en un servidor que ejecute un sistema operativo en ingls con una configuracin de MUI que no sea en ingls. Compruebe que las siguientes configuraciones del sistema operativo coinciden con el idioma de SQL Server que desea instalar:

o o o

Configuracin de la interfaz de usuario del sistema operativo

Configuracin regional del usuario del sistema operativo

Configuracin regional del sistema

Si estas configuraciones del sistema operativo no coinciden con el idioma de la versin traducida de SQL Server, deber establecerlas correctamente antes de instalar SQL Server 2008.

76

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Compatibilidad con versiones anteriores de SQL Server En este tema se describen las caractersticas obsoletas que siguen estando disponibles en SQL Server 2008. Est previsto quitar estas caractersticas en una futura versin de SQL Server. Las caractersticas obsoletas no se deben utilizar en nuevas aplicaciones. Caractersticas no admitidas en la siguiente versin de SQL Server Las siguientes caractersticas de SQL Server Database Engine (Motor de base de datos de SQL Server) no se admitirn en la prxima versin de SQL Server. No utilice estas caractersticas en nuevos trabajos de desarrollo y modifique lo antes posible las aplicaciones que las utilizan actualmente. La columna Nombre de caracterstica aparece en eventos de seguimiento como ObjectName, en contadores de rendimiento y sys.dm_os_performance_counters como nombre_instancia. La columna Id. de caracterstica aparece en eventos de seguimiento como ObjectId. Categora Caracterstica obsoleta Reemplazo Nombre caracterstica ADHelper de Id. de caracterstica

Servicios de SQL Servicio ADHelper Server

Ninguno

Programacin de Extremos SOAP/HTTP con CREATE ENDPOINT Windows datos SQL) Programacin de sys.soap_endpoints (Transact-SQL) datos Programacin de sys.endpoint_webmethods (Transact-SQL) datos Windows

Communications Servicios web XML 21

(Transact-SQL) y ALTER ENDPOINT (Transact- Foundation (WCF) o ASP.NET nativos

Communications Servicios web XML 22

Foundation (WCF) o ASP.NET nativos Windows Communications Servicios web XML 23

Foundation (WCF) o ASP.NET nativos

Caractersticas de SQL Server obsoletas en SQL Server 2008 SQL-DMO no est disponible desde la instalacin de Katmai Express SQL-DMO para SQL Server se ha quitado de SQL Server 2008 Express. Le recomendamos que modifique las aplicaciones que utilicen actualmente esta caracterstica tan pronto como sea posible. Si debe utilizar SQL-DMO para SQL Server Express, instale los componentes de compatibilidad con versiones anteriores del paquete de caractersticas de SQL Server 2005 desde el Centro de descarga de Microsoft. Use Objetos de administracin de SQL Server (SMO) en nuevos trabajos de desarrollo. Opcin no disponible para Asistente de web La opcin sp_configure para habilitar el Asistente de web se ha quitado de SQL Server 2008. Se recomienda utilizar Reporting Services en su lugar. Herramienta de configuracin de rea expuesta La Herramienta de configuracin de rea expuesta (SAC) de SQL Server se ha quitado de SQL Server 2008. La funcionalidad sustituida en esta versin es la siguiente: Categora Caracterstica incluida no Reemplazo

Herramientas Herramienta configuracin expuesta de

de La herramienta de configuracin de rea expuesta ya no se incluye en SQL Server 2008. En la rea tabla siguiente se muestra lo que se puede utilizar para configurar valores, opciones y caractersticas de componentes en esta versin. Opciones de configuracin y caractersticas de los componentes Cmo se configura Protocolos, conexiones y opciones de inicio Use el Administrador de configuracin de SQL Server. Caractersticas del Database Engine (Motor de base de datos) Utilice la administracin basada en directivas, la configuracin de propiedades de SQL Server Management Studio o sp_Configure. Caractersticas del Analysis Services Utilice la configuracin de propiedades de SQL Server Management Studio. Reporting Services: propiedad de seguridad EnableIntegrated Utilice la configuracin de propiedades de SQL Server Management Studio. Reporting Services: "Eventos de programacin y entrega de informes" y "Acceso HTTP y de servicios web" Modifique el archivo de configuracin RSReportServer.config Opciones de la lnea de comandos No existe compatibilidad en esta versin. SOAP y extremos de Service Broker Use CREATE ENDPOINT y ALTER ENDPOINT.

Parmetros del smbolo del sistema no incluidos para el programa de instalacin de SQL Server En la tabla siguiente se muestran los parmetros del smbolo del sistema de las versiones anteriores de SQL Server que no se admiten en SQL Server 2008. Parmetro no incluido Parmetros de reemplazo

77

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

ADDLOCAL DISABLENETWORKPROTOCOLS DISABLENETWORKPROTOCOLS INSTALLSQLDATADIR

/ACTION=Uninstall y /FEATURES /TCPENABLED para TCP/IP1 /NPENABLED para Canalizaciones con nombre1 /SQLUSERDBDIR /SQLUSERDBLOGDIR /SQLBACKUPDIR /SQLTEMPDBDIR /SQLTEMPDBLOGDIR

REINSTALL REINSTALLMODE REMOVE SAMPLEDATABASE SAVESYSDB SKUUPGRADE UPGRADE USESYSDB 1Estos parmetros solo son vlidos para la instalacin.

Sin equivalencia en esta versin. Sin equivalencia en esta versin. /ACTION=Uninstall y /FEATURES Sin equivalencia en esta versin. Sin equivalencia en esta versin. Sin equivalencia en esta versin. /ACTION=Upgrade y /FEATURES Sin equivalencia en esta versin.

Cambios recientes en las caractersticas de SQL Server en SQL Server 2008

Es posible que el cdigo desarrollado para SMO de SQL Server 2005 no se genere en SQL Server 2008 si no se realizan pequeas modificaciones

Cambios de comportamiento en las caractersticas de SQL Server en SQL Server 2008

SQL Server 2008 incluye SQL Server Native Client 10.0

5 Disear autenticacin de una instancia. Considerar escoger tipo de autenticacin, implementar requerimientos de acceso empleando triggers Elegir un modo de autenticacin Durante la instalacin, debe seleccionar un modo de autenticacin para Database Engine (Motor de base de datos). Hay dos modos posibles: modo de autenticacin de Windows y modo mixto. El modo de autenticacin de Windows habilita la autenticacin de Windows y deshabilita la autenticacin de SQL Server. El modo mixto habilita tanto la autenticacin de Windows como la de SQL Server. La autenticacin de Windows est disponible siempre y no se puede deshabilitar.

Configurar el modo de autenticacin Si selecciona la autenticacin de modo mixto durante la instalacin, debe proporcionar una contrasea segura, y confirmarla despus, para la cuenta integrada de administrador del sistema de SQL Server denominada sa. La cuenta sa se conecta mediante la autenticacin de SQL Server. Si selecciona la autenticacin de Windows durante la instalacin, el programa de instalacin crea la cuenta sa para la autenticacin de SQL Server pero se deshabilita. Si despus cambia a la autenticacin de modo mixto y desea utilizar la cuenta sa, debe habilitar la cuenta. Cualquier cuenta de SQL Server o de Windows se puede configurar como del administrador del sistema. Dado que la cuenta sa es muy conocida y a menudo es el objetivo de usuarios malintencionados, no la habilite a menos que la aplicacin lo requiera. Nunca establezca una contrasea en blanco o con poca seguridad para la cuenta sa. Conectar a travs de la autenticacin de Windows

78

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Cuando un usuario se conecta a travs de una cuenta de usuario de Microsoft Windows, SQL Server valida el nombre de cuenta y la contrasea con el token de la entidad de seguridad de Windows del sistema operativo. Esto significa que Windows confirma la identidad del usuario. SQL Server no pide la contrasea y no realiza la validacin de identidad. La autenticacin de Windows es el modo de autenticacin predeterminado y es mucho ms seguro que la autenticacin de SQL Server. La autenticacin de Windows usa el protocolo de seguridad de Kerberos, proporciona la aplicacin de directivas de contraseas en cuanto a la validacin de la complejidad de las contraseas seguras, ofrece compatibilidad para el bloqueo de cuentas y admite la expiracin de las contraseas. Una conexin realizada utilizando la autenticacin de Windows se denomina a veces conexin de confianza, porque SQL Server confa en las credenciales proporcionadas por Windows. Nota de seguridad: Siempre que sea posible, utilice la autenticacin de Windows. Conectar a travs de la autenticacin de SQL Server Al utilizar la autenticacin de SQL Server, los inicios de sesin se crean en SQL Server, que no se basa en las cuentas de usuario de Windows. El nombre de usuario y la contrasea se crean utilizando SQL Server y se almacenan en SQL Server. Los usuarios que se conectan utilizando la autenticacin de SQL Server deben proporcionar sus credenciales (inicio de sesin y contrasea) cada vez que se conectan. Al utilizar la autenticacin de SQL Server, debe establecer contraseas seguras para todas las cuentas de SQL Server. Hay tres directivas de contraseas opcionales para los inicios de sesin de SQL Server.

El usuario debe cambiar la contrasea en el siguiente inicio de sesin Exige que el usuario cambie la contrasea la prxima vez que se conecte. SQL Server Management Studio proporciona la capacidad de cambiar la contrasea. Otros desarrolladores de software deberan proporcionar esta caracterstica si se utiliza esta opcin. Exigir expiracin de La directiva de vigencia mxima de la contrasea del equipo se exige para los inicios de sesin de SQL Server. contrasea

Exigir directivas de contraseas Las directivas de contraseas de Windows del equipo se exigen para los inicios de sesin de SQL Server. Esto incluye la longitud y complejidad de las contraseas. Esta funcionalidad depende de la API NetValidatePasswordPolicy, que solo est disponible en Windows Server 2003 y versiones posteriores.

Para determinar las directivas de las contraseas del equipo local

1. 2. 3.

En el men Inicio, haga clic en Ejecutar.

En el cuadro de dilogo Ejecutar, escriba secpol.msc y, a continuacin, haga clic en Aceptar.

En la aplicacin Configuracin de seguridad local, expanda Configuracin de seguridad, expanda Directivas de cuenta y, a continuacin, haga clic en Directiva de contraseas. Las directivas de contraseas se describen en el panel de resultados.

Desventajas de la autenticacin de SQL Server

Si un usuario del dominio de Windows tiene un inicio de sesin y una contrasea para Windows, an debe proporcionar otro inicio de sesin y contrasea (SQL Server) para conectarse. Hacer el seguimiento de varios nombres y contraseas es difcil para muchos usuarios. Tener que proporcionar las credenciales de SQL Server cada vez que se conectan a la base de datos puede resultar molesto. La autenticacin de SQL Server no puede utilizar el protocolo de seguridad de Kerberos. Windows proporciona directivas de contraseas adicionales que no estn disponibles para los inicios de sesin de SQL Server.

Ventajas de la autenticacin de SQL Server

Permite a SQL Server admitir las aplicaciones anteriores y las que proporcionan terceros y requieren la autenticacin de SQL Server. Permite que SQL Server admita entornos con sistemas operativos mixtos, en los que un dominio de Windows no autentica a todos los usuarios. Permite a los usuarios conectarse desde dominios desconocidos o que no son de confianza. Por ejemplo, una aplicacin en la que los clientes establecidos se conectan con los inicios de sesin de SQL Server asignados para recibir el estado de sus pedidos. Permite que SQL Server admita aplicaciones basadas en web en las que los usuarios crean sus propias identidades.

Permite a los desarrolladores de software distribuir sus aplicaciones utilizando una jerarqua de permisos compleja basada en los inicios de sesin conocidos y preestablecidos de SQL Server.

79

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Nota: Al utilizar la autenticacin de SQL Server, no se limitan los permisos de los administradores locales en el equipo donde se instala SQL Server.

Configuracin del motor de base de datos: aprovisionamiento de cuentas

A partir de SQL Server 2005, se implementaron cambios significativos para ayudar a garantizar que SQL Server fuera ms seguro que las versiones anteriores. Entre los cambios se incluyen una estrategia de "seguridad por diseo, seguridad de forma predeterminada y seguridad en la implementacin" diseada para ayudar a proteger la instancia del servidor y sus bases de datos de los ataques de seguridad. SQL Server 2008 contina el proceso de refuerzo de la seguridad introduciendo ms cambios en los componentes de servidor y de base de datos. Los cambios incluidos en SQL Server 2008 disminuyen an ms el rea expuesta y las reas de ataque para el servidor y sus bases de datos al instituir una directiva de privilegios mnimos, y aumentar la separacin de la administracin de Windows NT y la administracin de SQL Server. Esto significa que las cuentas internas se protegen y se separan en funciones del sistema operativo y de SQL Server. Estas medidas incluyen:

La capacidad de proporcionar una o varias entidades de seguridad de Windows en la funcin de servidor Sysadmin dentro de SQL Server. Esta opcin est disponible durante la instalacin de SQL Server en las instalaciones nuevas de SQL Server 2008. Se ha quitado la herramienta Configuracin de rea expuesta (SAC) y se ha reemplazado por la administracin basada en directivas y la herramienta Administrador de configuracin de SQL Server.

Estos cambios afectarn al planeamiento de la seguridad de SQL Server y le ayudarn a crear un perfil de seguridad ms completo para el sistema. Consideraciones acerca de la ejecucin de SQL Server 2008 en Windows Vista y Windows Server 2008 En las versiones de Windows anteriores a Windows Vista y Windows Server 2008, los miembros del grupo local de administradores no necesitan sus propios inicios de sesin de SQL Server y no es necesario que se les concedan permisos administrativos en SQL Server. Se conectan a SQL Server como entidad de seguridad de servidor integrada BUILTIN\Administrators y tienen derechos administrativos en SQL Server porque BUILTIN\Administrators es miembro de la funcin fija de servidor sysadmin. En Windows Vista y Windows Server 2008, estos mecanismos slo estn disponibles para los usuarios administrativos que utilizan permisos elevados de Windows, lo que no se recomienda. De forma predeterminada, los administradores realizan la mayora de las acciones como usuarios estndar en los sistemas operativos Windows Vista y Windows Server 2008. En consecuencia, debera crear un inicio de sesin de SQL Server para cada usuario administrativo y agregarlo a la funcin fija de servidor sysadmin durante la instalacin de una nueva instancia de SQL Server 2008. Tambin debe hacer esto para las cuentas de Windows que se utilizan para ejecutar trabajos del Agente SQL Server. Tambin se incluyen las cuentas utilizadas para ejecutar trabajos del Agente de replicacin. Al instalar y ejecutar SQL Server 2008 en Windows Vista y Windows Server 2008, deben tenerse en cuenta las consideraciones siguientes:

Problemas causados por Control de cuentas de usuario (UAC) en Windows Vista y Windows Server 2008

Windows Vista y Windows Server 2008 incluyen una caracterstica nueva, Control de cuentas de usuario (UAC), que ayuda a los administradores a administrar la forma en que usan los permisos elevados. De forma predeterminada, en Windows Vista y Windows Server 2008, los administradores no utilizan sus derechos administrativos. En su lugar, realizan la mayora de las acciones como usuarios estndar y solo utilizan sus derechos administrativos de forma temporal cuando resulta necesario.

Opciones

UAC causa algunos problemas conocidos.

Modo de seguridad: seleccione la autenticacin de Windows o la autenticacin de modo mixto para la instalacin. Aprovisionamiento de entidad de seguridad de Windows: en las versiones anteriores de SQL Server, el grupo local Windows Builtin\Administrator estaba ubicado en la funcin de servidor sysadmin de SQL Server, con lo que se conceda a los administradores de Windows acceso a la instancia de SQL Server. En SQL Server 2008, el grupo Builtin\Administrator no se proporciona en la funcin de servidor Sysadmin. En su lugar, debera proporcionar explcitamente los administradores de SQL Server para las nuevas instalaciones durante la instalacin. Importante: Si los procesos o el cdigo de una organizacin dependen del acceso al grupo local de Windows Builtin\Administrator, debe proporcionar explcitamente durante la instalacin los administradores de SQL Server para las instalaciones nuevas. El programa de instalacin no le permitir continuar hasta que complete este paso. Especificar administradores de SQL Server: debe especificar por lo menos una entidad de seguridad de Windows para la instancia de SQL Server. Para agregar la cuenta en la que se ejecuta el programa de instalacin de SQL Server, haga clic en el botn Usuario actual. Para agregar o quitar cuentas de la lista de administradores del sistema, haga clic en Agregar o en Quitar y, a continuacin, modifique la lista de usuarios, grupos o equipos que tendrn privilegios de administrador para la instancia de SQL Server. Cuando termine de modificar la lista, haga clic en Aceptar y, a continuacin, compruebe la lista de administradores en el cuadro de dilogo de configuracin. Cuando la lista est completa, haga clic en Siguiente. Si selecciona la autenticacin de modo mixto, debe proporcionar las credenciales de inicio de sesin para la cuenta de administrador de sistema (SA) de SQL Server builtin.

80

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Nota de seguridad: No utilice una contrasea en blanco. Utilice una contrasea segura. Modo de autenticacin de Windows Cuando un usuario se conecta a travs de una cuenta de usuario de Microsoft Windows, SQL Server valida el nombre de cuenta y la contrasea con el token de la entidad de seguridad de Windows del sistema operativo. ste es el modo de autenticacin predeterminado, y es mucho ms seguro que el modo mixto. La autenticacin de Windows utiliza el protocolo de seguridad Kerberos, cumple la directiva de contraseas en lo que respecta a la validacin de la complejidad de las contraseas seguras y permite el bloqueo de las cuentas y la caducidad de las contraseas. Nota de seguridad: Siempre que sea posible, utilice la autenticacin de Windows. Importante: No utilice una contrasea en blanco. Utilice una contrasea segura. No establezca nunca una contrasea de sa en blanco o no segura. Modo mixto (autenticacin de Windows o autenticacin de SQL Server) Permite a los usuarios conectarse con la autenticacin de Windows o la autenticacin de SQL Server. Los usuarios que se conectan mediante una cuenta de usuario de Windows pueden usar conexiones de confianza validadas por Windows. Si tiene que elegir el modo de autenticacin mixto y necesita utilizar inicios de sesin de SQL para incluir aplicaciones heredadas, debe establecer contraseas seguras para todas las cuentas de SQL Server. Nota: La autenticacin de SQL Server se proporciona nicamente por motivos de compatibilidad con versiones anteriores. Siempre que sea posible, utilice la autenticacin de Windows. Escribir contrasea Escriba y confirme el inicio de sesin del administrador del sistema (sa). Las contraseas son la primera lnea de defensa contra los intrusos, as que establecer contraseas seguras es esencial para la seguridad del sistema. No establezca nunca una contrasea en blanco o no segura. Nota: Las contraseas de SQL Server pueden contener de 1 a 128 caracteres, incluida cualquier combinacin de letras, smbolos y nmeros. Si elige la autenticacin de modo mixto, debe escribir una contrasea de sa segura antes de continuar con la siguiente pgina del Asistente para la instalacin. Directrices para contraseas seguras Las contraseas seguras no pueden ser adivinadas con facilidad y tampoco son fcilmente vulnerables en caso de utilizar un programa informtico. Las contraseas seguras no pueden utilizar los siguientes trminos o condiciones prohibidos:

Una condicin en blanco o NULL "Password"

"Admin" "Administrator"

"sa" "sysadmin"

Una contrasea segura no puede ser ninguno de los siguientes trminos asociados al equipo de instalacin:

El nombre del usuario que haya iniciado actualmente la sesin en el equipo. El nombre del equipo.

Una contrasea segura debe tener ms de 8 caracteres de longitud y satisfacer al menos tres de los siguientes criterios:

Debe contener letras maysculas. Debe contener letras minsculas.

Debe contener nmeros. Debe contener caracteres no alfanumricos; por ejemplo, #, %, o ^.

81

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Las contraseas que se escriben en esta pgina deben cumplir los requisitos de las directivas de contraseas seguras. Si tiene alguna automatizacin que use la autenticacin de SQL Server, asegrese de que la contrasea cumple los requisitos de las directivas de contraseas seguras.

6 Disear la seguridad a nivel de instancia. Considerar: cuentas de Windows, stream, proxy, credenciales, permisos a nivel de instancia, controll de certificados y claves, seguridad de los endpoints, utilizar certificados SSL, puertos TCP

La proteccin de la seguridad en SQL Server conlleva una serie de pasos que afectan a cuatro reas: la plataforma, la autenticacin, los objetos (incluso los datos) y las aplicaciones que tienen acceso al sistema. Los siguientes temas le guiarn durante el proceso de creacin e implementacin de un plan de seguridad eficaz.

Seguridad de la plataforma y de la red La plataforma de SQL Server incluye el hardware fsico y los sistemas de redes que conectan los clientes con los servidores de bases de datos, as como los archivos binarios que se utilizan para procesar solicitudes de base de datos.

Seguridad fsica Las recomendaciones de seguridad fsica limitan de forma estricta el acceso al servidor fsico y a los componentes de hardware. Por ejemplo, use salas cerradas de acceso restringido para el hardware de servidor de base de datos y los dispositivos de red. Adems, limite el acceso a los medios de copia de seguridad almacenndolos en una ubicacin segura fuera de las instalaciones. La implementacin de la seguridad de la red fsica comienza por mantener a los usuarios no autorizados fuera de la red. Punto de seguridad

Redes y SQL Server

Protocolos de red y extremos TDS

Especificar y restringir los puertos que se utilizan para Configurar protocolos y bibliotecas de red de servidores de red SQL Server

Restringir el acceso de red a SQL Server

Restringir el acceso a la red

SQL Server Compact 3.5 SP1 y acceso de red a otras "Configurar y proteger el entorno de servidor" en los Libros en pantalla de ediciones de SQL Server SQL Server Compact 3.5 SP1

Estrategias de copias de seguridad y restauracin

Consideraciones de seguridad para copias de seguridad y restauracin.

Seguridad del sistema operativo Los Service Packs y las actualizaciones del sistema operativo incluyen mejoras de seguridad importantes. Aplique todas las revisiones y actualizaciones al sistema operativo despus de probarlas con las aplicaciones de base de datos. Los firewalls tambin proporcionan formas eficaces de implementar la seguridad. Lgicamente, un firewall es un separador o limitador del trfico de red, que puede configurarse para aplicar la directiva de seguridad de datos de su organizacin. Si utiliza un firewall, aumentar la seguridad del sistema operativo, ya que proporciona un cuello de botella en el que pueden concentrarse las medidas de seguridad. Punto de seguridad

Configurar un firewall para que funcione con SQL Server

Configurar un firewall para que funcione con Integration Services

Configurar un firewall para que funcione con Analysis Services

Configurar un firewall para que funcione con Reporting Services

Abrir puertos especficos de un firewall para permitir el acceso a SQL Server La reduccin del rea expuesta es una medida de seguridad que implica detener o deshabilitar componentes no utilizados. La reduccin del rea expuesta ayuda a mejorar la seguridad al proporcionar menos accesos para ataques potenciales al sistema. La clave para limitar el rea expuesta de SQL Server consiste en ejecutar los servicios requeridos que tienen "privilegios mnimos" concediendo exclusivamente los derechos necesarios a los servicios y los usuarios. Punto de seguridad

82

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Servicios requeridos para SQL Server

Restringir el acceso de inicio de sesin del servidor

Derechos de administracin locales Si el sistema SQL Server usa Internet Information Services (IIS), es necesario realizar pasos adicionales para proteger la superficie de la plataforma. Punto de seguridad

La seguridad de IIS con SQL Server Compact 3.5 SP1

Usar servicios web en SQL Server e IIS

Servidores de informes y acceso a Internet

Configurar la seguridad de formularios en un servidor de informes

Autenticacin de Reporting Services

Acceso a IIS y SQL Server Compact 3.5 SP1

Seguridad de los archivos del sistema operativo de SQL Server SQL Server usa archivos del sistema operativo para el funcionamiento y el almacenamiento de datos. Las recomendaciones de seguridad de archivos indican que se restrinja el acceso a estos archivos. En la tabla siguiente se ofrece informacin sobre estos archivos. Punto de seguridad

Archivos de programa de SQL Server

Seguridad de archivos de base de datos

Seguridad de archivos de Analysis Services Los Service Packs y actualizaciones de SQL Server proporcionan una seguridad mejorada. Puede usar el siguiente script para determinar el Service Pack instalado en el sistema: SELECT CONVERT(char(20), SERVERPROPERTY('productlevel')); GO

Entidades de seguridad y seguridad de objetos de base de datos

Las entidades de seguridad son los individuos, grupos y procesos que tienen acceso a SQL Server. Los elementos que pueden protegerse son el servidor, la base de datos y los objetos incluidos en la base de datos. Cada uno de estos elementos dispone de un conjunto de permisos que pueden configurarse para reducir el rea expuesta de SQL Server. En la tabla siguiente se incluye informacin sobre las entidades de seguridad y los elementos que pueden protegerse. Punto de Seguridad

Usuarios, funciones y procesos de servidor y base de datos

Seguridad de objetos de servidor y base de datos

La jerarqua de seguridad de SQL Server .

83

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Cifrado y certificados El cifrado no resuelve los problemas de control de acceso. Sin embargo, mejora la seguridad debido a que limita la prdida de datos, incluso en el caso poco probable de que se superen los controles de acceso. Por ejemplo, si el equipo host de base de datos no est configurado correctamente y un usuario malintencionado obtiene datos confidenciales, como nmeros de tarjetas de crdito, esa informacin robada podra resultar inservible si est cifrada. Punto de Seguridad

La jerarqua de cifrado de SQL Server

Cifrar conexiones a SQL Server

Implementar conexiones seguras

Funciones de cifrado

Implementar el cifrado

Configurar Analysis Services para el cifrado de datos Los certificados son "claves" de software que se comparten entre dos servidores que habilitan las comunicaciones seguras a travs de una autenticacin segura. Puede crear y usar certificados en SQL Server para mejorar la seguridad de objetos y conexiones Punto de Seguridad

Usar un certificado para establecer conexiones seguras

Crear un certificado para utilizarlo con SQL Server.

Usar un certificado con SQL Server Service Broker

Usar un certificado para la creacin de reflejo de la base de datos

Seguridad de aplicaciones Las recomendaciones de seguridad de SQL Server incluyen la escritura de aplicaciones cliente seguras.

Herramientas, utilidades, vistas y funciones de seguridad de SQL Server SQL Server proporciona herramientas, utilidades, vistas y funciones que pueden utilizarse para configurar y administrar la seguridad.

Herramientas y utilidades de seguridad de SQL Server Punto de seguridad

Conectarse, configurar y controlar SQL Server

Conectarse a SQL Server y ejecutar consultas en el smbolo del sistema

Control y configuracin de red para SQL Server

Habilitar y deshabilitar caractersticas con Administracin basada en directiva

Manipular claves simtricas para un servidor de informes

Funciones y vistas de catlogo de seguridad de SQL Server El Database Engine (Motor de base de datos) expone informacin de seguridad en varias vistas y funciones que se optimizan en cuanto a rendimiento y utilidad. Punto de seguridad

Vistas de catlogo de seguridad de SQL Server, que devuelven informacin sobre permisos de base de datos y servidor, entidades de

84

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

seguridad, funciones, etc. Tambin hay vistas de catlogo que proporcionan informacin acerca de las claves de cifrado, los certificados y las credenciales.

Funciones de seguridad de SQL Server, que devuelven informacin sobre el usuario, los permisos y los esquemas actuales.

Vistas de administracin dinmica de seguridad de SQL Server.

Configurar cuentas de servicio de Windows

Cada servicio de SQL Server representa a un proceso o conjunto de procesos para administrar la autenticacin de las operaciones de SQL Server con Windows. En este tema se describe la configuracin predeterminada de los servicios en esta versin de SQL Server, as como las opciones de configuracin de los servicios SQL Server que se pueden establecer durante la instalacin de SQL Server. En funcin de los componentes que decida instalar, el programa de instalacin de SQL Server instalar los servicios siguientes:

Servicios de bases de datos de SQL Server: servicio del Database Engine (Motor de base de datos) relacional de SQL Server.

Agente SQL Server: ejecuta trabajos, supervisa SQL Server, activa alertas y habilita la automatizacin de algunas tareas administrativas. Nota: Para que SQL Server y el Agente SQL Server se ejecuten como servicios de Windows, SQL Server y el Agente SQL Server deben estar asignados a una cuenta de usuario de Windows.

Analysis Services: proporciona funciones de procesamiento analtico en lnea (OLAP) y minera de datos para aplicaciones de Business Intelligence. Reporting Services: administra, ejecuta, crea, programa y enva informes.

Integration Services: proporciona compatibilidad de administracin para el almacenamiento y la ejecucin de paquetes de Integration Services. Explorador de SQL Server: servicio de resolucin de nombres que proporciona informacin de conexin de SQL Server a los equipos cliente. Bsqueda de texto completo: crea rpidamente ndices de texto completo del contenido y de las propiedades de los datos estructurados y semiestructurados para permitir el filtrado de documentos y la separacin de palabras en SQL Server. Servicio auxiliar de Active Directory de SQL Server: publica y administra los servicios de SQL Server en Active Directory.

Objeto de escritura de SQL: permite que las aplicaciones de copias de seguridad y restauracin funcionen en el marco del Servicio de instantneas de volumen (VSS). Importante: Utilice siempre herramientas de SQL Server, como el Administrador de configuracin de SQL Server, para cambiar la cuenta utilizada por los servicios SQL Server o del Agente SQL Server, o para cambiar la contrasea de la cuenta. Adems de cambiar el nombre de la cuenta, el Administrador de configuracin de SQL Server realiza una configuracin adicional, como establecer los permisos del Registro de Windows para que la nueva cuenta pueda leer la configuracin de SQL Server. Otras herramientas, como el Administrador de control de servicios de Windows, pueden cambiar el nombre de la cuenta, pero no la configuracin asociada. Si el servicio no puede obtener acceso a la parte de SQL Server del Registro, no se puede iniciar correctamente.

Configurar el tipo de inicio del servicio

Durante la instalacin de SQL Server, puede configurar el tipo de inicio (deshabilitado, manual, o automtico) para algunos servicios de SQL Server. En la tabla siguiente se muestran los servicios de SQL Server que se pueden configurar durante la instalacin. En instalaciones desatendidas, puede usar los modificadores en un archivo de configuracin o en el smbolo del sistema. Nombre Server de servicio SQL Configurable en el Asistente para la Modificadores para las instalaciones desatendidas instalacin?

MSSQLSERVER

SQLSVCACCOUNT,

SQLSVCPASSWORD,

85

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

SQLSVCSTARTUPTYPE

SQLServerAgent2

AGTSVCACCOUNT, AGTSVCSTARTUPTYPE

AGTSVCPASSWORD,

MSSQLServerOLAPService

ASSVCACCOUNT, ASSVCSTARTUPTYPE

ASSVCPASSWORD,

ReportServer

RSSVCACCOUNT, RSSVCSTARTUPTYPE

RSSVCPASSWORD,

Integration Services

ISSVCACCOUNT, ISSVCSTARTUPTYPE

ISSVCPASSWORD,

El servicio Agente SQL Server est deshabilitado en las instancias de SQL Server Express y SQL Server Express con Advanced Services.

Usar las cuentas de inicio de los servicios SQL Server Para poder iniciarse y ejecutarse, cada servicio de SQL Server debe tener una cuenta de usuario que se configura durante la instalacin. Las cuentas de inicio utilizadas para iniciar y ejecutar SQL Server pueden ser cuentas del sistema integradas, cuentas de usuario local o cuentas de usuario de dominio.

Cuenta de usuario de dominio Si el servicio debe interactuar con servicios de red o tener acceso a recursos de un dominio como los recursos compartidos de archivos, o si utiliza conexiones con el servidor vinculadas a otros equipos que ejecutan SQL Server, podra utilizar una cuenta de servidor de dominio con privilegios mnimos. Muchas actividades de servidor a servidor slo se pueden realizar con una cuenta de usuario de dominio. El administrador del dominio del entorno debe haber creado esta cuenta previamente.

Cuentas de usuario local Si el equipo no forma parte de un dominio, se recomienda usar una cuenta de usuario local sin permisos de administrador de Windows.

Cuenta de servicio local La cuenta de servicio local es una cuenta integrada que tiene el mismo nivel de acceso a los recursos y objetos que los miembros del grupo Usuarios. Este acceso limitado ayuda a proteger el sistema en caso de que los servicios o procesos individuales se vean comprometidos. Los servicios que se ejecutan en la cuenta de servicio local obtienen acceso a los recursos de la red como una sesin nula sin credenciales. Tenga en cuenta que la cuenta de servicio local no se admite para los servicios de SQL Server ni de Agente SQL Server. El nombre real de la cuenta es "NT AUTHORITY\Cuenta de servicio local".

Cuenta de servicio de red La cuenta de servicio de red es una cuenta integrada que tiene un mayor nivel de acceso a los recursos y a los objetos que los miembros del grupo Usuarios. Los servicios que se ejecutan en la cuenta de servicio de red tienen acceso a los recursos de red a travs de las credenciales de la cuenta de equipo. El nombre real de la cuenta es "NT AUTHORITY\NetworkService".

Cuenta de sistema local Sistema local es una cuenta integrada con un alto nivel de privilegios. Tiene amplios privilegios en el sistema local y acta como el equipo en la red. El nombre real de la cuenta es "NT AUTHORITY\System". Adems de las cuentas de usuario, cada servicio tiene tres posibles estados de inicio que los usuarios pueden controlar:

Deshabilitado

El servicio se ha instalado, pero no se ejecuta actualmente.

Manual: el servicio se ha instalado, pero slo se iniciar cuando otro servicio o aplicacin necesite su funcionalidad.

Automtico: el sistema operativo inicia automticamente el servicio.

En la tabla siguiente, se muestran cuentas opcionales para cada servicio de SQL Server, as como los estados de inicio de cada uno de ellos. Nombre servicio Server de Cuentas opcionales SQL Tipo de inicio Estado predeterminado despus de la instalacin

86

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

SQL Server

SQL Server Express: Usuario de dominio, Automtico1 Sistema local, Servicio de red

Iniciado Solo se detiene si el usuario elige no

Resto de ediciones: Usuario de dominio, Sistema local, Servicio de red1

ejecutar el inicio automtico.

Agente SQL Server

Usuario

de

dominio,

Sistema

local, Manual1,2

Detenido

Servicio de red1 Solo se inicia automticamente si Solo se inicia si el usuario elige el usuario elige ejecutar el inicio ejecutar el inicio automtico. automtico

Analysis Services

Usuario de dominio, Servicio de red, Automtico1 Servicio local, Sistema local1

Iniciado Solo se detiene si el usuario elige no ejecutar el inicio automtico.

Reporting Services

Usuario

de

dominio,

Sistema

local, Automtico

Iniciado Solo se detiene si el usuario decide no ejecutar el inicio automtico.

Servicio de red, Servicio local

Integration Services

Usuario

de

dominio,

Sistema

local, Automtico

Iniciado Solo se detiene si el usuario decide no ejecutar el inicio automtico.

Servicio de red, Servicio local

Bsqueda de texto Use una cuenta distinta de la cuenta del Automtico completo servicio SQL Server.

Iniciado Solo se detiene si no se especifica

De forma predeterminada, la cuenta ser una cuenta de servicio local en Windows Server 2008 y Windows Vista.

una

cuenta

en

Windows

Server

2003 o Windows XP.

Explorador de SQL Servicio local Server

Deshabilitado3

Detenido

Solo se inicia automticamente si Solo se inicia si el usuario decide el usuario decide ejecutar el inicio ejecutar el inicio automtico. automtico.

Servicio auxiliar de Sistema local, Servicio de red Active Directory de SQL Server

Deshabilitado

Detenido

Objeto de escritura Sistema local de SQL Importante


1

Automtico

Iniciado

Para las configuraciones de clster de conmutacin por error, se ha de usar la cuenta de usuario de dominio y el tipo de inicio se establece en manual.
2

El servicio Agente SQL Server est deshabilitado en las instancias de SQL Server Express y SQL Server Express con Advanced Services.

De forma predeterminada, en las instalaciones de clster de conmutacin por error y las instancias con nombre, el Explorador de SQL Server se establece para iniciarse automticamente cuando finaliza la instalacin. Nota de seguridad Ejecute siempre los servicios SQL Server con los derechos de usuario mnimos posibles. Utilice una cuenta de usuario o una cuenta de dominio concreta con privilegios bajos en lugar de una cuenta compartida para los servicios de SQL Server. Utilice cuentas independientes para los diferentes servicios de SQL Server. No otorgue permisos adicionales a la cuenta de servicio ni a los grupos de servicios de SQL Server. Los permisos se concedern a travs de la pertenencia a grupos o directamente a un SID de servicio.

Usar SID de servicio para las configuraciones de servicios SQL Server Los identificadores de seguridad (SID) de servicio estn disponibles en SQL Server 2008 con los sistemas operativos Windows Server 2008 y Windows Vista para habilitar el aislamiento del servicio. El aislamiento del servicio proporciona a los servicios una manera de tener acceso a objetos concretos sin necesidad de ejecutarse en una cuenta con un alto nivel de privilegios ni debilitar la proteccin de seguridad del objeto. Un servicio SQL Server puede usar esta identidad para restringir el acceso a sus recursos por parte de otros servicios o aplicaciones.

87

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Un servicio asla un objeto para su uso exclusivo protegindolo con una entrada de control de acceso que contiene un SID de servicio. Este SID por servicio se deriva del nombre del servicio y es nico para ese servicio; por ejemplo, un nombre de SID de servicio para un servicio SQL Server podra ser NT Service\MSSQL$<NombreDeInstancia>. Una vez que se ha habilitado un SID para un servicio, dicho SID se agrega al grupo de seguridad local de Windows. El propietario del servicio puede modificar la lista de control de acceso de un objeto para dar acceso al SID. Por ejemplo, una clave del Registro en HKEY_LOCAL_MACHINE\SOFTWARE normalmente solo estar disponible para los servicios que tengan credenciales administrativas. Al agregar el SID por servicio a la lista de control de acceso de la clave, el servicio puede ejecutarse en una cuenta con menos privilegios y seguir teniendo acceso a la clave. Durante la instalacin, el programa de instalacin de SQL Server crea un grupo de servicios para cada componente de SQL Server. En Windows Server 2003 y Windows XP, las cuentas de servicio para los servicios de SQL Server se agregan a los grupos de servicios locales y funcionan en estos sistemas operativos como lo hacan en versiones anteriores de SQL Server; los servicios de SQL Server se conectan a una instancia de SQL Server como miembros del grupo local. En Windows Server 2008 y Windows Vista, el SID de servicio se agrega al grupo de seguridad local en lugar de a la cuenta de servicio de SQL Server.

Configuraciones de servicio compatibles La instalacin de SQL Server 2008 en un controlador de dominio de Windows Server 2008 requiere que se proporcione a los servicios de SQL Server un SID de servicio. No se admite SQL Server 2008 all donde los nodos de clsteres de conmutacin por error sean controladores de dominio. La instalacin de SQL Server 2008 en un controlador de dominio de Windows Server 2003 requiere que se proporcione al dominio de SQL Server una cuenta de dominio. En la tabla siguiente se muestran las configuraciones de servicio compatibles para las instalaciones nuevas y actualizadas en Windows Server 2008 o Windows Vista. Nueva instalacin Actualizacin

Instancia independiente - Grupo de servicios con SID de servicio

Instancia independiente - Grupo de servicios con SID de servicio

Instancia de clster de conmutacin por error - Grupo de servicios con cuenta de servicio

Instancia de clster de conmutacin por error - SID de servicio

Controlador de dominio - SID de servicio

En la tabla siguiente se muestran las configuraciones de servicio para las instalaciones nuevas y actualizadas en Windows Server 2003 o Windows XP. Nueva instalacin Actualizacin

Instancia independiente - Grupo de servicios con cuenta de servicio

Instancia independiente - Grupo de servicios con cuenta de servicio

Instancia de clster de conmutacin por error - Grupo de servicios de dominio con cuenta de servicio

Instancia de clster de conmutacin por error Grupo de servicios con cuenta de servicio

Controlador de dominio - Grupo de servicios con cuenta de servicio

Cambiar cuentas de usuario Para cambiar las cuentas de servicio, la contrasea, el tipo de inicio del servicio u otras propiedades de cualquier servicio relacionado con SQL Server, use el Administrador de configuracin de SQL Server. Para los servicios de informes, use la herramienta Configuracin de Reporting Services. Tenga en cuenta que el hecho de cambiar el nombre de la instancia de SQL Server, no cambia el nombre de los grupos de seguridad de SQL Server. Los grupos de seguridad seguirn funcionando con los nombres antiguos despus de la operacin de cambio de nombre.

Identificar los servicios que reconocen y no reconocen instancias Los servicios que reconocen instancias se asocian a una instancia especfica de SQL Server y tienen su propio subrbol del Registro. Puede instalar varias copias de servicios que reconocen instancias mediante la ejecucin del programa de instalacin de SQL Server para instalar cada componente o servicio. Los servicios que no reconocen instancias se comparten entre todas las instancias de SQL Server instaladas. No se asocian a una instancia concreta, se instalan solamente una vez y no se pueden instalar en paralelo. Entre los servicios que reconocen instancias en SQL Server se incluyen los siguientes:

SQL Server Agente SQL Server Tenga en cuenta que el Agente SQL Server se deshabilita en instancias de SQL Server Express y SQL Server Express con Advanced Services.

88

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Analysis Services Reporting Services

Bsqueda de texto completo

Entre los servicios que no reconocen instancias en SQL Server se incluyen los siguientes:

Integration Services

Explorador de SQL Server Servicio auxiliar de Active Directory de SQL Server

Objeto de escritura de SQL

Revisar los derechos y privilegios de Windows NT concedidos a las cuentas de servicio SQL Server El programa de instalacin de SQL Server crea grupos de servicio local para los diferentes servicios de SQL Server y agrega las cuentas de servicio o los SID de servicio a estos grupos segn sea necesario. Estos grupos simplifican la concesin de los permisos necesarios para ejecutar los servicios de SQL Server y otros ejecutables, y ayudan a proteger los archivos de SQL Server. Si se trata de instancias independientes de SQL Server en los sistemas operativos Windows Vista y Windows Server 2008, los SID de servicio se agregan automticamente al grupo. Si se trata de instancias del clster de conmutacin por error en Windows Server 2008, el programa de instalacin no requiere grupos de dominio de forma predeterminada. En lugar de ello, los recursos de SQL Server se agregan directamente al SID de servicio a travs de listas de control de acceso (ACL). Los usuarios pueden elegir grupos de dominios y cuentas de dominio para ejecutar los servicios SQL Server. Tenga en cuenta que para usar grupos de dominios, estos se deben crear antes de ejecutar el programa de instalacin de SQL Server. Se deben utilizar grupos de dominio nicos al instalar los servicios de SQL Server en un controlador de dominio, y solo se pueden usar cuentas de dominio para estos grupos. En la tabla siguiente se muestran los grupos de usuarios a los que el programa de instalacin de SQL Server concede derechos de usuario de Windows NT concretos. Servicio SQL Grupo de usuarios Server Permisos concedidos de forma predeterminada por el programa de instalacin de SQL Server

SQL Server

Instancia SQLServerMSSQLUser$nombreDeEquipo$MSSQLSERVER Instancia con

predeterminada: Iniciar

sesin

como

servicio

(SeServiceLogonRight)1 nombre: Iniciar sesin como proceso por lotes (SeBatchLogonRight) Reemplazar proceso (SeAssignPrimaryTokenPrivilege) Omitir la comprobacin transversal un token de nivel de

SQLServerMSSQLUser$nombreDeEquipo$nombreDeInstancia

(SeChangeNotifyPrivilege) Ajustar las cuotas de memoria de un proceso (SeIncreaseQuotaPrivilege) Permiso para iniciar el servicio auxiliar de Active Directory de SQL Server Permiso para iniciar el objeto de

escritura de SQL Permiso para leer el servicio Registro de eventos Permiso para leer el servicio Llamada a procedimiento remoto

Agente Server3

SQL Instancia SQLServerSQLAgentUser$nombreDeEquipo$MSSQLSERVER Instancia con

predeterminada: Iniciar

sesin

como

servicio

(SeServiceLogonRight) nombre: Iniciar sesin como proceso por lotes (SeBatchLogonRight)

SQLServerSQLAgentUser$nombreDeEquipo$nombreDeInstancia

89

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Reemplazar proceso

un

token

de

nivel

de

(SeAssignPrimaryTokenPrivilege) Omitir la comprobacin transversal

(SeChangeNotifyPrivilege) Ajustar las cuotas de memoria de un proceso (SeIncreaseQuotaPrivilege)

Analysis Services

Instancia SQLServerMSOLAPUser$nombreDeEquipo$MSSQLSERVER Instancia con

predeterminada: Iniciar

sesin

como

servicio

(SeServiceLogonRight) nombre:

SQLServerMSOLAPUser$nombreDeEquipo$nombreDeInstancia

SSRS

Instancia

predeterminada: Iniciar

sesin

como

servicio

SQLServerReportServerUser$nombreDeEquipo$MSRS10.MSSQLSERVER Instancia con nombre:

(SeServiceLogonRight)

SQLServerReportServerUser$nombreDeEquipo$MSRS10.nombreDeInstancia

Integration Services

Instancia predeterminada o con nombre: SQLServerDTSUser$nombreDeEquipo Iniciar

sesin

como

servicio

(SeServiceLogonRight) Permiso para escribir en el registro de eventos de la aplicacin Omitir la comprobacin transversal

(SeChangeNotifyPrivilege) Suplantar un cliente despus de la autenticacin (SeImpersonatePrivilege)

Bsqueda texto completo

de Instancia

predeterminada: Iniciar

sesin

como

servicio

SQLServerFDHostUser$nombreDeEquipo$MSSQL10.MSSQLSERVER Instancia con nombre:

(SeServiceLogonRight)

SQLServerFDHostUser$nombreDeEquipo$MSSQL10nombreDeInstancia

SQL

Server Instancia

predeterminada

con

nombre: Iniciar

sesin

como

servicio

Browser

SQLServerSQLBrowserUser$nombreDeEquipo

(SeServiceLogonRight)

Servicio auxiliar Active Directory SQL Server de

Instancia

predeterminada

con

nombre: Ninguno2

de SQLServerMSSQLServerADHelperUser$nombreDeEquipo

Objeto escritura SQL

de N/A de

Ninguno2

1Este permiso se concede de forma predeterminada a todos los servicios de SQL Server.
2

El programa de instalacin de SQL Server no comprueba ni concede permisos para este servicio.

El servicio Agente SQL Server est deshabilitado en las instancias de SQL Server Express y SQL Server Express con Advanced Services.

Revisar las listas de control de acceso creadas por las cuentas de servicio SQL Server Las cuentas de servicio de SQL Server deben tener acceso a los recursos. Las listas de control de acceso se definen en el nivel de grupo de usuarios. Importante:

90

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
En las instalaciones de clster de conmutacin por error, los recursos de discos compartidos se deben establecer en una ACL de una cuenta local. En la tabla siguiente se muestran las ACL establecidas mediante el programa de instalacin de SQL Server: Cuenta de servicio1 para Archivos y carpetas Acceso

MSSQLServer

Instid\MSSQL\backup

Control total

Instid\MSSQL\binn

Lectura, Ejecucin

Instid\MSSQL\data

Control total

Instid\MSSQL\FTData

Control total

Instid\MSSQL\Install

Lectura, Ejecucin

Instid\MSSQL\Log

Control total

Instid\MSSQL\Repldata

Control total

100\shared

Lectura, Ejecucin

Instid\MSSQL\Template Data (solo SQL Server Express)

Lectura

SQLServerAgent2

Instid\MSSQL\binn

Control total

Instid\MSSQL\binn

Control total

Instid\MSSQL\Log

Lectura, Escritura, Eliminacin, Ejecucin

100\com

Lectura, Ejecucin

100\shared

Lectura, Ejecucin

100\shared\Errordumps

Lectura, Escritura

ServerName\EventLog

Control total

FTS

Instid\MSSQL\FTData

Control total

Instid\MSSQL\FTRef

Lectura, Ejecucin

100\shared

Lectura, Ejecucin

100\shared\Errordumps

Lectura, Escritura

Instid\MSSQL\Install

Lectura, Ejecucin

Instid\MSSQL\jobs

Lectura, Escritura

MSSQLServerOLAPService

100\shared\ASConfig

Control total

Instid\OLAP

Lectura, Ejecucin

Instid\Olap\Data

Control total

Instid\Olap\Log

Lectura, Escritura

91

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Instid\OLAP\Backup

Lectura, Escritura

Instid\OLAP\Temp

Lectura, Escritura

100\shared\Errordumps

Lectura, Escritura

SQLServerReportServerUser Instid\Reporting Services\Log Files

Lectura, Escritura, Eliminacin

Instid\Reporting Services\ReportServer

Lectura, Ejecucin

Instid\Reportingservices\Reportserver\global.asax

Control total

Instid\Reportingservices\Reportserver\Reportserver.config

Lectura

Instid\Reporting Services\reportManager

Lectura, Ejecucin

Instid\Reporting Services\RSTempfiles

Lectura, Escritura, Ejecucin, Eliminacin

100\shared

Lectura, Ejecucin

100\shared\Errordumps

Lectura, Escritura

MSDTSServer100

100\dts\binn\MsDtsSrvr.ini.xml

Lectura

100\dts\binn

Lectura, Ejecucin

100\shared

Lectura, Ejecucin

100\shared\Errordumps

Lectura, Escritura

Explorador SQL Server

100\shared\ASConfig

Lectura

100\shared

Lectura, Ejecucin

100\shared\Errordumps

Lectura, Escritura

MSADHelper

N/D (Se ejecuta en la cuenta de servicio de red)

SQLWriter

N/D (Se ejecuta como sistema local)

Usuario

Instid\MSSQL\binn

Lectura, Ejecucin

Instid\Reporting Services\ReportServer

Lectura, Ejecucin, Mostrar el contenido de la carpeta

Instid\Reportingservices\Reportserver\global.asax

Lectura

Instid\Reporting Services\ReportManager

Lectura, Ejecucin

Instid\Reporting Services\ReportManager\pages

Lectura

Instid\Reporting Services\ReportManager\Styles

Lectura

100\dts

Lectura, Ejecucin

100\tools

Lectura, Ejecucin

92

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

90\tools

Lectura, Ejecucin

80\tools

Lectura, Ejecucin

100\sdk

Lectura

Microsoft SQL Server\100\Setup Bootstrap

Lectura, Ejecucin

1En algunos escenarios, tales como la agrupacin en clsteres de conmutacin por error y la instalacin de SQL Server en un controlador de dominio, las ACL se establecern para el SID de servicio de SQL Server en lugar de establecerse para el grupo de servicios de SQL Server.
2

El servicio Agente SQL Server est deshabilitado en las instancias de SQL Server Express y SQL Server Express con Advanced Services.

Es posible que sea necesario conceder algunos permisos de control de acceso a cuentas integradas o a otras cuentas de servicio de SQL Server. La tabla siguiente muestra las ACL adicionales que son establecidas mediante el programa de instalacin de SQL Server: Componente Cuenta que realiza la solicitud Recurso Permisos

MSSQLServer Usuarios registro rendimiento

del Instid\MSSQL\binn de

Mostrar el contenido de la carpeta

Usuarios monitor sistema

del Instid\MSSQL\binn de

Mostrar el contenido de la carpeta

Usuarios registro rendimiento, Usuarios monitor sistema

del \WINNT\system32\sqlctr100.dll de del de

Lectura, Ejecucin

Slo administrador

el \\.\root\Microsoft\SqlServer\ServerEvents\<nombreDeInstanciaDeSQL> 1

Control total

Administradores, sistema

\tools\binn\schemas\sqlserver\2004\07\showplan

Control total

Usuarios

\tools\binn\schemas\sqlserver\2004\07\showplan

Lectura, Ejecucin

Reporting Services

<Cuenta servidor informes>

de <instalacin>\Reporting Services\LogFiles de

DELETE READ_CONTROL SYNCHRONIZE FILE_GENERIC_READ FILE_GENERIC_WRITE FILE_READ_DATA FILE_WRITE_DATA FILE_APPEND_DATA FILE_READ_EA FILE_WRITE_EA FILE_READ_ATTRIBUTES

servicio web del

93

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

FILE_WRITE_ATTRIBUTES

Identidad grupo aplicaciones Administrador informes,

del <install>\Reporting

Services\ReportManager,

<install>\Reporting Lectura <install>\Reporting <install>\Reporting

de Services\ReportManager\Pages\*.*, del Services\ReportManager\Styles\*.*, de Services\ReportManager\webctrl_client\1_0\*.*

cuenta

ASP.NET, Todos

Identidad grupo aplicaciones Administrador informes

del <instalacin>\Reporting Services\ReportManager\Pages\*.* de del de

Lectura

<Cuenta servidor informes>

de <instalacin>\Reporting Services\ReportServer de

Lectura

servicio web del

<Cuenta servidor informes>

de <instalacin>\Reporting Services\ReportServer\global.asax de

Completo

servicio web del

Todos

<instalacin>\Reporting Services\ReportServer\global.asax

READ_CONTROL FILE_READ_DATA FILE_READ_EA FILE_READ_ATTRIBUTES

Servicio de red

<install>\Reporting Services\ReportServer\ReportService.asmx

Completo

Todos

<install>\Reporting Services\ReportServer\ReportService.asmx

READ_CONTROL SYNCHRONIZE FILE_GENERIC_READ FILE_GENERIC_EXECUTE FILE_READ_DATA FILE_READ_EA FILE_EXECUTE FILE_READ_ATTRIBUTES

Cuenta servicios Windows ReportServer

de <instalacin>\Reporting Services\ReportServer\RSReportServer.config de

DELETE READ_CONTROL SYNCHRONIZE FILE_GENERIC_READ FILE_GENERIC_WRITE FILE_READ_DATA FILE_WRITE_DATA

94

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

FILE_APPEND_DATA FILE_READ_EA FILE_WRITE_EA FILE_READ_ATTRIBUTES FILE_WRITE_ATTRIBUTES

Todos

Claves del Servidor de informes (subrbol Instid)

Consultar valor Enumerar subclaves Notificar Controles de lectura

Usuario

de Claves del Servidor de informes (subrbol Instid)

Consultar valor Establecer valor Crear subclave Enumerar subclave Notificar Eliminar Controles de lectura

Terminal Services

Usuarios avanzados

Claves del Servidor de informes (subrbol Instid)

Consultar valor Establecer valor Crear subclave Enumerar subclaves Notificar Eliminar Controles de lectura

1ste es el espacio de nombres del proveedor WMI.

Revisar los permisos de Windows para los servicios SQL Server En la tabla siguiente, se muestran los nombres de servicio, el trmino que se usa para hacer referencia a las instancias predeterminada y con nombre de los servicios de SQL Server, una descripcin de la funcin del servicio y los permisos mnimos necesarios.

Nombre mostrar

para Nombre del servicio

Descripcin

Permisos necesarios

SQL

Server Instancia MSSQLSERVER Instancia

predeterminada: SQL Server Database Engine (Motor de base de datos de Se recomienda usar una cuenta de SQL Server). con nombre: La ruta de acceso del archivo ejecutable es Iniciar sesin como servicio (SeServiceLogonRight).1 usuario dominio. local o de usuario de

(nombreDeInstancia)

MSSQL$nombreDeInstancia

\MSSQL\Binn\sqlservr.exe.

95

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Iniciar sesin como proceso por lotes (SeBatchLogonRight). Reemplazar un token de nivel de proceso (SeAssignPrimaryTokenPrivilege). Omitir la comprobacin transversal (SeChangeNotifyPrivilege). Ajustar las cuotas de memoria de un proceso (SeIncreaseQuotaPrivilege). Permiso Server. Permiso para iniciar el objeto de escritura de SQL. Permiso para leer el servicio para iniciar el servicio

auxiliar de Active Directory de SQL

Registro de eventos. Permiso para leer el servicio

Llamada a procedimiento remoto. Permisos mnimos Funcionalidad Cuenta de inicio del servicio MSSQLServer La cuenta debe estar en la lista de cuentas que tienen los permisos para mostrar carpetas en la unidad de disco raz donde est instalado SQL Server. Tambin debe estar en la raz de cualquier otra unidad de disco donde se almacenen archivos de SQL Server. Nota: Las subcarpetas no tienen que heredar los permisos "Mostrar lista de carpetas" de la unidad raz. Cuenta de inicio del servicio MSSQLServer La cuenta debe tener permisos Control total en todas las carpetas donde se vayan a almacenar los archivos de datos o de registro (.mdf, .ndf, .ldf). Agente
1

SQL

Server Instancia SQLServerAgent Instancia

predeterminada: Ejecuta trabajos, supervisa SQL Server, activa alertas y habilita nombre: La ruta de acceso del archivo ejecutable es \MSSQL\Binn\sqlagent.exe. la automatizacin de algunas tareas administrativas. con

Permisos mnimos Funcionalidad La cuenta debe ser miembro de la funcin fija de servidor sysadmin. La cuenta debe tener los siguientes permisos como proceso. de Windows: por las Iniciar lotes. de sesin como servicio. Iniciar sesin proceso Ajustar Reemplazar un token de nivel de cuotas memoria de un proceso. Omitir la comprobacin transversal.

(NombreDeInstancia)

SQLAgent$nombreDeInstancia

Servicios de Analysis Instancia Services (nombreDeInstancia) Instancia

predeterminada: El servicio que proporciona proceso analtico en lnea (OLAP) y nombre: La ruta de acceso del archivo ejecutable es \OLAP\Bin\msmdsrv.exe. funcionalidad de minera de datos a las aplicaciones de inteligencia empresarial. con

MSSQLServerOLAPService

MSOLAP$nombreDeInstancia

96

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Reporting Services

Instancia ReportServer

predeterminada: Administra, ejecuta, crea, programa y enva informes. La ruta de acceso del archivo ejecutable es \Reporting

Instancia

con

nombre: Services\ReportServer\Bin\ReportingServicesService.exe.

ReportServer$nombreDeInstancia

Integration Services

Instancia predeterminada o con Proporcionar compatibilidad de administracin para el nombre: MSDTSServer almacenamiento y la ejecucin de un paquete de Integration Services. La ruta de acceso del archivo ejecutable es

\DTS\Binn\msdtssrvr.exe.

Bsqueda completo

de

texto Instancia predeterminada o con Servicio que iniciar el proceso del demonio de filtro de nombre: selector de demonio de texto completo, el cual realizar el filtrado de documentos filtro de texto completo de SQL y la separacin de palabras para la bsqueda de texto completo de SQL Server.

Explorador Server

de

SQL Instancia predeterminada o con El servicio de resolucin de nombres que proporciona nombre: SQLBrowser informacin de conexin de SQL Server a los equipos cliente. Este servicio lo comparten varias instancias de SQL Server y de SSIS. La ruta de acceso de del archivo ejecutable es SQL

<unidad>:\Archivos

programa\Microsoft

Server\100\Shared\sqlbrowser.exe.

Servicio Active

auxiliar Directory

de Instancia predeterminada o con Publica y administra servicios de SQL Server en Windows de nombre: MSSQLServerADHelper. Active Directory. La ruta de acceso de del archivo ejecutable es SQL

SQL Server <unidad>:\Archivos programa\Microsoft

Server\100\Shared\sqladhelper.exe.

Objeto de SQL

de

escritura SQLWriter

Permite que las aplicaciones de copia de seguridad y restauracin funcionen en el marco del Servicio de instantneas de volumen (VSS). Hay una sola instancia del servicio Objeto de escritura de SQL para todas las instancias de SQL Server en el servidor. La ruta de acceso de del archivo ejecutable es SQL

<unidad>:\Archivos

programa\Microsoft

Server\100\Shared\sqlwriter.exe. 1El servicio Agente SQL Server est deshabilitado en las instancias de SQL Server Express y SQL Server Express con Advanced Services.

Revisar consideraciones adicionales En la tabla siguiente, se muestran los permisos que necesitan los servicios de SQL Server para proporcionar una funcionalidad adicional. Servicio/Aplicacin Funcionalidad Permiso necesario

SQL Server (MSSQLSERVER)

Escribir en un buzn de Permisos de escritura de la red. correo xp_sendmail. mediante

SQL Server (MSSQLSERVER)

Ejecute un

xp_cmdshell que no de

para Actuar como parte del sistema operativo y reemplazar un token de nivel sea de proceso. SQL

usuario

administrador Server.

Agente

SQL

Server Usar

la

caracterstica

de Debe ser un miembro del grupo local Administradores.

(MSSQLSERVER)

reinicio automtico.

97

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Asistente para la optimizacin Optimiza las bases de datos Al utilizarla por primera vez, un usuario que tenga credenciales de Database Engine (Motor de para un rendimiento ptimo administrativas debe inicializar la aplicacin. Despus de la inicializacin, base de datos) de las consultas. los usuarios de dbo pueden usar el Asistente para la optimizacin de Database Engine (Motor de base de datos) para optimizar solo aquellas tablas de las que son propietarios.

Importante: Antes de actualizar SQL Server, habilite la autenticacin de Windows para el Agente SQL Server y compruebe la configuracin predeterminada necesaria: que la cuenta de servicio del Agente SQL Server sea miembro del grupo sysadmin de SQL Server.

Nombres de servicio traducidos

En la tabla siguiente, se muestran los nombres de servicio que se ven en las versiones traducidas de Windows. Idioma Nombre local de Servicio Nombre de Servicio de red Nombre del sistema Nombre del local administradores grupo de

Ingls Chino simplificado Chino tradicional Coreano Japons

NT

AUTHORITY\LOCAL NT SERVICE

AUTHORITY\NETWORK NT AUTHORITY\SYSTEM

BUILTIN\Administrators

SERVICE

Alemn

NT-AUTORITT\LOKALER DIENST

NTAUTORITT\NETZWERKDIENST

NTAUTORITT\SYSTEM

VORDEFINIERT\Administratoren

Francs

AUTORITE LOCAL

NT\SERVICE AUTORITE NT\SERVICE RSEAU

AUTORITE NT\SYSTEM BUILTIN\Administrateurs

Italiano

NT AUTHORITY\SERVIZIO NT LOCALE RETE

AUTHORITY\SERVIZIO

DI NT AUTHORITY\SYSTEM

BUILTIN\Administrators

Espaol

NT AUTHORITY\SERVICIO NT LOC RED

AUTHORITY\SERVICIO

DE NT AUTHORITY\SYSTEM

BUILTIN\Administradores

Ruso

NT

AUTHORITY\LOCAL NT SERVICE

AUTHORITY\NETWORK NT AUTHORITY\SYSTEM

BUILTIN\

SERVICE

Jerarqua de permisos

El Database Engine (Motor de base de datos) administra un conjunto jerrquico de entidades que se pueden proteger mediante permisos. Estas entidades se conocen como asegurables. Los asegurables ms importantes son los servidores y las bases de datos, aunque se pueden establecer permisos discretos en niveles menores. SQL Server regula las acciones de las entidades de seguridad en los asegurables comprobando que se les han concedido los permisos adecuados. En la ilustracin siguiente se muestran las relaciones entre las jerarquas de permisos del Database Engine (Motor de base de datos).

98

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Trabajar con permisos Los permisos se pueden manipular con las conocidas consultas GRANT, DENY y REVOKE de Transact-SQL. La informacin sobre los permisos est visible en las vistas de catlogo sys.server_permissions y sys.database_permissions. Tambin hay informacin sobre la compatibilidad con permisos para consultas mediante el uso de las funciones integradas. Convenciones de nomenclatura de permisos A continuacin se describen las convenciones generales que se siguen en la nomenclatura de permisos:

CONTROL Confiere al receptor del permiso capacidades relacionadas con la propiedad. El receptor del permiso dispone de hecho de todos los permisos definidos en el protegible. Una entidad de seguridad a la que se le haya concedido el permiso CONTROL tambin puede conceder permisos en el protegible. Como el modelo de seguridad de SQL Server es jerrquico, el permiso CONTROL de un determinado mbito incluye implcitamente el mismo permiso CONTROL en todos los protegibles que abarca dicho mbito. Por ejemplo,

99

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
el permiso CONTROL en una base de datos implica todos los permisos de la base de datos, todos los permisos en todos los ensamblados y todos los esquemas de la misma, as como todos los permisos en los objetos de todos los esquemas que incluye la base de datos.

ALTER Confiere la posibilidad de cambiar las propiedades, excepto la propiedad, de un protegible determinado. Cuando se concede en un mbito, ALTER tambin confiere la posibilidad de modificar, crear o quitar cualquier protegible que est contenido en ese mbito. Por ejemplo, el permiso ALTER en un esquema incluye la posibilidad de crear, modificar y quitar objetos del esquema. ALTER ANY <Server Securable>, donde Server Securable puede ser cualquier protegible de servidor. Confiere la posibilidad de crear, modificar o quitar instancias individuales del Server Securable. Por ejemplo, ALTER ANY LOGIN confiere la posibilidad de crear, modificar o quitar cualquier inicio de sesin en la instancia. ALTER ANY <Database Securable>, donde Database Securable puede ser cualquier protegible a nivel de base de datos. Confiere la posibilidad de crear, modificar o quitar instancias individuales de Database Securable. Por ejemplo, ALTER ANY SCHEMA confiere la posibilidad de crear, modificar o quitar cualquier esquema en la base de datos. TAKE OWNERSHIP Permite al receptor del permiso tomar propiedad del protegible para el que se concede este permiso. IMPERSONATE Permite al receptor suplantar el inicio de sesin. IMPERSONATE Permite al receptor suplantar al usuario. CREATE <Server Confiere al receptor la posibilidad de crear el protegible de servidor. CREATE <Database Confiere al receptor la posibilidad de crear el protegible de base de datos. <Login>

<User>

Securable>

Securable>

CREATE <Schema-contained Securable> Confiere la posibilidad de crear el protegible contenido en el esquema. No obstante, para crear el protegible en un esquema concreto se requiere el permiso ALTER en el esquema. VIEW Permite al receptor obtener acceso a los metadatos. DEFINITION

REFERENCES El permiso REFERENCES es necesario en una tabla para crear una restriccin FOREIGN KEY que hace referencia a esa tabla. El permiso de REFERENCES es necesario en un objeto para crear FUNCTION o VIEW con la clusula WITH SCHEMABINDING que hace referencia a ese objeto.

Permisos aplicables a protegibles especficos

En la siguiente tabla se enumeran los principales tipos de permisos y los tipos de protegibles a los que se pueden aplicar. Permiso SELECT Se aplica a Sinnimos Tablas y columnas Funciones con valores de tabla, Transact-SQL y Common Language Runtime (CLR), y columnas Vistas y columnas VIEW CHANGE TRACKING Tablas Esquemas UPDATE Sinnimos

100

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Tablas y columnas Vistas y columnas REFERENCES Funciones escalares y de agregado (Transact-SQL y CLR) Colas de Service Broker Tablas y columnas Funciones con valores de tabla (Transact-SQL y CLR), y columnas Vistas y columnas INSERT Sinnimos Tablas y columnas Vistas y columnas DELETE Sinnimos Tablas y columnas Vistas y columnas EXECUTE Procedimientos (Transact-SQL y CLR) Funciones escalares y de agregado (Transact-SQL y CLR) Sinnimos Tipos CLR RECEIVE VIEW DEFINITION Colas de Service Broker Procedimientos (Transact-SQL y CLR) Colas de Service Broker Funciones escalares y de agregado (Transact-SQL y CLR) Sinnimos Tablas Funciones con valores de tabla (Transact-SQL y CLR) Vistas ALTER Procedimientos (Transact-SQL y CLR) Funciones escalares y de agregado (Transact-SQL y CLR) Colas de Service Broker Tablas Funciones con valores de tabla (Transact-SQL y CLR) Vistas TAKE OWNERSHIP Procedimientos (Transact-SQL y CLR) Funciones escalares y de agregado (Transact-SQL y CLR)

101

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Sinnimos Tablas Funciones con valores de tabla (Transact-SQL y CLR) Vistas CONTROL Procedimientos (Transact-SQL y CLR) Funciones escalares y de agregado (Transact-SQL y CLR) Colas de Service Broker Sinnimos Tablas Funciones con valores de tabla (Transact-SQL y CLR) Vistas

Permisos SQL Server La siguiente tabla contiene una lista completa de los permisos de SQL Server. Protegible base Permisos granulares del Cdigo del tipo Protegible protegible base de permiso contiene protegible base ALTER AL DATABASE que Permiso en el protegible contenedor que un implica permiso granular en el protegible base ALTER ANY APPLICATION ROLE

APPLICATION ROLE APPLICATION ROLE APPLICATION ROLE ASSEMBLY ASSEMBLY ASSEMBLY ASSEMBLY ASSEMBLY

CONTROL

CL

DATABASE

CONTROL

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

ALTER CONTROL REFERENCES TAKE OWNERSHIP VIEW DEFINITION

AL CL RF TO VW AL CL RF TO VW AL CL RF

DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE

ALTER ANY ASSEMBLY CONTROL REFERENCES CONTROL VIEW DEFINITION ALTER ANY ASYMMETRIC KEY CONTROL REFERENCES CONTROL VIEW DEFINITION ALTER ANY CERTIFICATE CONTROL REFERENCES

ASYMMETRIC KEY ALTER ASYMMETRIC KEY CONTROL ASYMMETRIC KEY REFERENCES ASYMMETRIC KEY TAKE OWNERSHIP ASYMMETRIC KEY VIEW DEFINITION CERTIFICATE CERTIFICATE CERTIFICATE ALTER CONTROL REFERENCES

102

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
CERTIFICATE CERTIFICATE CONTRACT CONTRACT CONTRACT CONTRACT CONTRACT DATABASE DATABASE TAKE OWNERSHIP VIEW DEFINITION ALTER CONTROL REFERENCES TAKE OWNERSHIP VIEW DEFINITION ALTER TO VW AL CL RF TO VW AL DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE SERVER SERVER CONTROL VIEW DEFINITION ALTER ANY CONTRACT CONTROL REFERENCES CONTROL VIEW DEFINITION ALTER ANY DATABASE CONTROL SERVER

ALTER ANY APPLICATION ALAR ROLE

DATABASE DATABASE

ALTER ANY ASSEMBLY ALTER KEY ANY

ALAS

SERVER SERVER

CONTROL SERVER CONTROL SERVER

ASYMMETRIC ALAK

DATABASE DATABASE DATABASE

ALTER ANY CERTIFICATE ALTER ANY CONTRACT ALTER AUDIT ANY

ALCF ALSC

SERVER SERVER SERVER

CONTROL SERVER CONTROL SERVER ALTER ANY SERVER AUDIT

DATABASE ALDA

DATABASE

ALTER ANY DATABASE DDL ALTG TRIGGER

SERVER

CONTROL SERVER

DATABASE

ALTER

ANY

DATABASE ALED

SERVER

ALTER ANY EVENT NOTIFICATION

EVENT NOTIFICATION DATABASE DATABASE ALTER ANY DATASPACE ALTER CATALOG DATABASE DATABASE ALTER ANY MESSAGE TYPE ALMT ALTER ANY REMOTE ALSB SERVER SERVER CONTROL SERVER CONTROL SERVER ANY ALDS SERVER SERVER CONTROL SERVER CONTROL SERVER

FULLTEXT ALFT

SERVICE BINDING DATABASE DATABASE DATABASE DATABASE DATABASE ALTER ANY ROLE ALTER ANY ROUTE ALTER ANY SCHEMA ALTER ANY SERVICE ALTER KEY DATABASE DATABASE DATABASE ALTER ANY USER AUTHENTICATE BACKUP DATABASE ALUS AUTH BADB SERVER SERVER SERVER CONTROL SERVER AUTHENTICATE SERVER CONTROL SERVER ANY ALRL ALRT ALSM ALSV SERVER SERVER SERVER SERVER SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER

SYMMETRIC ALSK

103

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE BACKUP LOG CHECKPOINT CONNECT CONNECT REPLICATION CONTROL CREATE AGGREGATE CREATE ASSEMBLY CREATE ASYMMETRIC KEY CREATE CERTIFICATE CREATE CONTRACT CREATE DATABASE CREATE DATABASE BALO CP CO CORP CL CRAG CRAS CRAK CRCF CRSC CRDB DDL CRED SERVER SERVER SERVER SERVER SERVER SERVER SERVER SERVER SERVER SERVER SERVER SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CREATE ANY DATABASE CREATE DDL EVENT NOTIFICATION

EVENT NOTIFICATION DATABASE DATABASE CREATE DEFAULT CREATE CATALOG DATABASE DATABASE DATABASE DATABASE DATABASE CREATE FUNCTION CREATE MESSAGE TYPE CREATE PROCEDURE CREATE QUEUE CRFN CRMT CRPR CRQU SERVER SERVER SERVER SERVER SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CRDF FULLTEXT CRFT SERVER SERVER CONTROL SERVER CONTROL SERVER

CREATE REMOTE SERVICE CRSB BINDING

DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE

CREATE ROLE CREATE ROUTE CREATE RULE CREATE SCHEMA CREATE SERVICE CREATE SYMMETRIC KEY CREATE SYNONYM CREATE TABLE CREATE TYPE CREATE VIEW CREATE XML

CRRL CRRT CRRU CRSM CRSV CRSK CRSN CRTB CRTY CRVW SCHEMA CRXS

SERVER SERVER SERVER SERVER SERVER SERVER SERVER SERVER SERVER SERVER SERVER

CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER

104

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
COLLECTION DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DELETE EXECUTE INSERT REFERENCES SELECT SHOWPLAN SUBSCRIBE NOTIFICATIONS DATABASE DATABASE DATABASE DATABASE ENDPOINT ENDPOINT ENDPOINT ENDPOINT ENDPOINT FULLTEXT CATALOG FULLTEXT CATALOG FULLTEXT CATALOG FULLTEXT CATALOG FULLTEXT CATALOG FULLTEXT STOPLIST FULLTEXT STOPLIST FULLTEXT STOPLIST FULLTEXT STOPLIST FULLTEXT VIEW DEFINITION VW DATABASE VIEW DEFINITION TAKE OWNERSHIP TO DATABASE CONTROL REFERENCES RF DATABASE REFERENCES CONTROL CL DATABASE CONTROL ALTER AL DATABASE ALTER ANY FULLTEXT CATALOG VIEW DEFINITION VW DATABASE VIEW DEFINITION TAKE OWNERSHIP TO DATABASE CONTROL REFERENCES RF DATABASE REFERENCES CONTROL CL DATABASE CONTROL TAKE OWNERSHIP UPDATE VIEW DATABASE STATE VIEW DEFINITION ALTER CONNECT CONTROL TAKE OWNERSHIP VIEW DEFINITION ALTER TO UP VWDS VW AL CO CL TO VW AL SERVER SERVER SERVER SERVER SERVER SERVER SERVER SERVER SERVER DATABASE CONTROL SERVER CONTROL SERVER VIEW SERVER STATE VIEW ANY DEFINITION ALTER ANY ENDPOINT CONTROL SERVER CONTROL SERVER CONTROL SERVER VIEW ANY DEFINITION ALTER ANY FULLTEXT CATALOG DL EX IN RF SL SPLN QUERY SUQN SERVER SERVER SERVER SERVER SERVER SERVER SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER CONTROL SERVER ALTER TRACE CONTROL SERVER

105

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
STOPLIST LOGIN LOGIN LOGIN LOGIN MESSAGE TYPE MESSAGE TYPE MESSAGE TYPE MESSAGE TYPE MESSAGE TYPE OBJECT OBJECT OBJECT OBJECT OBJECT OBJECT OBJECT OBJECT OBJECT OBJECT OBJECT OBJECT ALTER CONTROL IMPERSONATE VIEW DEFINITION ALTER CONTROL REFERENCES TAKE OWNERSHIP VIEW DEFINITION ALTER CONTROL DELETE EXECUTE INSERT RECEIVE REFERENCES SELECT TAKE OWNERSHIP UPDATE VIEW CHANGE TRACKING VIEW DEFINITION AL CL IM VW AL CL RF TO VW AL CL DL EX IN RC RF SL TO UP VWCT VW AL SERVER SERVER SERVER SERVER DATABASE DATABASE DATABASE DATABASE DATABASE SCHEMA SCHEMA SCHEMA SCHEMA SCHEMA SCHEMA SCHEMA SCHEMA SCHEMA SCHEMA SCHEMA SCHEMA DATABASE ALTER ANY LOGIN CONTROL SERVER CONTROL SERVER VIEW ANY DEFINITION ALTER ANY MESSAGE TYPE CONTROL REFERENCES CONTROL VIEW DEFINITION ALTER CONTROL DELETE EXECUTE INSERT CONTROL REFERENCES SELECT CONTROL UPDATE VIEW CHANGE TRACKING VIEW DEFINITION ALTER ANY REMOTE SERVICE BINDING

REMOTE SERVICE ALTER BINDING REMOTE SERVICE CONTROL BINDING REMOTE SERVICE TAKE OWNERSHIP BINDING REMOTE SERVICE VIEW DEFINITION BINDING ROLE ROLE ROLE ROLE ALTER CONTROL TAKE OWNERSHIP VIEW DEFINITION

CL

DATABASE

CONTROL

TO

DATABASE

CONTROL

VW

DATABASE

VIEW DEFINITION

AL CL TO VW

DATABASE DATABASE DATABASE DATABASE

ALTER ANY ROLE CONTROL CONTROL VIEW DEFINITION

106

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
ROUTE ROUTE ROUTE ROUTE SCHEMA SCHEMA SCHEMA SCHEMA SCHEMA SCHEMA SCHEMA SCHEMA SCHEMA SCHEMA SCHEMA SERVER ALTER CONTROL TAKE OWNERSHIP VIEW DEFINITION ALTER CONTROL DELETE EXECUTE INSERT REFERENCES SELECT TAKE OWNERSHIP UPDATE VIEW CHANGE TRACKING VIEW DEFINITION ADMINISTER OPERATIONS SERVER SERVER SERVER SERVER SERVER ALTER ANY CONNECTION ALTER ANY CREDENTIAL ALTER ANY DATABASE ALTER ANY ENDPOINT ALTER ANY ALCO ALCD ALDB ALHE No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable AL CL TO VW AL CL DL EX IN RF SL TO UP VWCT VW BULK ADBO DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE No aplicable ALTER ANY ROUTE CONTROL CONTROL VIEW DEFINITION ALTER ANY SCHEMA CONTROL DELETE EXECUTE INSERT REFERENCES SELECT CONTROL UPDATE VIEW CHANGE TRACKING VIEW DEFINITION No aplicable

EVENT ALES

NOTIFICATION SERVER ALTER SERVER SERVER SERVER SERVER SERVER SERVER SERVER SERVER SERVER ALTER ANY LOGIN ALLG No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable ANY LINKED ALLS No aplicable No aplicable

ALTER ANY SERVER AUDIT ALAA ALTER RESOURCES ALTER SERVER STATE ALTER SETTINGS ALTER TRACE AUTHENTICATE SERVER CONNECT SQL ALRS ALSS ALST ALTR AUTH COSQ

107

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
SERVER SERVER SERVER CONTROL SERVER CREATE ANY DATABASE CREATE DDL CL CRDB No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable

EVENT CRDE

NOTIFICATION SERVER SERVER CREATE ENDPOINT CREATE TRACE CRHE EVENT CRTE No aplicable No aplicable No aplicable No aplicable

NOTIFICATION SERVER EXTERNAL ASSEMBLY SERVER SERVER SERVER SERVER SERVER SERVICE SERVICE SERVICE SERVICE SERVICE SYMMETRIC KEY SYMMETRIC KEY SYMMETRIC KEY SYMMETRIC KEY SYMMETRIC KEY TYPE TYPE TYPE TYPE TYPE USER USER USER USER SHUTDOWN UNSAFE ASSEMBLY VIEW ANY DATABASE VIEW ANY DEFINITION VIEW SERVER STATE ALTER CONTROL SEND TAKE OWNERSHIP VIEW DEFINITION ALTER CONTROL REFERENCES TAKE OWNERSHIP VIEW DEFINITION CONTROL EXECUTE REFERENCES TAKE OWNERSHIP VIEW DEFINITION ALTER CONTROL IMPERSONATE VIEW DEFINITION SHDN XU VWDB VWAD VWSS AL CL SN TO VW AL CL RF TO VW CL EX RF TO VW AL CL IM VW No aplicable No aplicable No aplicable No aplicable No aplicable DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE DATABASE SCHEMA SCHEMA SCHEMA SCHEMA SCHEMA DATABASE DATABASE DATABASE DATABASE No aplicable No aplicable No aplicable No aplicable No aplicable ALTER ANY SERVICE CONTROL CONTROL CONTROL VIEW DEFINITION ALTER ANY SYMMETRIC KEY CONTROL REFERENCES CONTROL VIEW DEFINITION CONTROL EXECUTE REFERENCES CONTROL VIEW DEFINITION ALTER ANY USER CONTROL CONTROL VIEW DEFINITION ACCESS XA No aplicable No aplicable

108

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
XML SCHEMA ALTER AL SCHEMA ALTER

COLLECTION XML SCHEMA CONTROL CL SCHEMA CONTROL

COLLECTION XML SCHEMA EXECUTE EX SCHEMA EXECUTE

COLLECTION XML SCHEMA REFERENCES RF SCHEMA REFERENCES

COLLECTION XML SCHEMA TAKE OWNERSHIP TO SCHEMA CONTROL

COLLECTION XML SCHEMA VIEW DEFINITION VW SCHEMA VIEW DEFINITION

COLLECTION

Resumen del algoritmo de comprobacin de permiso Comprobar los permisos puede ser complejo. El algoritmo de comprobacin de permiso incluye la superposicin de la pertenencia a grupos y el encadenamiento de propiedad, tanto el permiso explcito como el implcito, y puede ser afectado por los permisos en las clases protegibles y que contienen la entidad que se puede proteger. El proceso general del algoritmo es reunir todos los permisos pertinentes. Si no se encuentra ningn bloqueo DENY, el algoritmo busca un permiso GRANT que proporcione el acceso suficiente. El algoritmo contiene tres elementos esenciales, el contexto de seguridad, el espacio del permiso y el permiso requerido.

Contexto de seguridad Es el grupo de entidades de seguridad al que contribuyen los permisos para la comprobacin de acceso. Son los permisos que estn relacionados con el inicio de sesin actual o el usuario, a menos que el contexto de seguridad se cambiara a otro inicio de sesin o usuario utilizando la instruccin EXECUTE AS. El contexto de seguridad incluye las entidades de seguridad siguientes:

o o o o o

El inicio de sesin

El usuario

Pertenecientes a la funcin

Pertenecientes al grupo Windows

Si se utiliza la firma de mdulo, cualquier cuenta de inicio de sesin o de usuario da cuenta del certificado utilizado para firmar el mdulo que el usuario est ejecutando actualmente, as como de los pertenecientes a la funcin asociados de ese entidad de seguridad.

Espacio del permiso Es la entidad que hay que proteger y todas las clases a proteger que contiene la entidad a proteger. Por ejemplo, una tabla (una entidad a proteger) est contenida en la clase de esquema a proteger y en la clase de base de datos a proteger. El acceso puede verse afectado por permisos de nivel de tabla, esquema, base de datos y servidor. Permiso necesario El tipo de permiso que se necesita. Por ejemplo, INSERT, UPDATE, DELETE, SELECT, EXECUTE, ALTER, CONTROL, etc. El acceso puede requerir varios permisos, como en los ejemplos siguientes:

Un procedimiento almacenado puede requerir el permiso EXECUTE sobre el procedimiento almacenado y el permiso INSERT sobre varias tablas a las que hace referencia el procedimiento almacenado.

o
Pasos generales del algoritmo

Una vista de administracin dinmica puede requerir los permisos VIEW SERVER STATE y SELECT sobre la vista.

Cuando el algoritmo est determinando si permite el acceso a un elemento protegible, los pasos precisos que utiliza pueden variar, dependiendo de las entidades de seguridad y de los elementos protegibles implicados. Sin embargo, el algoritmo da los siguientes pasos generales:

109

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
1. Omite la comprobacin del permiso si el inicio de sesin es un miembro de la funcin de servidor fija sysadmin o si el usuario es el usuario de dbo en la base de datos actual. Permite el acceso si es aplicable el encadenamiento de propiedad y la comprobacin de acceso en el objeto anterior de la cadena pas la comprobacin de seguridad.

2.

3. 4.

Agrega las identidades de nivel del servidor, de base de datos y de mdulo firmado que se asocian al autor de las llamadas para crear el contexto de seguridad.

Para ese contexto de seguridad, rene todos los permisos que se conceden o deniegan para el espacio del permiso. El permiso se puede nombrar explcitamente como GRANT, GRANT WITH GRANT o DENY; o los permisos pueden ser un permiso GRANT o DENY implcito o inclusivo. Por ejemplo, el permiso CONTROL sobre un esquema implica CONTROL sobre una tabla. Asimismo, CONTROL sobre una tabla implica SELECT. Por consiguiente, si se otorg CONTROL sobre el esquema, se otorg SELECT sobre la tabla. Si se deneg CONTROL sobre la tabla, tambin se deneg SELECT sobre ella.

Nota: Un permiso GRANT de nivel de columna invalida un permiso DENY en el nivel de objeto.

5. 6. 7.
Ejemplos

Identifique el permiso requerido.

La comprobacin del permiso no se realiza correctamente si el permiso requerido es denegado directa o implcitamente a cualquiera de las identidades del contexto de seguridad para los objetos del espacio del permiso.

La comprobacin del permiso es correcta si no se deneg el permiso requerido y el permiso requerido contiene un permiso GRANT o un permiso GRANT WITH GRANT directa o implcitamente a cualquiera de las identidades del contexto de seguridad para cualquier objeto del espacio del permiso.

A. Devolviendo la lista completa de los permisos que pueden concederse. La instruccin siguiente fn_builtin_permissions. devuelve todo los permisos de Database Engine (Motor de base de datos) utilizando la funcin

SELECT * FROM fn_builtin_permissions(default); GO B. Devolviendo los permisos de una clase de objetos concreta Tambin puede utilizar la funcin fn_builtin_permissions para ver todos los permisos que estn disponibles para una categora protegible. El ejemplo siguiente devuelve permisos de ensamblados. SELECT * FROM fn_builtin_permissions('assembly'); GO C. Devolviendo los permisos de un objeto concedidos a la entidad de seguridad que se ejecuta Puede utilizar fn_my_permissions para devolver una lista de los permisos efectivos que son retenidos por el entidad de seguridad de la llamada sobre un elemento especfico que se puede proteger. El ejemplo siguiente devuelve los permisos de un objeto denominado Orders55. SELECT * FROM fn_my_permissions('Orders55', 'object'); GO D. Devolviendo los permisos aplicables a un objeto especificado El ejemplo siguiente devuelve los permisos aplicables a un objeto denominado Yttrium. Observe que la funcin integrada OBJECT_ID se utiliza para recuperar el identificador del objeto Yttrium. SELECT * FROM sys.database_permissions WHERE major_id = OBJECT_ID('Yttrium');

7 Disear Base de Datos, esquemas, y parmetros de seguridad de objetos. Considerar: usuarios, roles, certificados y control de claves, control de servicios, Common Language Runtime (CLR), cadena de propietario. Entidades de Seguridad Las entidades de seguridad son entidades que pueden solicitar recursos de SQL Server. Igual que otros componentes del modelo de autorizacin de SQL Server, las entidades de seguridad se pueden organizar en jerarquas. El mbito de influencia de una entidad de seguridad depende del mbito de su definicin: Windows, servidor o base de datos; y de si la entidad de seguridad es indivisible o es una coleccin. Un Inicio de sesin de Windows es un ejemplo de entidad de seguridad indivisible y un Grupo de Windows es un ejemplo de una del tipo coleccin. Toda entidad de seguridad tiene un identificador de seguridad (SID). Entidades de seguridad a nivel de Windows Inicio de sesin del dominio de Windows

110

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Inicio de sesin local de Windows Entidad de seguridad de SQL Server Inicio de sesin de SQL Server Entidades de seguridad a nivel de bases de datos Usuario de base de datos Funcin de base de datos Funcin de aplicacin Inicio de sesin sa de SQL Server El inicio de sesin sa de SQL Server es una entidad de seguridad del servidor. Se crea de forma predeterminada cuando se instala una instancia. En SQL Server 2005 y SQL Server 2008, la base de datos predeterminada de sa es master. Es un cambio de comportamiento con respecto a versiones anteriores de SQL Server. Funcin public de base de datos Todos los usuarios de una base de datos pertenecen a la funcin public de la base de datos. Cuando a un usuario no se le han concedido ni denegado permisos de un elemento que puede protegerse, el usuario hereda los permisos de ese elemento concedidos a public. INFORMATION_SCHEMA y sys Todas las bases de datos incluyen dos entidades que aparecen como usuarios en las vistas de catlogo: INFORMATION_SCHEMA y sys. SQL Server necesita estas dos entidades. No son entidades de seguridad y no se pueden modificar ni quitar. Inicios de sesin de SQL Server basados en certificados Las entidades de seguridad de servidor con nombres incluidos entre signos de nmero dobles (##) son exclusivamente para uso interno del sistema. Las siguientes entidades de seguridad se crean a partir de certificados cuando se instala SQL Server y no deben eliminarse. ##MS_SQLResourceSigningCertificate## ##MS_SQLReplicationSigningCertificate## ##MS_SQLAuthenticatorCertificate## ##MS_AgentSigningCertificate## ##MS_PolicyEventProcessingLogin## ##MS_PolicySigningCertificate## ##MS_PolicyTsqlExecutionLogin## Cliente y servidor de base de datos Por definicin, un cliente y un servidor de base de datos son entidades de seguridad y se pueden proteger. Estas entidades se pueden autenticar mutuamente antes de establecer una conexin de red segura. SQL Server admite el protocolo de autenticacin Kerberos, que define cmo interactan los clientes con un servicio de autenticacin de red. Jerarqua de Permisos El Database Engine (Motor de base de datos) administra un conjunto jerrquico de entidades que se pueden proteger mediante permisos. Estas entidades se conocen como asegurables. Los asegurables ms importantes son los servidores y las bases de datos, aunque se pueden establecer permisos discretos en niveles menores. SQL Server regula las acciones de las entidades de seguridad en los asegurables comprobando que se les han concedido los permisos adecuados. En la ilustracin siguiente se muestran las relaciones entre las jerarquas de permisos del Database Engine (Motor de base de datos).

111

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Separacin de esquemas de usuario El comportamiento de los esquemas cambi en SQL Server 2005. Los esquemas ya no son equivalentes a los usuarios de la base de datos; cada esquema ahora es un espacio de nombres distinto que existe de forma independientemente del usuario de base de datos que lo cre. Es decir, un esquema simplemente es un contenedor de objetos. Cualquier usuario puede ser propietario de un esquema, y esta propiedad es transferible. Comportamiento nuevo La separacin de propiedad de los esquemas tiene consecuencias importantes: La propiedad de los esquemas y de los elementos que se pueden proteger con mbito de esquema es transferible. Es posible mover objetos entre esquemas. Un mismo esquema puede contener objetos que sean propiedad de varios usuarios de base de datos. Varios usuarios de base de datos pueden compartir un mismo esquema predeterminado.

112

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Se pueden administrar los permisos sobre esquemas y sobre elementos que se pueden proteger con mayor precisin que en las versiones anteriores. Cualquier entidad de seguridad de base de datos puede ser propietaria de un esquema. Esto incluye funciones y funciones de aplicacin. Es posible eliminar un usuario de base de datos sin necesidad de eliminar objetos en un esquema correspondiente. El cdigo escrito para las versiones anteriores de SQL Server puede producir resultados incorrectos si el cdigo considera que los esquemas son equivalentes a los usuarios de base de datos. Las vistas de catlogo diseadas para las versiones anteriores de SQL Server pueden producir resultados incorrectos. Esto incluye a sysobjects. Vistas de catlogo nuevas A partir de SQL Server 2005, los esquemas son entidades explcitas reflejadas en metadatos; como resultado, los esquemas solo pueden tener un propietario, pero cada usuario puede poseer muchos esquemas. Esta compleja relacin no se refleja en las tablas del sistema de SQL Server 2000, por lo que SQL Server 2005 introdujo nuevas vistas de catlogo que reflejan los nuevos metadatos con precisin. En la tabla siguiente se muestra la asignacin entre las tablas del sistema de SQL Server 2000 y las vistas de catlogo de SQL Server 2005 equivalentes.

Tabla del sistema de SQL Server 2000 sysusers

Vista de catlogo de SQL Server 2005 y versiones posteriores sys.database_principals sys.schemas

syslogins

sys.server_principals

Con SQL Server 2005, se introdujeron ms de 250 nuevas vistas de catlogo. Se recomienda que utilice las nuevas vistas de catlogo para tener acceso a los metadatos. Las nuevas instrucciones DDL pueden introducir complejidades en los metadatos del sistema que no se reflejan con precisin en las vistas de catlogo antiguas, como sysobjects. En este ejemplo, el identificador de usuario y el nombre del esquema devueltos por sysobjects no estn sincronizados y no reflejan la distincin entre el usuario y el esquema que se introdujo en SQL Server 2005. use tempdb go create login u1 with password = 'Mdfjd$sakj943857l7sdfh##30' create user u1 with default_schema = u1 go grant create table to u1 go create schema sch1 go create schema u1 authorization u1 go execute as user = 'u1' go create table t1(c1 int) go revert go select user_name(uid) , * from sysobjects where name = 't1' goAdvertencia: Es necesario utilizar las nuevas vistas de catlogo en cualquier base de datos en la que se hayan utilizado alguna vez alguna de las instrucciones DDL siguientes: CREATE/ALTER/DROP SCHEMA; CREATE/ALTER/DROP USER; CREATE/ALTER/DROP ROLE; CREATE/ALTER/DROP APPROLE; ALTER AUTHORIZATION. Esquemas predeterminados Para resolver los nombres no completos de elementos protegibles, SQL Server 2000 utiliza la resolucin de nombres para comprobar el esquema propiedad del usuario de base de datos que realiza la llamada, seguido del esquema propiedad de dbo. A partir de SQL Server 2005, cada usuario tiene un esquema predeterminado. Se puede establecer y cambiar el esquema predeterminado mediante la opcin DEFAULT_SCHEMA de CREATE USER o ALTER USER. Si se deja sin definir DEFAULT_SCHEMA, el usuario de base de datos tendr dbo como esquema predeterminado. Roles Para administrar con facilidad los permisos en el servidor, SQL Server proporciona varias funciones, que son las entidades de seguridad que agrupan a otras entidades de seguridad. Las funciones son como los grupos del sistema operativo Microsoft Windows.

113

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Las funciones de nivel de servidor tambin se denominan funciones fijas de servidor porque no se pueden crear nuevas funciones de nivel de servidor. Las funciones de nivel de servidor se aplican a todo el servidor en lo que respecta a su mbito de permisos.

Puede agregar inicios de sesin de SQL Server, cuentas de Windows y grupos de Windows a las funciones de nivel de servidor. Cada miembro de una funcin fija de servidor puede agregar otros inicios de sesin a esa misma funcin.

En la tabla siguiente se muestran las funciones de nivel de servidor y sus capacidades.

Nombre de la funcin de nivel de servidor sysadmin

Descripcin Los miembros de la funcin fija de servidor sysadmin pueden realizar cualquier actividad en el servidor.

serveradmin

Los miembros de la funcin fija de servidor serveradmin pueden cambiar las opciones de configuracin en el servidor y cerrar el servidor.

securityadmin

Los miembros de la funcin fija de servidor securityadmin administran los inicios de sesin y sus propiedades. Administran los permisos de servidor GRANT, DENY y REVOKE. Tambin administran los permisos de base de datos GRANT, DENY y REVOKE. Asimismo, pueden restablecer las contraseas para los inicios de sesin de SQL Server.

processadmin

Los miembros de la funcin fija de servidor processadmin pueden finalizar los procesos que se ejecutan en una instancia de SQL Server.

setupadmin

Los miembros de la funcin fija de servidor setupadmin pueden agregar y quitar los servidores vinculados.

bulkadmin

Los miembros de la funcin fija de servidor bulkadmin pueden ejecutar la instruccin BULK INSERT.

diskadmin

La funcin fija de servidor diskadmin se utiliza para administrar archivos de disco.

dbcreator

Los miembros de la funcin fija de servidor dbcreator pueden crear, modificar, quitar y restaurar cualquier base de datos.

public

Cada inicio de sesin de SQL Server pertenece a la funcin pblica de servidor. Cuando a una entidad de seguridad de servidor no se le han concedido ni denegado permisos especficos para un objeto protegible, el usuario hereda los permisos concedidos a la funcin pblica para ese elemento. Solo asigne los permisos pblicos en cualquier objeto cuando desee que el objeto est disponible para todos los usuarios.

Certificados y claves asimtricas de SQL Server La criptografa de clave pblica (PKI) es un mtodo para mantener la confidencialidad de los mensajes en el que el usuario crea una clave pblica y una clave privada. La clave privada se mantiene en secreto, mientras que la clave pblica se puede distribuir a otras personas. Aunque existe una relacin matemtica entre las claves, no resulta sencillo deducir la clave privada partiendo de la clave pblica. La clave pblica se utiliza para cifrar los datos y la clave privada se utiliza para descifrarlos. Un mensaje que se cifra mediante la clave pblica slo se puede descifrar con la clave privada correcta. Dado que existen dos claves diferentes, estas claves son asimtricas.

Tanto los certificados como las claves asimtricas son mtodos para utilizar el cifrado asimtrico. Los certificados se suelen emplear como contenedores para las claves asimtricas porque pueden contener ms informacin, como las fechas de caducidad y los emisores. No hay ninguna diferencia entre los dos mecanismos en cuanto al algoritmo criptogrfico y tampoco hay diferencia en cuanto al nivel de cifrado si no vara la longitud de la clave. Generalmente, se utiliza un certificado para cifrar otros tipos de claves de cifrado en una base de datos o para firmar mdulos de cdigo.

Los certificados y las claves asimtricas pueden descifrar los datos cifrados por los dems. El cifrado asimtrico se suele utilizar para cifrar una clave simtrica para su almacenamiento en una base de datos.

Una clave pblica no tiene un formato determinado como ocurre con un certificado, y no puede exportarse a un archivo.

Nota: SQL Server contiene caractersticas que permiten a crear y administrar certificados y claves para su uso con el servidor y las bases de datos. SQL Server no se puede utilizar para crear y administrar certificados y claves con otras aplicaciones o en el sistema operativo.

114

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Certificados

Un certificado es un objeto de seguridad firmado digitalmente que contiene una clave pblica (y opcionalmente una privada) para SQL Server. Pueden utilizarse certificados generados externamente o generados por SQL Server.

Nota: Los certificados de SQL Server cumplen con la norma de certificados IETF X.509v3.

Los certificados son tiles debido a que ofrecen la opcin de exportar e importar claves a archivos de certificado X.509. La sintaxis para crear certificados ofrece opciones de creacin para los certificados, como establecer una fecha de caducidad.

Utilizar un certificado en SQL Server Los certificados se pueden utilizar para proteger las conexiones, en la creacin de reflejo de la base de datos, para firmar paquetes y otros objetos, o para cifrar datos o conexiones. En la tabla siguiente se muestran recursos adicionales para los certificados en SQL Server.

Tema CREATE CERTIFICATE (Transact-SQL)

Descripcin Explica el comando para crear certificados.

Certificados y Service Broker

Muestra informacin sobre cmo utilizar los certificados con Service Broker.

Utilizar firmas digitales con los paquetes

Muestra informacin sobre cmo utilizar los certificados para firmar paquetes de software.

Certificados para la seguridad de dilogo

Detalla cmo utilizar los certificados con dilogos.

Usar certificados para la creacin de reflejos de la base de datos

Contiene informacin sobre cmo utilizar los certificados con la creacin de reflejo de la base de datos.

Cifrar conexiones a SQL Server

Explica cmo cifrar las conexiones con SQL Server.

Claves asimtricas

Las claves asimtricas se utilizan para proteger las claves simtricas. Tambin se pueden utilizar para el cifrado de datos limitado y para firmar digitalmente objetos de base de datos. Una clave asimtrica se compone de una clave privada y su correspondiente clave pblica. Las claves asimtricas se pueden importar de archivos de clave de nombre seguro, pero no se pueden exportar. Tampoco tienen opciones de caducidad. Las claves asimtricas no pueden cifrar las conexiones.

Utilizar una clave asimtrica en SQL Server Las claves asimtricas se pueden utilizar para proteger datos o para firmar texto simple. En la tabla siguiente se muestran recursos adicionales para las claves asimtricas en SQL Server. Tema CREATE ASYMMETRIC KEY (Transact-SQL) Descripcin Explica el comando para crear claves asimtricas.

SignByAsymKey (Transact-SQL)

Muestra las opciones para firmar objetos.

Herramientas Microsoft proporciona herramientas y utilidades para generar certificados y archivos de clave de nombre seguro. Estas herramientas proporcionan una mayor flexibilidad en el proceso de generacin de claves que la sintaxis de SQL Server. Puede utilizar estas herramientas para crear claves RSA con longitudes de clave ms complejas y, a continuacin, importarlas en SQL Server. En la tabla siguiente se explica dnde se encuentran estas herramientas.

Herramienta

Finalidad

makecert

Crea certificados.

115

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
sn

Crea nombres seguros para claves simtricas

Seguridad de Integracin CLR El modelo de seguridad de la integracin de SQL Server con .NET Framework Common Language Runtime (CLR) administra y protege el acceso entre los distintos tipos de objetos que se ejecutan dentro de SQL Server, tanto objetos CLR como objetos no CLR. Es posible llamar a estos objetos mediante una instruccin Transact-SQL u otro objeto CLR que se ejecute en el servidor. Las llamadas entre objetos reciben el nombre de vnculos. Los tipos de comprobaciones de seguridad que se realizan en estos objetos dependen de los tipos de vnculos implicados.

El modelo de seguridad de la integracin CLR tiene estos objetivos:

De forma predeterminada, el hecho de ejecutar cdigo de usuario administrado en SQL Server no debera poner en peligro la integridad y la estabilidad de SQL Server. La realizacin de operaciones que podran poner en peligro la estabilidad de SQL Server debera protegerse mediante los permisos de alto nivel pertinentes.

El cdigo de usuario administrado no debera obtener un acceso no autorizado a los datos del usuario ni a ningn otro cdigo de usuario de la base de datos. El cdigo definido por el usuario debera ejecutarse bajo el contexto de seguridad de la sesin del usuario que lo invoc y con los privilegios adecuados para ese contexto de seguridad.

Debera haber controles que restringiesen el acceso del cdigo de usuario a cualquier recurso situado fuera del servidor, y utilizarlo nica y exclusivamente para el acceso a datos local y la realizacin de clculos.

El cdigo definido por el usuario no debera poder obtener un acceso no autorizado a los recursos del sistema por el hecho de ejecutarse en el proceso de SQL Server.

Ahora, SQL Server integra el modelo de seguridad basado en usuario de SQL Server con el modelo de seguridad basado en acceso a cdigo de CLR.

Seguridad de acceso del cdigo de integracin CLR

Common Language Runtime (CLR) admite un modelo de seguridad denominado seguridad de acceso del cdigo para el cdigo administrado. En este modelo, se conceden permisos a los ensamblados basados en la identidad del cdigo.

La directiva de seguridad que determina los permisos que se conceden a los ensamblados se define en tres sitios distintos:

Directiva de equipo: es la directiva activa para todo el cdigo administrado que se ejecuta en el equipo donde est instalado SQL Server.

Directiva de usuario: es la directiva activa para el cdigo administrado que se hospeda en un proceso. Para SQL Server, la directiva de usuario es especfica de la cuenta de Windows en la que se ejecuta el servicio SQL Server.

Directiva de host: es la directiva configurada por el host de CLR (en este caso, SQL Server) que est activa para el cdigo administrado que se ejecuta en ese host.

El mecanismo de seguridad de acceso del cdigo admitido por CLR se basa en el supuesto de que el tiempo de ejecucin puede hospedar cdigo de plena confianza y cdigo de confianza parcial. Los recursos protegidos por la seguridad de acceso del cdigo de CLR suelen empaquetarse mediante interfaces de programacin de aplicaciones que requieren el permiso correspondiente antes de permitir el acceso al recurso. La solicitud de permiso slo se satisface si todos los autores de llamadas (en el nivel de ensamblado) de la pila de llamadas tienen el permiso correspondiente para el recurso.

El conjunto de permisos de seguridad de acceso del cdigo que se conceden al cdigo administrado cuando se ejecuta en SQL Server es la combinacin del conjunto de permisos que conceden los tres niveles de directiva mencionados anteriormente. Aunque SQL Server conceda un conjunto de permisos a un ensamblado cargado en SQL Server, las directivas de nivel de usuario y de equipo pueden restringir an ms el posible conjunto de permisos que se concede al cdigo de usuario.

Conjuntos de permisos de nivel de directiva de host de SQL Server

El conjunto de permisos de seguridad de acceso del cdigo que se concede a los ensamblados mediante el nivel de directiva de host de SQL Server viene determinado por el conjunto de permisos especificado al crear el ensamblado. Existen tres conjuntos de permisos: SAFE, EXTERNAL_ACCESS y UNSAFE (que se especifica con la opcin PERMISSION_SET de CREATE ASSEMBLY (Transact-SQL)).

116

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
SQL Server proporciona un nivel de directiva de seguridad de nivel de host a CLR mientras lo hospeda; esta directiva es un nivel de directiva adicional por debajo de los dos niveles de directiva que siempre estn activos. Esta directiva se establece para cada dominio de aplicacin creado por SQL Server. Esta directiva no est pensada para el dominio de aplicacin predeterminado que estara activo cuando SQL Server crea una instancia de CLR.

La directiva de nivel de host de SQL Server es una combinacin de la directiva fija de SQL Server para ensamblados del sistema y la directiva especificada por el usuario para ensamblados de usuario.

La directiva fija para ensamblados CLR y ensamblados del sistema de SQL Server les concede plena confianza.

La parte especificada por el usuario de la directiva de host de SQL Server depende de que el propietario de los ensamblados especifique uno de los tres depsitos de permisos para cada ensamblado.

SAFE Solo se permite el acceso a datos locales y el clculo interno del ensamblado. SAFE es el conjunto de permisos ms restrictivo. El cdigo que ejecuta un ensamblado con permisos SAFE no puede tener acceso a recursos externos del sistema, como archivos, la red, variables de entorno o el Registro. EXTERNAL_ACCESS Los ensamblados EXTERNAL_ACCESS tienen los mismos permisos que los ensamblados SAFE , con la capacidad adicional de obtener acceso a recursos externos del sistema, como archivos, redes, variables de entorno y el Registro.

UNSAFE UNSAFE permite a los ensamblados un acceso sin lmites a los recursos situados tanto dentro como fuera de SQL Server. El cdigo que se ejecuta desde un ensamblado UNSAFE tambin puede llamar a cdigo no administrado.

A los ensamblados UNSAFE se les concede FullTrust.

Cadenas de Propiedad Cuando varios objetos de base de datos obtienen acceso unos a otros de forma secuencial, la secuencia se denomina cadena. Aunque estas cadenas no existen de manera independiente, cuando SQL Server recorre los eslabones de una cadena, SQL Server evala los permisos de los objetos que la componen de manera distinta a si se estuviese obteniendo acceso a los objetos por separado. Estas diferencias tienen implicaciones importantes en lo que se refiere a administrar la seguridad.

Las cadenas de propiedad permiten administrar el acceso a varios objetos, por ejemplo, a varias tablas, estableciendo permisos en un objeto, como una vista. El encadenamiento de propiedad tambin ofrece una pequea mejora en el rendimiento en los escenarios que permiten la omisin de comprobaciones de permisos.

Cmo se comprueban los permisos en una cadena

Cuando se obtiene acceso a un objeto mediante una cadena, SQL Server primero compara al propietario del objeto con el propietario del objeto de llamada. Este es el eslabn anterior de la cadena. Si ambos objetos tienen el mismo propietario, los permisos del objeto de referencia no se evalan.

Ejemplo de encadenamiento de propiedad

En la siguiente ilustracin, la vista July2003 es propiedad de Mary. Ella le ha concedido a Alex permisos en la vista. l no tiene ningn otro permiso en los objetos de base de datos de esta instancia. Qu ocurre cuando Alex selecciona la vista?

117

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

1. Alex ejecuta SELECT * en la vista July2003. SQL Server comprueba los permisos de la vista y confirma que Alex tiene permiso para seleccionarla.

2. La vista July2003 requiere informacin de la vista SalesXZ. SQL Server comprueba la propiedad de la vista SalesXZ. Debido a que esta vista tiene el mismo propietario (Mary) que la vista que la llama, los permisos de la vista SalesXZ no se comprueban. Se devuelve la informacin requerida.

3. La vista SalesXZ requiere informacin de la vista InvoicesXZ. SQL Server comprueba la propiedad de la vista InvoicesXZ. Debido a que esta vista tiene el mismo propietario que el objeto anterior, los permisos de la vista InvoicesXZ no se comprueban. Se devuelve la informacin requerida. Hasta este momento, todos los elementos de la secuencia tienen un nico propietario (Mary). Esto se denomina cadena de propiedad continua.

4. La vista InvoicesXZ requiere informacin de la vista AcctAgeXZ. SQL Server comprueba la propiedad de la vista AcctAgeXZ. Como el propietario de esta vista es diferente del propietario del objeto anterior (Sam, y no Mary), se recupera toda la informacin sobre permisos de esta vista. Si la vista AcctAgeXZ tiene permisos que permiten que Alex tenga acceso, se devolver informacin.

5. La vista AcctAgeXZ requiere informacin de la tabla ExpenseXZ. SQL Server comprueba la propiedad de la tabla ExpenseXZ. Como el propietario de esta tabla es diferente del propietario del objeto anterior (Joe, y no Sam), se recupera toda la informacin sobre permisos de esta tabla. Si la tabla ExpenseXZ tiene permisos que permiten que Alex tenga acceso, se devuelve informacin.

6. Cuando la vista July2003 intenta recuperar informacin de la tabla ProjectionsXZ, el servidor primero hace comprobaciones para ver si est habilitado el encadenamiento entre las bases de datos Database 1 y Database 2. Si el encadenamiento entre bases de datos est habilitado, el servidor comprobar la propiedad de la tabla ProjectionsXZ. Debido a que esta vista tiene el mismo propietario que la vista de llamada (Mary), los permisos de esta tabla no se comprueban. Se devuelve la informacin solicitada.

Encadenamiento de propiedad entre bases de datos

SQL Server se puede configurar para permitir el encadenamiento de propiedad entre bases de datos especficas o entre todas las bases de datos de una nica instancia de SQL Server. De manera predeterminada, el encadenamiento de propiedad entre bases de datos est deshabilitado y no se debe habilitar a menos que sea especficamente necesario.

118

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Posibles amenazas

Las cadenas de propiedad resultan muy tiles a la hora de administrar los permisos de una base de datos, pero asumen que los propietarios de objetos prevern todas las consecuencias de las decisiones que tomen para conceder permisos de un elemento protegible. En la ilustracin anterior, Mary es la propietaria de la mayora de los objetos subyacentes de la vista July 2003. Debido a que Mary tiene el derecho de hacer que los objetos de los que es propietaria se encuentren accesibles para otros usuarios, SQL Server asume que, si Mary concede el acceso a la primera vista de una cadena, ha tomado la decisin consciente de compartir las vistas y las tablas a las que hace referencia. En la vida real, es posible que esto no sea una suposicin vlida. Las bases de datos de produccin son mucho ms complejas que la de la ilustracin, y los permisos que regulan el acceso a las mismas en muy pocas ocasiones se asignan correctamente a las estructuras administrativas de las organizaciones que las utilizan.

Es importante comprender que los miembros de funciones de la base de datos con amplios privilegios pueden utilizar el encadenamiento de propiedad entre bases de datos para obtener acceso a objetos de bases de datos externas a las suyas. Por ejemplo, si el encadenamiento de propiedad entre bases de datos se habilita entre la base de datos A y la B, un miembro de la funcin fija de base de datos db_owner de cualquiera de las dos bases de datos puede suplantar su identidad y entrar en la otra. El proceso es simple: Diane (un miembro de db_owner en la base de datos A) crea un usuario Stuart en la base de datos A. Stuart ya existe como usuario en la base de datos B. A continuacin, Diane crea un objeto (propiedad de Stuart) en la base de datos A que llama a cualquier objeto propiedad de Stuart de la base de datos B. Como ambos objetos (el que llama y al que llama) pertenecen al mismo usuario, los permisos del objeto de la base de datos B no se comprobarn cuando Diane obtenga acceso a la misma mediante el objeto que ella ha creado.

8 Disear una poltica de seguridad y un plan de auditoria. Considerar : poltica basada en el Framework, funciones de seguridad, sp_helprotect, vistas de catlogo, notificaciones extendidas de eventos

SQL Server proporciona varias caractersticas que puede utilizar para auditar las actividades y los cambios en el sistema de SQL Server. Estas caractersticas permiten a los administradores implementar una estrategia de defensa optimizada para los riesgos de seguridad especficos de su entorno. Este tema proporciona los vnculos que le permiten buscar la informacin que necesita para poder usar la auditora en SQL Server Database Engine (Motor de base de datos de SQL Server).

Descripcin de SQL Server Audit La auditora de una instancia de SQL Server o de una base de datos de SQL Server implica el seguimiento y registro de los eventos que se producen en el sistema. En SQL Server puede utilizar varios mtodos de auditora. A partir de SQL Server 2008 Enterprise, tambin puede configurar la auditora automtica mediante SQL Server Audit. Hay varios niveles de auditora disponibles para SQL Server, dependiendo de los requisitos gubernamentales o los estndares de cada instalacin. SQL Server Audit proporciona las herramientas y los procesos necesarios para habilitar, almacenar y ver auditoras en varios objetos de servidor y de base de datos. Puede registrar grupos de acciones de auditora en el servidor por instancia, as como grupos de acciones o acciones de auditora en la base de datos por base de datos. El evento de auditora se producir cada vez que se encuentre la accin auditable. Componentes de SQL Server Audit Una auditora es la combinacin de varios elementos en un nico paquete para un grupo especfico de acciones de servidor o de base de datos. Los componentes de SQL Server Audit se unen para producir una salida denominada auditora, de la misma manera que una definicin de informe combinada con grficos y elementos de datos da como resultado un informe. SQL Server Audit usa Extended Events para facilitar la creacin de auditoras.

SQL Server Audit El objeto SQL Server Audit recopila una nica instancia de acciones y grupos de acciones en el nivel de servidor o de base de datos para su supervisin. La auditora se realiza en el nivel de instancia de SQL Server. Es posible tener varias auditoras por cada instancia de SQL Server. Cuando se define una auditora, se especifica la ubicacin para los resultados generados. ste es el destino de la auditora. La auditora se crea en un estado deshabilitado y no audita automticamente ninguna accin. Una vez habilitada la auditora, el destino de la auditora recibe los datos de la misma.

Especificacin de auditora de servidor El objeto Especificacin de auditora de servidor pertenece a una auditora. Puede crear una especificacin de auditora de servidor por cada auditora, ya que ambos se crean en el mbito de la instancia de SQL Server. La especificacin de auditora de servidor recopila muchos grupos de acciones de nivel de servidor generados por la caracterstica Extended Events. Puede incluir grupos de acciones de auditora en una especificacin de auditora de servidor. Los grupos de acciones de auditora son grupos predefinidos de acciones, que constituyen eventos atmicos que tienen lugar en el Database Engine (Motor de base de datos). Estas acciones se envan a la auditora, que las registra en el destino.

119

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Especificacin de auditora de base de datos El objeto Especificacin de auditora de base de datos tambin pertenece a una auditora de SQL Server. Puede crear una nica especificacin de auditora de base de datos para cada base de datos de SQL Server y cada auditora. La especificacin de auditora de base de datos recopila acciones de auditora en el nivel de base de datos generadas por la caracterstica Extended Events. Puede agregar grupos de acciones de auditora o eventos de auditora a una especificacin de auditora de base de datos. Los eventos de auditora son las acciones atmicas que puede auditar el motor de SQL Server. Los grupos de acciones de auditora son grupos predefinidos de acciones. Ambos estn en el mbito de la base de datos de SQL Server. Estas acciones se envan a la auditora, que las registra en el destino. No incluya objetos con mbito en el servidor, como las vistas del sistema, en una especificacin de auditora de base de datos.

Destino Los resultados de una auditora se envan a un destino, que puede ser un archivo, el registro de eventos de seguridad de Windows o el registro de eventos de aplicacin de Windows. (La operacin de escribir en el registro de seguridad no est disponible en Windows XP). Los registros se deben revisar y archivar peridicamente para asegurar que el destino tiene espacio suficiente para escribir registros adicionales. Importante: Cualquier usuario autenticado puede leer y escribir en el registro de eventos de aplicacin de Windows. El registro de eventos de aplicacin requiere permisos ms bajos que el registro de eventos de seguridad de Windows, por lo que es menos seguro que ste. La escritura en el registro de seguridad de Windows requiere que se agregue la cuenta del servicio SQL Server a la directiva Generar auditoras de seguridad. De forma predeterminada, el sistema local, el servicio local y el servicio de red forman parte de esta directiva. Este valor se puede configurar utilizando el complemento de directiva de seguridad (secpol.msc). Adems, la directiva de seguridad Auditar el acceso a objetos debe estar habilitada tanto para Correcto como para Error. Este valor se puede configurar utilizando el complemento de directiva de seguridad (secpol.msc). En Windows Vista o Windows Server 2008, puede establecer la directiva Aplicacin generada ms especfica desde la lnea de comandos utilizando el programa de directiva de auditora (AuditPol.exe). Al guardar informacin de auditora en un archivo, para tratar de impedir su alteracin, puede restringir el acceso a la ubicacin del archivo de las maneras siguientes:

La cuenta de servicio de SQL Server debe tener los permisos de lectura y escritura. Normalmente, los administradores de auditora requieren los permisos de lectura y escritura. Entonces, se supone que los administradores de auditora son cuentas de Windows para la administracin de archivos de auditora, por ejemplo para la copia en diversos recursos compartidos, la copia de seguridad, etc. Los lectores de auditora autorizados para leer archivos de auditora deben tener permiso de lectura.

Incluso cuando el Database Engine (Motor de base de datos) est escribiendo en un archivo, otros usuarios de Windows pueden leer el archivo de auditora si tienen permiso. El Database Engine (Motor de base de datos) no crea ningn bloqueo exclusivo que evite las operaciones de lectura. Dado que el Database Engine (Motor de base de datos) puede tener acceso al archivo, los inicios de sesin de SQL Server que tengan el permiso CONTROL SERVER pueden utilizar el Database Engine (Motor de base de datos) para tener acceso a los archivos de auditora. Para registrar a todos los usuarios que estn leyendo el archivo de auditora, defina una auditora en master.sys.fn_get_audit_file. De esta forma se registran los inicios de sesin con permiso CONTROL SERVER que hayan tenido acceso al archivo de auditora a travs de SQL Server. Si un administrador de auditora copia el archivo en otra ubicacin (para archivarlo, etc.), los permisos de las ACL de la nueva ubicacin se deben reducir solo a los siguientes:

Administrador de auditora: lectura/escritura

Lector de auditora: lectura

Es recomendable generar los informes de la auditora desde otra instancia de SQL Server, por ejemplo una instancia de SQL Server Express a la que solo tengan acceso administradores de auditora o lectores de auditora. El uso de otra instancia de Database Engine (Motor de base de datos) para la creacin de informes puede contribuir a evitar que usuarios no autorizados obtengan acceso al registro de la auditora. Puede proporcionar ms proteccin contra el acceso no autorizado mediante el cifrado de la carpeta en que el archivo de la auditora est almacenado. Para ello, puede utilizar el Cifrado de unidad Bitlocker de Windows o el Sistema de archivos de cifrado de Windows.

Informacin general sobre el uso de SQL Server Audit Puede utilizar SQL Server Management Studio o Transact-SQL para definir una auditora. Una vez creada y habilitada la auditora, el destino comenzar a recibir entradas. Puede leer los registros de eventos de Windows mediante la utilidad Visor de eventos en Windows. Para los destinos de archivo, puede utilizar tanto el Visor del archivo de registros en SQL Server Management Studio como la funcin fn_get_audit_file para leer el archivo de destino. El proceso general de creacin y uso de una auditora es el siguiente: 1. Cree una auditora y defina el destino.

120

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
2. Cree una especificacin de auditora de servidor o una especificacin de auditora de base de datos que se asigne a la auditora. Habilite la especificacin de auditora. Habilite la auditora.

3.

4.

Lea los eventos de auditora mediante el Visor de eventos de Windows, el Visor del archivo de registros o la funcin fn_get_audit_file.

Consideraciones Si se produce un error al comenzar la auditora, el servidor no se iniciar. En este caso, se podr iniciar el servidor usando la opcin f en la lnea de comandos. Si un error de auditora hace que el servidor se cierre o no se inicie porque se ha especificado ON_FAILURE=SHUTDOWN para la auditora, se escribir en el registro el evento MSG_AUDIT_FORCED_SHUTDOWN. Dado que el cierre se producir la primera vez que se encuentre este valor, el evento se escribir una vez. Este evento se escribir despus de la aparicin del mensaje del error para la auditora que ha provocado el cierre. El administrador puede hacer caso omiso de los cierres provocados por auditoras iniciando SQL Server en modo de usuario nico mediante la marca m. De esta forma, indicar al sistema que cualquier auditora en la que se haya especificado ON_FAILURE=SHUTDOWN debe ejecutarse en esa sesin como ON_FAILURE=CONTINUE. Cuando se inicia SQL Server usando la marca m, se escribe el mensaje MSG_AUDIT_SHUTDOWN_BYPASSED en el registro de errores.

Adjuntar una base de datos con una auditora definida Si se adjunta una base de datos que tiene una especificacin de auditora y que especifica un GUID que no existe en el servidor, se producir una especificacin de auditora hurfana. Dado que en la instancia del servidor no existe ninguna auditora con ese GUID, no se grabar ningn evento de auditora. Para corregir esta situacin, utilice el comando ALTER DATABASE AUDIT SPECIFICATION para conectar la especificacin de auditora hurfana a una auditora de servidor existente. O bien use el comando CREATE SERVER AUDIT para crear una nueva auditora de servidor con el GUID especificado. Si lo desea, puede adjuntar una base de datos en la que se haya definido una especificacin de auditora a otra edicin de SQL Server que no admita SQL Server Audit, como SQL Server Express, pero no se registrar ningn evento de auditora.

Creacin de reflejo de la base de datos y SQL Server Audit Una base de datos en la que se haya definido una especificacin de auditora de base de datos y que use la creacin de reflejo de la base de datos incluir la especificacin de auditora de base de datos. Para poder trabajar correctamente en la instancia de SQL reflejada, se deben configurar los elementos siguientes:

El servidor reflejado debe tener una auditora con el mismo GUID para permitir que la especificacin de auditora de base de datos escriba registros de auditora. Esto se puede configurar utilizando el comando CREATE AUDIT WITH GUID =<GUID from source Server Audit>. En el caso de los destinos de archivo binario, la cuenta de servicio del servidor reflejado debe tener los permisos adecuados para la ubicacin en la que se escribe la pista de auditora. Si el destino es el registro de eventos de Windows, la directiva de seguridad del equipo en el que est ubicado el servidor reflejado debe permitir el acceso de la cuenta de servicio al registro de eventos de seguridad o de la aplicacin.

SQL Extended Events SQL Server Extended Events (Extended Events) es un sistema de control de eventos general para los sistemas del servidor. La infraestructura de Extended Events admite la correlacin de datos de SQL Server y bajo ciertas condiciones, la correlacin de datos de las aplicaciones de base de datos y sistema operativo. En este ltimo caso, el resultado de Extended Events debe dirigirse al Seguimiento de eventos para Windows (ETW) para correlacionar los datos de eventos con los datos de eventos de la aplicacin o del sistema operativo. Todas las aplicaciones tienen puntos de ejecucin que son tiles tanto dentro como fuera de una aplicacin. Dentro de la aplicacin, puede ponerse en cola el procesamiento asincrnico mediante informacin recopilada durante la ejecucin inicial de una tarea. Fuera de la aplicacin, los puntos de ejecucin proporcionan informacin a las utilidades de supervisin sobre las caractersticas de rendimiento y el comportamiento de la aplicacin supervisada. Extended Events admite la utilizacin de datos de eventos fuera de un proceso. Normalmente, estos datos son utilizados por:

Herramientas de seguimiento, como Monitor de sistema y SQL Trace.

Herramientas de registro, como el registro de eventos de Windows o el registro de errores de SQL Server. Usuarios que administran un producto o desarrollan aplicaciones de un producto.

Caractersticas y diseo de Extended Events Los aspectos clave del diseo de Extended Events son:

El motor de Extended Events es independiente del evento, lo que permite al motor enlazar cualquier evento a cualquier destino ya que el motor no est limitado por el contenido del evento.

121

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Los eventos estn separados de los consumidores de eventos, llamados destinos en Extended Events. Esto significa que cualquier destino puede recibir cualquier evento. Adems, cualquier evento generado puede ser automticamente utilizado por el destino, que puede registrar o proporcionar el contexto adicional del evento. Los eventos son diferentes de la accin que se lleva a cabo cuando se activa un evento. El resultado es que puede asociarse cualquier accin a cualquier evento. Los predicados pueden filtrar de forma dinmica la activacin de eventos, lo que se suma a la flexibilidad de la infraestructura de Extended Events.

Extended Events puede generar datos de eventos de forma sincrnica (y procesar de forma asincrnica dichos datos) lo que proporciona una solucin flexible para el control de eventos. Adems, Extended Events proporciona las caractersticas siguientes:

Un planteamiento unificado para controlar los eventos en todo el sistema de servidor, a la vez que habilita a los usuarios para aislar eventos especficos con el objeto de solucionar problemas. Integracin y compatibilidad con las herramientas ETW existentes. Un mecanismo completamente configurable de control de eventos basado en Transact-SQL.

La capacidad para supervisar dinmicamente los procesos activos, ejerciendo al mismo tiempo el mnimo efecto sobre dichos procesos.

Usar Extended Events con ETW Si desea utilizar Extended Events para poner en correlacin los datos de las aplicaciones de base de datos y del sistema operativo, se recomienda tener conocimientos prcticos de ETW. ETW se puede utilizar junto con Extended Events o como un consumidor de eventos de Extended Events.

Escenarios para el uso de Extended Events Puede usarse Extended Events en una amplia variedad de escenarios de supervisin y solucin de problemas. Los escenarios siguientes muestran algunas de las situaciones donde Extended Events puede proporcionar valiosa informacin para resolver problemas en reas tales como:

Solucionar problemas del recorte del espacio de trabajo.

Solucionar problemas del uso excesivo de CPU. Solucionar problemas de los interbloqueos.

Correlacionar la actividad de solicitudes con los registros ETW de Windows.

Solucionar problemas del recorte del espacio de trabajo Se estn experimentando problemas de rendimiento en el servidor de produccin, lo que provoca que las aplicaciones cliente agoten el tiempo de espera. Estos problemas son transitorios ya que el rendimiento vuelve a niveles normales despus de 10 o 15 minutos. Despus de examinar el registro de errores de SQL Server se encuentran mensajes de error similares a los siguientes: "Se ha paginado una parte significativa del proceso de servidor. Esto puede causar un descenso del rendimiento. Duracin: 300 segundos. Uso actual de la memoria 34%." "La escucha IOCP no est rindiendo." Nota: IOCP significa "puerto de terminacin de E/S". Este puerto da respuesta a las solicitudes de los usuarios a travs de la red. El mensaje indica que el puerto de terminacin ha estado bloqueado durante el ltimo minuto. Se sospecha que SQL Server no responde lo suficientemente rpido a la presin de memoria en el servidor. Al comprobar la memoria con Administrador de tareas se constata que la memoria disponible en el servidor es ms que suficiente. Se intenta conectar a la base de datos de SQL Server Management Studio, pero se agota el tiempo de espera de conexin. Puede conectarse al servidor con el comando SQLCMD 0 A ejecutado desde el smbolo del sistema de Windows. De este modo se abre una sesin en la conexin de administrador dedicada. Se decide utilizar Extended Events. Se crea una sesin de Extended Events que:

Agrega eventos para la indicacin de la memoria de sistema y el cambio de la memoria del servidor total.

122

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Dirige el resultado a ETW. Este resultado se escribir en un archivo que se crea en una unidad de disco no utilizada por el archivo de paginacin ni por los archivos de base de datos de SQL Server.

En el smbolo del sistema de Windows se ejecuta una instruccin para habilitar un seguimiento ETW del kernel de Windows con todos los eventos de memoria. Se ejecutan durante varios minutos ambos seguimientos y, a continuacin, se cierra la sesin de Extended Events y el seguimiento del kernel de Windows. Se utiliza tracerpt.exe para correlacionar el seguimiento de Windows y el seguimiento ETW de SQL Server. Se busca un evento que indique que se estableci una notificacin baja de la memoria de sistema, pero no se encuentra. En cambio, se ve una gran cantidad de errores de pgina de todos los procesos del servidor. Al examinar los eventos justo antes de la paginacin, se encuentra con que se haban reducido los espacios de trabajo de todos los procesos en respuesta a una solicitud de asignacin de memoria de un controlador. Solucionar problemas del uso excesivo de CPU Se est investigando el uso excesivo de CPU del sistema de produccin. Se utilizan varias Vistas de administracin dinmica (DMV) para determinar si el uso de CPU puede atribuirse a las consultas ejecutadas en el sistema. El anlisis indica que la mayora de las consultas son consultas ad hoc de usuario. La informacin obtenida de los DMV no es suficiente para diagnosticar el problema. Se crea una sesin de Extended Events que:

Habilita eventos para la terminacin de instrucciones con predicados que especifican el umbral de CPU.

Tiene una accin para recopilar nicamente el plan de consulta cuando se activa el evento. Escribe todos los datos recopilados en un archivo. Este archivo est en una unidad que no contiene ningn archivo de registro ni de base de datos.

Despus de iniciar la sesin de Extended Events, se examina el resultado y se puede determinar que la causa del problema de CPU es una conversin de tipo de datos entre dos tablas frecuentemente combinadas. Solucionar problemas de los interbloqueos Se estn recibiendo informes por parte de los usuarios que indican que ciertas aplicaciones devuelven errores de interbloqueo. Para maximizar la efectividad para solucionar este problema, se decide centrar el anlisis en los interbloqueos ms frecuentes. Se crea una sesin de Extended Events que:

Configura el seguimiento de eventos de interbloqueo para la sesin. Especifica un destino que agregar en funcin de un identificador para el interbloqueo.

Se ejecuta la sesin de Extended Events y despus de notificar los interbloqueos adicionales se puede obtener informacin agregada del interbloqueo junto con el grfico de interbloqueo XML completo para cada fuente. Con esta informacin se podrn sealar los interbloqueos ms comunes y buscar una solucin. Correlacionar la actividad de solicitudes con los registros ETW de Windows Se est solucionando el problema de una ralentizacin de aplicaciones en el servidor de produccin y se est cerca de encontrar la causa de los grandes tiempos de lectura del disco. Se crea una sesin de Extended Events que:

Agrega las lecturas del disco como un evento de sesin. Enva los datos recopilados a ETW.

Despus de iniciar la sesin de Extended Events, se ejecuta un seguimiento ETW del kernel de Windows. Al cabo de 10 minutos, se detienen ambas sesiones. Se utiliza tracerpt.exe para combinar el seguimiento de Windows y el seguimiento ETW de SQL. A partir de este seguimiento combinado es posible correlacionar y realizar el seguimiento de las solicitudes de lectura de SQL Server al kernel de Windows. Este anlisis indica un gran retraso antes de que la solicitud de E/S se devuelva a SQL Server. Con esta informacin se puede determinar de forma concluyente que el problema de E/S reside en la ruta de acceso fsica de E/S.

Propiedades del servidor (pgina Seguridad) Utilice esta pgina para ver o modificar las opciones de seguridad del servidor. Autenticacin de servidor Modo de autenticacin de Windows Utiliza la autenticacin de Windows para validar las conexiones intentadas. Si la contrasea de sa est en blanco cuando se cambia el modo de seguridad, se solicita al usuario que escriba una contrasea de sa. Importante: La Autenticacin de Windows es mucho ms segura que la Autenticacin de SQL Server. Siempre que sea posible, utilice la autenticacin de Windows.

123

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Modo de autenticacin de Windows y SQL Server Utiliza autenticacin de modo mixto para comprobar las conexiones intentadas, a efectos de compatibilidad con versiones anteriores de SQL Server. Si la contrasea de sa est en blanco cuando se cambia el modo de seguridad, se solicita al usuario que escriba una contrasea de sa. Nota: El cambio de la configuracin de seguridad requiere reiniciar el servicio. Cuando se cambia la Autenticacin de servidor al modo de autenticacin de Windows y SQL Server, la cuenta SA no se habilita automticamente. Para utilizar la cuenta SA, ejecute ALTER LOGIN con la opcin ENABLE.

Auditora de inicio de sesin Ninguno Desactiva la auditora de inicio de sesin. Slo inicios de sesin errneos Slo realiza la auditora de inicios de sesin incorrectos. Slo inicios de sesin correctos Slo realiza la auditora de inicios de sesin correctos. Inicios de sesin correctos y errneos Realiza la auditora de todos los inicios de sesin. Nota: El cambio del nivel de auditora requiere reiniciar el servicio.

Cuenta de proxy del servidor Habilitar cuenta de proxy del servidor Permite que xp_cmdshell utilice una cuenta. Las cuentas de proxy permiten la suplantacin de inicios de sesin, funciones de servidor y funciones de base de datos cuando se ejecuta un comando del sistema operativo. Advertencia: El inicio de sesin que utiliza la cuenta de proxy del servidor debe tener asignados slo los privilegios mnimos necesarios para realizar el trabajo propuesto. Un usuario malicioso puede utilizar los privilegios excesivos en la cuenta de proxy para comprometer la seguridad del sistema. Cuenta de proxy Especifique la cuenta de proxy que se utiliza. Contrasea Especifique la contrasea de la cuenta de proxy. Opciones

Habilitar C2 audit tracing Audita todos los intentos de obtener acceso a instrucciones y objetos, y registra dichos intentos en un archivo del directorio \MSSQL\Data para las instancias predeterminadas de SQL Server, o del directorio \MSSQL$nombreDeInstancia\Data para las instancias con nombre de SQL Server.. Encadenamiento de propiedad entre bases de datos Seleccione esta opcin para permitir que la base de datos pueda ser el origen o destino de una cadena de propiedad entre bases de datos. Opcin de modo auditora c2 El modo auditora C2 puede configurarse mediante SQL Server Management Studio o con la opcin c2 audit mode en sp_configure. Al seleccionar esta opcin, el servidor registrar tanto los intentos sin xito como los intentos con xito de acceso a instrucciones y objetos. Esta informacin puede servirle de ayuda para perfilar la actividad del sistema y realizar un seguimiento de las posibles infracciones de las directivas de seguridad. Nota:

124

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

El estndar de seguridad C2 se ha sustituido por Common Criteria.

Archivo de registro de auditora Los datos del modo auditora C2 se guardan en un archivo en el directorio de datos predeterminado de la instancia. Si el tamao del archivo de registro de auditora supera el lmite de 200 megabytes (MB), SQL Server crear un archivo nuevo, cerrar el antiguo y escribir todos los registros de auditora nuevos en el nuevo archivo. Este proceso continuar hasta que el directorio de datos de auditora se llene o la funcin de auditora se desactive. Para determinar el estado de un seguimiento de C2, consulte la vista de catlogo sys.traces. Importante: El modo auditora C2 guarda una gran cantidad de informacin de eventos en el archivo de registro, por lo que puede crecer rpidamente. Si el directorio de datos en el que se guardan los registros se queda sin espacio, SQL Server se cerrar automticamente. Si la auditora se ha configurado para iniciarse automticamente, deber reiniciar la instancia con el indicador -f (que omite la auditora) o liberar ms espacio de disco para el registro de auditora. Permisos Debe pertenecer a la funcin fija de servidor sysadmin.

Ejemplo

El ejemplo siguiente activa el modo auditora C2. sp_configure 'show advanced options', 1 ; GO RECONFIGURE ; GO sp_configure 'c2 audit mode', 1 ; GO RECONFIGURE ; GO Auditora de seguridad (categora de eventos, Analizador de SQL Server) La categora de eventos Auditora de seguridad contiene eventos de auditora de seguridad. Tema Descripcin

Audit Add DB User (clase de evento)

Indica que se ha agregado o quitado un inicio de sesin como usuario de base de datos en una base de datos.

Audit Add Login to Server Role (clase de Indica que se ha agregado o quitado un inicio de sesin de una funcin fija de servidor. evento)

Audit Add Member to DB Role (clase de Indica que se ha agregado o quitado un inicio de sesin de una funcin. evento)

Audit Add Role (clase de evento)

Indica que se ha agregado o quitado una funcin de base de datos de una base de datos.

Audit Addlogin (clase de evento)

Indica que se ha agregado o quitado un inicio de sesin.

Audit App Role Change Password (clase Indica que se ha cambiado una contrasea para una funcin de aplicacin. de evento)

Audit Backup/Restore (clase de evento)

Indica que se ha enviado una instruccin de copia de seguridad o restauracin.

Audit

Broker

Conversation

(clase

de Informa de los mensajes de auditora relacionados con la seguridad de dilogo de Service Broker.

evento)

Clase de eventos Audit Broker Login

Informa de los mensajes de auditora relacionados con la seguridad de transporte de Service Broker.

125

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Audit Change Audit (clase de evento)

Indica que se ha realizado una modificacin de traza de auditora.

Audit Change Database Owner (clase de Indica que se han comprobado los permisos para cambiar el propietario de una base de evento) datos.

Audit Database Management (clase de Indica que se ha creado, modificado o quitado una base de datos. evento)

Audit Database Mirroring Login (clase de Informa de los mensajes de auditora relacionados con la seguridad en el transporte para la evento) creacin del reflejo de una base de datos.

Audit Database Object Access (clase de Indica que se ha obtenido acceso a un objeto de base de datos, como un esquema. evento)

Audit Database Object GDR (clase de Indica que se ha producido un evento GDR para un objeto de base de datos. evento)

Audit

Database

Object

Management Indica que se ha ejecutado una instruccin CREATE, ALTER o DROP en un objeto de base de datos.

(clase de evento)

Audit Database Object Take Ownership Indica que ha habido un cambio de propietario para objetos en el mbito de una base de (clase de evento) datos.

Audit

Database

Operation

(clase

de Indica que se han realizado varias operaciones como la notificacin de una consulta de punto de comprobacin o suscripcin.

evento)

Audit Database Principal Impersonation Indica que se ha producido una suplantacin en el mbito de la base de datos. (clase de evento)

Audit Database Principal Management Indica que se han creado, modificado o quitado entidades de seguridad en una base de (clase de evento) datos.

Audit Database Scope GDR (clase de Indica que un usuario de Microsoft SQL Server ha emitido una instruccin GRANT, REVOKE o evento) DENY para un permiso de instruccin.

Audit DBCC (clase de evento)

Indica que se ha emitido un comando DBCC.

Audit Login Change Password (clase de Indica que un usuario ha cambiado su contrasea de inicio de sesin en SQL Server. evento)

Audit Login Change Property (clase de Indica que se ha usado sp_defaultdb, sp_defaultlanguage o ALTER LOGIN para modificar evento) una propiedad de un inicio de sesin.

Audit Login (clase de evento)

Indica que un usuario ha iniciado una sesin de SQL Server.

Audit Login Failed (clase de evento)

Indica que un usuario intent iniciar una sesin de SQL Server, pero no lo consigui.

Audit Login GDR (clase de evento)

Indica que se ha agregado o quitado un derecho de inicio de sesin de Microsoft Windows.

Audit Logout (clase de evento)

Indica que un usuario ha finalizado una sesin de SQL Server.

Audit Object Derived Permission (clase Indica que se ha emitido una instruccin CREATE, ALTER o DROP para un objeto. de evento)

Audit Schema Object Access (clase de Indica que se ha utilizado un permiso de objeto (como SELECT). evento)

Audit Schema Object GDR (clase de Indica que un usuario de SQL Server ha emitido una instruccin GRANT, REVOKE o DENY evento) para un permiso de objeto de esquema.

126

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Audit Schema Object Management (clase Indica que se ha creado, modificado o quitado un objeto de servidor. de evento)

Audit Schema Object Take Ownership Indica que se han comprobado los permisos para cambiar el propietario de un objeto de (clase de evento) esquema.

Audit

Server

Alter

Trace

(clase

de Indica que se ha comprobado el permiso ALTER TRACE.

evento)

Audit

Server

Object

GDR

(clase

de Indica que se ha producido un evento GDR para un objeto de esquema.

evento)

Audit Server Object Management (clase Indica que se ha producido un evento CREATE, ALTER o DROP para un objeto de servidor. de evento)

Audit

Server

Object

Take

Ownership Indica que ha cambiado el propietario de un objeto de servidor.

(clase de evento)

Audit Server Operation (clase de evento)

Indica que se han realizado operaciones de auditora en el servidor.

Audit

Server

Principal

Impersonation Indica que se ha producido una suplantacin en el mbito del servidor.

(clase de evento)

Audit

Server

Principal

Management Indica que se ha emitido una instruccin CREATE, ALTER o DROP para una entidad se seguridad de servidor.

(clase de evento)

Audit

Server

Scope

GDR

(clase

de Indica que se ha producido un evento GDR para permisos de servidor.

evento)

Audit Server Starts and Stops (clase de Indica que se ha modificado el estado de servicio de SQL Server. evento)

Audit Statement Permission (clase de Indica que se ha utilizado un permiso de instruccin. evento)

Introduccin a Traza de SQL Se pueden realizar trazas de SQL para ejecutar funciones de auditora Desencadenadores DDL Se pueden utilizar desencadenadores de SQL para ejecutar funciones de auditora Registros de auditora de SQL Server La caracterstica SQL Server Audit le permite auditar grupos de eventos y eventos de nivel de servidor y de base de datos. Las auditoras constan de cero o ms elementos de accin de auditora que se registran en un destino de auditora. Este destino de auditora puede ser un archivo binario, el registro de eventos de aplicacin de Windows o el registro de eventos de seguridad de Windows. Los registros que se envan al destino pueden contener los elementos descritos en la tabla siguiente. Nombre de columna Descripcin Tipo Siempre est disponible

event_time

Fecha y hora en la que se desencadena la accin datetime2 auditable.

sequence_no

Realiza un seguimiento de la secuencia de registros de int un nico registro de auditora que era demasiado grande para caber en el bfer de escritura destinado a las auditoras.

action_id

Id. de la accin

char(4)

127

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

succeeded

Indica si la accin que desencaden el evento se ha bit 1 = Correcto, 0 S llevado a cabo correctamente = Error

permission_bitmask

Si procede, muestra los permisos que se han concedido, bigint denegado o revocado

No

is_column_permission

Indicador que especifica un permiso de nivel de columna

bit 1 = Verdadero, No 0 = Falso

session_id

Identificador de la sesin en la que se ha producido el int evento.

server_principal_id

Identificador del contexto de inicio de sesin en el que se int realiza la accin.

database_principal_id

Identificador del contexto de usuario de la base de datos int en el que se realiza la accin.

No

object_id

El identificador principal de la entidad en la que se int produjo la auditora. Esto incluye:

No


target_server_principal_id

objetos de servidor

bases de datos

objetos de base de datos

objetos de esquema

Entidad de seguridad del servidor a la que se aplica la int accin auditable.

target_database_principal_id

Entidad de seguridad de la base de datos a la que se int aplica la accin auditable.

No

class_type

Tipo de entidad auditable en la que se produce la char(2) auditora.

session_server_principal_name

Entidad de seguridad del servidor para la sesin.

sysname

server_principal_name

Inicio de sesin actual.

sysname

server_principal_sid

SID del inicio de sesin actual.

varbinary

database_principal_name

Usuario actual.

sysname

No

target_server_principal_name

Inicio de sesin de destino de la accin.

sysname

No

target_server_principal_sid

SID del inicio de sesin de destino.

varbinary

No

target_database_principal_name Usuario de destino de la accin.

sysname

No

server_instance_name

Nombre de la instancia de servidor estndar.

donde se ha nvarchar(120)

producido la auditora. Usa el formato equipo\instancia

database_name

Contexto de base de datos en el que se produjo la sysname accin.

No

128

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

schema_name

El contexto del esquema en el que se produjo la accin.

sysname

No

object_name

El nombre de la entidad en la que se produjo la auditora. sysname Esto incluye:

No


statement

objetos de servidor

bases de datos

objetos de base de datos

objetos de esquema

Instruccin TSQL (si existe)

Instruccin TSQL (si existe)

nvarchar(4000)

No

additional_information

Cualquier

informacin

adicional

sobre

el

evento, nvarchar(4000)

No

almacenada como XML.

Observaciones Algunas acciones no rellenan el valor de una columna porque es posible que no sea aplicable a la accin. SQL Server Audit almacena 4.000 caracteres de datos en los campos de carcter de un registro de auditora. Si los valores additional_information y statement devueltos por una accin auditable contienen ms de 4.000 caracteres, la columna sequence_no se usa para escribir varios registros en el informe de auditora para que una nica accin de auditora registre estos datos. El proceso es el siguiente:

La columna statement se divide en 4.000 caracteres.

SQL Server Audit escribe como primera fila del registro de auditora los datos parciales. Los dems campos se duplican en cada fila. Se incrementa el valor sequence_no.

Este proceso se repite hasta que se registran todos los datos.

Puede conectar los datos leyendo las filas secuencialmente mediante el valor sequence_no, y las columnas event_Time, action_id y session_id para identificar la accin.

Especificaciones de auditora de base de datos (pgina General)

Use esta pgina para crear, cambiar o ver una especificacin de auditora de base de datos. Nombre El nombre de la especificacin de auditora de base de datos. Se genera automticamente al crear una nueva especificacin de auditora de servidor, pero se puede modificar. Auditora de servidor Nombre de una auditora existente. Tipo de accin de auditora Especifica los grupos de acciones de auditora y las acciones de auditora en el nivel de base de datos que se desean capturar. Nombre de objeto Nombre del objeto que se va a auditar. Este valor solo est disponible para las acciones de auditora, no se aplica a los grupos de auditora. Abre el cuadro de dilogo Seleccionar objetos para buscar y seleccionar un objeto disponible, basndose en el Tipo de accin de auditora especificado. Esquema de objeto Muestra el esquema para el Nombre de objeto especificado. Nombre de la entidad

129

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
La cuenta por la que se va filtrar la auditora para el objeto que se va a auditar. Abre el cuadro de dilogo Seleccionar objetos para buscar y seleccionar un objeto disponible, basndose en el Nombre de objeto especificado. Notas Para poder crear una especificacin de auditora de base de datos, debe existir una auditora de servidor, ya que es necesario enlazar dicha especificacin con la auditora. Las especificaciones de auditora de base de datos residen en la base de datos en la que se crearon, con la excepcin de la base de datos del sistema tempdb. Cuando cree o modifique una especificacin de auditora de base de datos en una base de datos de usuario, no incluya acciones de auditora en objetos del mbito de servidor, como las vistas del sistema. Si los objetos del mbito de servidor estn incluidos, se crear la auditora. Sin embargo, los objetos del mbito de servidor no estn incluidos y no se devolver ningn error. Para auditar objetos del mbito de servidor, utilice una especificacin de auditora de base de datos en la base de datos maestra.

Permisos Los usuarios con el permiso ALTER ANY DATABASE AUDIT SPECIFICATION pueden crear las especificaciones de auditora de base de datos y enlazarlas a cualquier auditora. 9 Disear una estrategia de encriptacin. Considerar: Encriptacin Transparente de Datos, encriptar datos protegidos, administracin de certificados y claves , stream El cifrado es el proceso consistente en ofuscar los datos mediante el uso de una clave o contrasea. Esto puede hacer que los datos sean intiles sin la clave o contrasea de descifrado correspondiente. El cifrado no resuelve los problemas de control de acceso. Sin embargo, mejora la seguridad debido a que limita la prdida de datos, incluso si se superan los controles de acceso. Por ejemplo, si el equipo host de base de datos no est configurado correctamente y un usuario malintencionado obtiene datos confidenciales, esa informacin robada podra resultar inservible si est cifrada. Puede utilizar el cifrado en SQL Server para las conexiones, los datos y los procedimientos almacenados. Importante: Aunque el cifrado es una valiosa herramienta para ayudar a garantizar la seguridad, no est indicado para todos los datos o conexiones. Cuando decida si debe implementar el cifrado, debe tener en cuenta el modo en que los usuarios obtendrn acceso a los datos. Si los usuarios tienen acceso a los datos a travs de una red pblica, podra ser necesario el cifrado de datos para aumentar la seguridad. Sin embargo, si todo el acceso se realiza dentro de una configuracin de intranet segura, el cifrado podra no ser necesario. Cualquier uso del cifrado tambin debera incluir una estrategia de mantenimiento para las contraseas, las claves y los certificados. Jerarqua de cifrado SQL Server cifra los datos con una infraestructura de cifrado jerrquico y administracin de claves. Cada capa cifra la capa inferior utilizando una combinacin de certificados, claves asimtricas y claves simtricas. Las claves asimtricas y las claves simtricas pueden estar almacenadas fuera de SQL Server en un mdulo de Administracin extensible de claves (EKM). La siguiente ilustracin muestra que cada nivel de la jerarqua de cifrado cifra el nivel que tiene por debajo y muestra las configuraciones de cifrado ms comunes. El acceso al principio de la jerarqua se suele proteger mediante una contrasea.

130

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Tenga presente los conceptos siguientes:

Para obtener el mximo rendimiento, cifre los datos utilizando claves simtricas en lugar de certificados o claves asimtricas.

Las claves maestras de base de datos se protegen mediante la clave maestra de servicio. El programa de instalacin de SQL Server crea la clave maestra de servicio, que se cifra con la API de proteccin de datos de Windows (DPAPI). Hay otras jerarquas de cifrado que apilan niveles adicionales.

El mdulo de Administracin extensible de claves (EKM) mantiene las claves simtricas o asimtricas fuera de SQL Server. El Cifrado de datos transparente (TDE) debe utilizar una clave simtrica denominada clave de cifrado de base de datos que se protege bien mediante un certificado protegido por la clave maestra de base de datos de la base de datos maestra o bien mediante una clave asimtrica almacenada en una EKM. La clave maestra de servicio y todas las claves maestras de base de datos son claves simtricas.

La ilustracin siguiente muestra la misma informacin de una manera alternativa.

131

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Este diagrama muestra los conceptos adicionales siguientes:

En esta ilustracin, las flechas indican las jerarquas de cifrado comunes.

Las claves simtricas y asimtricas de EKM pueden proteger el acceso a las claves simtricas y asimtricas almacenadas en SQL Server. La lnea de puntos asociada a la EKM indica que las claves de la EKM podran reemplazar a las claves simtricas y asimtricas que se almacenan en SQL Server.

Mecanismos de cifrado SQL Server le ofrece los mecanismos siguientes para el cifrado:

132

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Funciones de Transact-SQL Claves asimtricas

Claves simtricas Certificados

Cifrado de datos transparente

Funciones de Transact-SQL Los elementos individuales se pueden cifrar a medida que se insertan o actualizan utilizando las funciones de Transact-SQL. ENCRYPTBYPASSPHRASE (Transact-SQL) y DECRYPTBYPASSPHRASE (Transact-SQL).

Certificados Un certificado de clave pblica, normalmente denominado slo certificado, es una instruccin firmada digitalmente que enlaza el valor de una clave pblica con la identidad de la persona, dispositivo o servicio que tiene la clave privada correspondiente. Las entidades emisoras de certificados (CA) son las encargadas de emitir y firmar los certificados. La entidad que recibe un certificado de una CA es el sujeto de ese certificado. Por lo general, los certificados contienen la siguiente informacin.

La clave pblica del sujeto.

La informacin que identifica al sujeto, como el nombre y la direccin de correo electrnico. El periodo de validez. Es decir, el periodo de tiempo durante el que el certificado se considera vlido. Un certificado slo es vlido durante el periodo de tiempo que se especifica en el mismo; todos los certificados contienen una fecha Vlido desde y otra Vlido hasta. Estas fechas establecen los lmites del periodo de validez. Cuando el periodo de validez de un certificado ha transcurrido, es necesario que el sujeto del certificado caducado solicite uno nuevo. Informacin de identificador del emisor. La firma digital del emisor. Esta firma da fe de la validez de las obligaciones entre la clave pblica y la informacin de identificador del sujeto. (El proceso de firmar digitalmente la informacin conlleva transformar la informacin, as como cierta informacin privada que conserva el remitente, en una etiqueta denominada firma.)

Una de las principales ventajas de los certificados es que liberan a los hosts de la necesidad de establecer contraseas para sujetos individuales. En su lugar, el host simplemente establece la confianza en un emisor de certificados, que a continuacin puede firmar un nmero ilimitado de certificados. Cuando un host, por ejemplo, un servidor Web seguro, designa a un emisor como entidad emisora raz de confianza, el host implcitamente confa en las directivas que el emisor ha utilizado para establecer las obligaciones de los certificados que emite. En efecto, el host confa en que el emisor ha comprobado la identidad del sujeto del certificado. Un host designa a un emisor como entidad emisora raz de confianza presentando el certificado autofirmado del emisor, que contiene la clave pblica de ste, en el almacn de certificados de la entidad emisora de certificados raz de confianza del equipo host. Las entidades emisoras de certificados intermedias o subordinadas slo son de confianza si tienen una ruta vlida de certificacin procedente de una entidad emisora de certificados raz. El emisor puede revocar un certificado antes de que caduque. La revocacin cancela las obligaciones que una clave pblica tiene con una identidad que se exprese en el certificado. Cada emisor mantiene una lista de revocacin de certificados que los programas pueden utilizar cuando estn comprobando la validez de un certificado determinado. Los certificados autofirmados que se crean con SQL Server cumplen el estndar X.509 y son compatibles con los campos de X.509 v1.

Claves asimtricas Una clave asimtrica se compone de una clave privada y su correspondiente clave pblica. Cada clave puede descifrar los datos que cifra la otra. El cifrado y descifrado asimtricos consumen una cantidad de recursos relativamente elevada, pero proporcionan un nivel de seguridad superior al del cifrado simtrico. Una clave asimtrica se puede utilizar para cifrar una clave simtrica para almacenar en una base de datos.

Claves simtricas Una clave simtrica es una clave que se utiliza para el cifrado y el descifrado. El cifrado y el descifrado con una clave simtrica son ms rpidos y adecuados para usarlos de forma rutinaria con datos confidenciales de una base de datos.

Cifrado de datos transparente El Cifrado de datos transparente (TDE) es un caso especial de cifrado que usa una clave simtrica. TDE cifra una base de datos completa utilizando la clave simtrica denominada clave de cifrado de base de datos. Otras claves o certificados que se protegen bien mediante la clave maestra de base de datos o bien mediante una clave asimtrica almacenadas en un mdulo EKM protegen la clave de cifrado de Base de Datos

133

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Autenticadores Un autenticador le ayudar a evitar la sustitucin del valor completo de los campos cifrados. Por ejemplo, considere la siguiente tabla de datos de nminas: Employee_ID Standard_Title Base_Pay

345

Copy Room Assistant

Fskj%7^edhn00

697

Chief Financial Officer

M0x8900f56543

694

Data Entry Supervisor

Cvc97824%^34f

Sin romper el cifrado, un usuario no autorizado puede obtener informacin importante del contexto en el que se almacena el texto cifrado. Puesto que al Chief Financial Officer se le paga ms que al Copy Room Assistant, el valor cifrado como M0x8900f56543 debe ser mayor que el valor cifrado como Fskj%7^edhn00. En este caso, cualquier usuario con el permiso ALTER en la tabla puede conceder un aumento al Copy Room Assistant al sustituir los datos de su campo Base_Pay por una copia de los datos almacenados en el campo Base_Pay del Chief Financial Officer. Este ataque de sustitucin del valor completo omite el cifrado completamente. Estos ataques de sustitucin de valor completo se pueden combatir agregando informacin contextual al texto sin formato antes de cifrarlo. Esta informacin contextual se usa para verificar que el texto sin formato no se ha modificado. Si se especifica un parmetro de autenticador al cifrar los datos, se necesita el mismo autenticador para descifrar dichos datos. En el momento del cifrado, se cifra un hash del autenticador junto con el texto sin formato. En el momento del descifrado, el mismo autenticador se debe pasar a la funcin de descifrado. Si no coinciden, se producir un error durante el descifrado. Dicho error indicar que el valor ha sido modificado despus de su cifrado. Se recomienda utilizar la clave principal de la tabla donde se almacenar el resultado como autenticador.

Elegir un algoritmo de cifrado El cifrado es una de las medidas defensivas con que cuenta cualquier administrador que desee proteger una instancia de SQL Server. Los algoritmos de cifrado definen transformaciones de datos que los usuarios no autorizados no pueden revertir con facilidad. SQL Server permite a los administradores y los programadores elegir entre varios algoritmos, incluidos DES, Triple DES, TRIPLE_DES_3KEY, RC2, RC4, RC4 de 128 bits, DESX, AES de 128 bits, AES de 192 bits y AES de 256 bits. Ningn algoritmo nico resulta idneo para todas las situaciones. Adems, ofrecer informacin detallada sobre las ventajas de cada uno queda fuera del mbito de los Libros en pantalla de SQL Server. No obstante, se aplican los siguientes principios generales:

El cifrado seguro suele consumir ms recursos de la CPU que un cifrado menos seguro. Las claves largas suelen producir un cifrado ms seguro que las claves cortas.

El cifrado asimtrico es ms seguro que el simtrico con la misma longitud de clave, pero es relativamente lento. Los cifrados en bloque con claves largas son ms seguros que los cifrados en secuencia.

Las contraseas largas y complejas son ms seguras que las contraseas cortas. Si cifra una gran cantidad de datos, debe cifrar los datos con una clave simtrica y cifrar la clave simtrica con una clave asimtrica. Los datos cifrados no se pueden comprimir, pero los datos comprimidos se pueden cifrar. Si utiliza compresin, debe comprimir los datos antes de cifrarlos.

Importante: El uso repetido de la misma RC4 o RC4_128 KEY_GUID en bloques diferentes de datos producir la misma clave RC4 porque SQL Server no proporciona un valor de salt automticamente. El uso repetido de la misma clave RC4 es un error conocido que producir un cifrado muy poco seguro. Por consiguiente, hemos dejado de utilizar las palabras clave RC4_128 y RC4. Esta caracterstica se quitar en una versin futura de Microsoft SQL Server. No utilice esta caracterstica en nuevos trabajos de desarrollo y modifique lo antes posible las aplicaciones que actualmente la utilizan.

Clarificacin con respecto a los algoritmos DES:

134

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
DESX se denomin incorrectamente. Las claves simtricas creadas con ALGORITHM = DESX realmente utilizan el cifrado TRIPLE DES con una clave de 192 bits. No se proporciona el algoritmo DESX. Esta caracterstica se quitar en una versin futura de Microsoft SQL Server. Evite utilizar esta caracterstica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. Las claves simtricas creadas con ALGORITHM = TRIPLE_DES_3KEY utilizan TRIPLE DES con una clave de 192 bits.

Las claves simtricas creadas con ALGORITHM = TRIPLE_DES utilizan TRIPLE DES con una clave de 128 bits.

Descripcin del Cifrado de datos transparente (TDE) Puede tomar varias precauciones para proteger la base de datos, como disear un sistema seguro, cifrar los datos confidenciales e instalar un firewall alrededor de los servidores de bases de datos. Sin embargo, si se diera el caso de un robo de medios fsicos (como unidades de disco o cintas de copia de seguridad), un usuario malintencionado slo tendra que restaurar o adjuntar la base de datos y examinar los datos. Una solucin consiste en cifrar los datos confidenciales en la base de datos y usar un certificado para proteger las claves que se utilizan para cifrarlos. Esto evita que utilice los datos cualquiera que carezca de las claves, pero este tipo de proteccin debe planearse de antemano. El cifrado de datos transparente (TDE) realiza el cifrado y descifrado de E/S en tiempo real de los datos y los archivos de registro. El cifrado utiliza una clave de cifrado de la base de datos (DEK), que est almacenada en el registro de arranque de la base de datos para que est disponible durante la recuperacin. La DEK es una clave simtrica protegida utilizando un certificado almacenado en la base de datos maestra del servidor o una clave asimtrica protegida por un mdulo EKM. TDE protege los datos "en reposo", es decir, los archivos de datos y de registro. Ofrece la posibilidad de cumplir muchas leyes, normativas y directrices establecidas en diversos sectores. Tambin permite a los desarrolladores de software cifrar los datos mediante algoritmos de cifrado AES y 3DES sin cambiar las aplicaciones existentes. Importante: TDE no proporciona cifrado para los canales de comunicaciones. Una vez protegida, la base de datos puede restaurarse utilizando el certificado correcto. Nota: Al habilitar TDE, debera hacer inmediatamente una copia de seguridad del certificado y la clave privada asociada al certificado. Si el certificado no est disponible en algn momento o si debe restaurar o adjuntar la base de datos en otro servidor, debe tener copias de seguridad del certificado y la clave privada o no podr abrir la base de datos. El cifrado del certificado o asimtrico se debera conservar aun cuando TDE deje de estar habilitado en la base de datos. Aunque la base de datos no se cifre, la clave de cifrado de la base de datos se puede conservar en la base de datos y puede que sea necesario el acceso a la misma para algunas operaciones. El cifrado del archivo de base de datos se realiza en el nivel de pgina. Las pginas de una base de datos cifrada se cifran antes de escribirse en el disco y se descifran cuando se leen en la memoria. TDE no aumenta el tamao de la base de datos cifrada. En la siguiente ilustracin se muestra la arquitectura del cifrado TDE:

135

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Utilizar el cifrado de datos transparente Para usar TDE, siga estos pasos.

Cree una clave maestra Cree u obtenga un certificado protegido por la clave maestra

Cree una clave de cifrado de base de datos y protjala con el certificado Configure la base de datos para que utilice el cifrado

En el ejemplo siguiente se muestra cmo cifrar y descifrar la base de datos AdventureWorks mediante un certificado instalado en el servidor denominado MyServerCert. USE master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>'; go CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate' go USE AdventureWorks GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE MyServerCert GO ALTER DATABASE AdventureWorks SET ENCRYPTION ON GO

136

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
SQL Server programa las operaciones de cifrado y descifrado en subprocesos que se ejecutan en segundo plano. Puede ver el estado de estas operaciones mediante las vistas de catlogo y las vistas de administracin dinmica de la lista que se muestra ms adelante en este tema. Advertencia: Los archivos de copia de seguridad de las bases de datos que tienen habilitado TDE tambin se cifran mediante la clave de cifrado de la base de datos. Como consecuencia, al restaurar estas copias de seguridad debe estar disponible el certificado que protege la clave de cifrado de la base de datos. Esto significa que, adems de hacer copias de seguridad de la base de datos, tiene que asegurarse de que mantiene copias de seguridad de los certificados del servidor para evitar la prdida de datos. Si el certificado deja de estar disponible, perder los datos.

Comandos y funciones Para que puedan ser aceptados por las instrucciones siguientes, los certificados de TDE deben cifrarse con la clave maestra de la base de datos. Si solamente se cifran con una contrasea, las instrucciones los rechazarn como sistemas de cifrado. Importante: Si los certificados se protegen mediante contrasea una vez usados para TDE, la base de datos dejar de ser accesible despus de un reinicio. En la tabla siguiente se proporcionan vnculos y explicaciones de los comandos y funciones de TDE. Comando o funcin Finalidad

CREATE DATABASE ENCRYPTION KEY (Transact-SQL)

Crea una clave que se utiliza para cifrar una base de datos.

ALTER DATABASE ENCRYPTION KEY (Transact-SQL)

Cambia la clave que se utiliza para cifrar una base de datos.

DROP DATABASE ENCRYPTION KEY (Transact-SQL)

Quita la clave que se utiliz para cifrar una base de datos.

Opciones de ALTER DATABASE SET (Transact-SQL)

Explica la opcin ALTER DATABASE que se utiliza para habilitar TDE.

Vistas de catlogo y vistas de administracin dinmica

En la tabla siguiente se muestran las vistas de catlogo y las vistas de administracin dinmica de TDE. Vista de catlogo administracin dinmica o vista de Finalidad

sys.databases (Transact-SQL)

Vista de catlogo que muestra informacin sobre las bases de datos.

sys.certificates (Transact-SQL)

Vista de catlogo que muestra los certificados de una base de datos.

sys.dm_database_encryption_keys (Transact- Vista de administracin dinmica que proporciona informacin sobre las claves de cifrado SQL) utilizadas en una base de datos y el estado de cifrado de una base de datos.

Permisos Cada una de las caractersticas y comandos de TDE tiene sus propios requisitos de permisos, que se describen en las tablas mostradas anteriormente. Para ver los metadatos relacionados con TDE, se requiere el permiso VIEW DEFINITION en el certificado.

Consideraciones Mientras se realiza el examen del proceso de nuevo cifrado para una operacin de cifrado de base de datos, las operaciones de mantenimiento de la base de datos estn deshabilitadas. Puede configurar la base de datos en modo de usuario nico si desea realizar la operacin de mantenimiento. Puede encontrar el estado del cifrado de la base de datos utilizando la vista de administracin dinmica sys.dm_database_encryption_keys. En TDE, se cifran todos los archivos y grupos de archivos de la base de datos. Si algn grupo de archivos de una base de datos est marcado como READ ONLY, se producir un error en la operacin de cifrado de la base de datos.

137

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Si una base de datos se utiliza en una creacin de reflejo de la base de datos o en un trasvase de registros, se cifrarn ambas bases de datos. Las transacciones del registro se cifrarn cuando se enven entre ellas. Importante: Los ndices de texto completo nuevos se cifrarn cuando una base de datos est configurada para cifrarse. Los ndices de texto completo creados previamente se importarn durante la actualizacin y usarn TDE una vez que los datos se hayan cargado en SQL Server. La habilitacin de un ndice de texto completo en una columna puede ocasionar que los datos de dicha columna se escriban en texto sin formato en el disco durante el examen para la indizacin de texto completo. No se recomienda crear un ndice de texto completo para datos confidenciales cifrados. Los datos cifrados se comprimen mucho menos que los datos no cifrados equivalentes. Si se usa TDE para cifrar una base de datos, la compresin de copia de seguridad no podr comprimir significativamente el almacenamiento de copia de seguridad. Por consiguiente, no se recomienda usar conjuntamente TDE y la compresin de copia de seguridad.

Restricciones No estn permitidas las operaciones siguientes durante el cifrado inicial de la base de datos, el cambio clave o el descifrado de una base de datos:

Quitar un archivo de un grupo de archivos de la base de datos. Quitar la base de datos.

Desconectar la base de datos. Separar la base de datos.

Pasar la base de datos o el grupo de archivos al estado READ ONLY.

No estn permitidas las operaciones siguientes durante la ejecucin de instrucciones CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY o ALTER DATABASE...SET ENCRYPTION.

Quitar un archivo de un grupo de archivos de la base de datos.

Quitar la base de datos. Desconectar la base de datos.

Separar la base de datos. Pasar la base de datos o el grupo de archivos al estado READ ONLY.

Usar un comando ALTER DATABASE. Iniciar una copia de seguridad de base de datos o de archivos de base de datos.

Iniciar una restauracin de base de datos o de archivos de base de datos. Crear una instantnea.

Las operaciones o condiciones siguientes impedirn la ejecucin de las instrucciones CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY o ALTER DATABASE...SET ENCRYPTION.

La base de datos o cualquiera de sus grupos de archivos son de slo lectura. Se est ejecutando un comando ALTER DATABASE.

Se est ejecutando cualquier tipo de copia de seguridad de los datos. La base de datos est desconectada o en restauracin.

Se est realizando una instantnea. Se estn realizando tareas de mantenimiento en la base de datos.

138

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
El cifrado de datos transparente y los registros de transacciones Al habilitar una base de datos para utilizar TDE, se "pone a cero" la parte restante del registro de transacciones virtual para exigir el registro de transacciones virtual siguiente. Esto garantiza que no quede ningn texto sin cifrar en los registros de transacciones una vez configurada la base de datos para el cifrado. Puede encontrar el estado del cifrado del archivo de registro en la columna encryption_state de la vista sys.dm_database_encryption_keys, como en este ejemplo: USE AdventureWorks; GO /* The value 3 represents an encrypted state on the database and transaction logs. */ SELECT * FROM sys.dm_database_encryption_keys WHERE encryption_state = 3; GO

Todos los datos escritos en el registro de transacciones antes de cambiar la clave de cifrado de la base de datos se cifrarn mediante la clave de cifrado anterior de la base de datos. Cuando una clave de cifrado de base de datos se modifica dos veces, debe realizarse una copia de seguridad de registros para que la clave de cifrado de base de datos pueda volver a modificarse.

El cifrado de datos transparente y la base de datos del sistema tempdb La base de datos del sistema tempdb se cifrar si alguna otra base de datos de la instancia de SQL Server se cifra mediante TDE. Esto podra tener un efecto en el rendimiento de las bases de datos no cifradas de la misma instancia de SQL Server.

Cifrado de datos transparente y replicacin La replicacin no replica automticamente los datos de una base de datos habilitada para TDE en un formato cifrado. Debe habilitar por separado TDE si desea proteger las bases de datos de suscriptor y de distribucin. La replicacin de instantneas, as como la distribucin inicial de datos para la replicacin transaccional y de mezcla, puede almacenar los datos en archivos intermedios sin cifrar; por ejemplo, los archivos bcp. Durante la replicacin transaccional o de mezcla, el cifrado puede habilitarse para proteger el canal de comunicaciones.

Cifrado de datos transparente y FILESTREAM DATA Los datos FILESTREAM no se cifran ni siquiera cuando se habilita TDE.

SQL Server y claves de cifrado de base de datos (motor de base de datos) SQL Server utiliza claves de cifrado para proteger los datos, las credenciales y la informacin de conexin que se almacena en una base de datos servidor. SQL Server tiene dos tipos de claves: simtricas y asimtricas. Las claves simtricas utilizan la misma contrasea para cifrar y descifrar los datos. Las claves asimtricas utilizan una contrasea para cifrar los datos (denominada clave pblica) y otra para descifrar los datos (denominada clave privada). En SQL Server, las claves de cifrado incluyen una combinacin de claves pblicas, privadas y simtricas que se utilizan para proteger la informacin confidencial. La clave simtrica se crea durante la inicializacin de SQL Server al iniciar por primera vez la instancia de SQL Server. SQL Server utiliza la clave para cifrar los datos confidenciales que se almacenan en SQL Server. El sistema operativo crea las claves pblicas y privadas, y stas se utilizan para proteger la clave simtrica. Para cada instancia de SQL Server que almacena datos confidenciales en una base de datos se crea un par de claves pblica y privada.

Aplicaciones para las claves de SQL Server y las claves de las bases de datos

SQL Server tiene dos aplicaciones principales para las claves: una clave maestra de servicio (SMK) generada en y para una instancia de SQL Server, y una clave maestra de base de datos (DMK) utilizada para una base de datos. La clave maestra de servicio se genera automticamente la primera vez que se inicia la instancia de SQL Server y se utiliza para cifrar una contrasea de servidor vinculado, las credenciales y la clave maestra de base de datos. La SMK se cifra mediante la clave del equipo local y la API de proteccin de datos de Windows (DPAPI). La DPAPI utiliza una clave derivada de las credenciales de Windows de la cuenta de servicio de SQL Server y de las credenciales del equipo. La clave maestra de servicio slo puede descifrarse con la cuenta de servicio en la que se cre o con una entidad de seguridad que tenga acceso a las credenciales del equipo. La clave maestra de base de datos es una clave simtrica que se utiliza para proteger las claves privadas de certificados y las claves asimtricas presentes en la base de datos. Tambin se puede utilizar para cifrar los datos, pero sus limitaciones de longitud hacen que sea ms prctico utilizar una clave simtrica. Al crearla, la clave maestra se cifra mediante el algoritmo Triple DES y una contrasea proporcionada por el usuario. Para habilitar el descifrado automtico de la clave maestra, se cifra una copia de la clave mediante la SMK. Esta copia se almacena en la base de datos donde se utiliza y en la base de datos del sistema master. La copia de la DMK almacenada en la base de datos del sistema master se actualiza automticamente siempre que se modifica la DMK. Sin embargo, este comportamiento predeterminado se puede cambiar con la opcin DROP ENCRYPTION BY SERVICE MASTER KEY de la instruccin ALTER MASTER KEY. Para abrir una DMK que no se haya cifrado con la clave maestra de servicio, debe utilizarse la instruccin OPEN MASTER KEY y una contrasea.

Administrar las claves de SQL Server y las claves de las bases de datos

139

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
La administracin de las claves de cifrado consiste en crear nuevas claves de base de datos, crear una copia de seguridad de las claves del servidor y de las bases de datos, y saber cundo y cmo se deben restaurar, eliminar o cambiar dichas claves. Para administrar las claves simtricas, puede utilizar las herramientas incluidas en SQL Server para hacer lo siguiente:

Crear una copia de seguridad de las claves del servidor y de las claves de las bases de datos que se pueda utilizar para recuperar una instalacin de un servidor de informes, o como parte de una migracin planeada. Restaurar una clave guardada previamente en una base de datos. Esto permite el acceso de una nueva instancia del servidor a datos existentes que no cifr originalmente. Eliminar los datos cifrados en una base de datos, en el caso poco probable de que ya no se tenga acceso a datos cifrados. Volver a crear claves y volver a cifrar datos en el caso poco probable de que la clave est en unas circunstancias comprometidas. Como prctica recomendada de seguridad, se deberan volver a crear las claves peridicamente (por ejemplo, cada cierto nmero de meses) para proteger el servidor de ataques que traten de descifrar las claves. Agregar o quitar una instancia del servidor de una implementacin escalada de este servidor en la que varios servidores comparten una sola base de datos y la clave que proporciona el cifrado reversible para dicha base de datos.

Informacin de seguridad importante Para tener acceso a los objetos protegidos por la clave maestra de servicio, es necesaria la cuenta de servicio de SQL Server que se utiliz para crear la clave o la cuenta del equipo. Es decir, el equipo vinculado al sistema donde se cre la clave. Puede cambiar la cuenta de servicio de SQL Server o la cuenta del equipo sin perder el acceso a la clave. Sin embargo, si cambia ambas, perder el acceso a la clave maestra de servicio. Si pierde el acceso a la clave maestra de servicio sin uno de estos dos elementos, no podr descifrar los datos y los objetos cifrados mediante la clave original. Las conexiones protegidas con la clave maestra de servicio no se pueden restaurar sin dicha clave. El acceso a los objetos y los datos protegidos con la clave maestra de base de datos nicamente requiere la contrasea que se utiliza para proteger la clave. Advertencia: Si pierde todo tipo de acceso a las claves descritas anteriormente, tambin perder el acceso a los objetos, las conexiones y los datos protegidos mediante esas claves. Puede restaurar la clave maestra de servicio, tal y como se describe en los vnculos que se muestran a continuacin, o puede regresar al sistema de cifrado original para recuperar el acceso. No hay ninguna "puerta trasera" para recuperar el acceso.

Temas de procedimientos de cifrado Cmo cifrar una columna de datos

En este tema se muestran dos maneras de cifrar una columna de datos por medio del cifrado simtrico. En los ejemplos siguientes, el original del texto simple permanece en la tabla sin modificar. Esto conserva la funcionalidad de la base de datos de ejemplo AdventureWorks y le permite experimentar con la funcionalidad que se demuestra en estos ejemplos. En un entorno de implementacin slo se almacenan los datos cifrados. Nota: No se admite el cifrado que usa AES en Windows XP o Windows Server 2000. Antes de ejecutar estos ejemplos de cdigo en un sistema que no admita AES, se debe cambiar "AES_256" a "DES". Ejemplos

A. Cifrado simtrico simple En el ejemplo de cdigo siguiente se muestra cmo cifrar una columna utilizando una clave simtrica. USE AdventureWorks; GO --If there is no master key, create one now. IF NOT EXISTS (SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101) CREATE MASTER KEY ENCRYPTION BY PASSWORD = '23987hxJKL969#ghf0%94467GRkjg5k3fd117r$$#1946kcj$n44nhdlj' GO CREATE CERTIFICATE HumanResources037 WITH SUBJECT = 'Employee Social Security Numbers'; GO CREATE SYMMETRIC KEY SSN_Key_01 WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE HumanResources037; GO

140

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
USE [AdventureWorks]; GO -- Create a column in which to store the encrypted data. ALTER TABLE HumanResources.Employee ADD EncryptedNationalIDNumber varbinary(128); GO -- Open the symmetric key with which to encrypt the data. OPEN SYMMETRIC KEY SSN_Key_01 DECRYPTION BY CERTIFICATE HumanResources037; -- Encrypt the value in column NationalIDNumber with symmetric -- key SSN_Key_01. Save the result in column EncryptedNationalIDNumber. UPDATE HumanResources.Employee SET EncryptedNationalIDNumber = EncryptByKey(Key_GUID('SSN_Key_01'), NationalIDNumber); GO -- Verify the encryption. -- First, open the symmetric key with which to decrypt the data. OPEN SYMMETRIC KEY SSN_Key_01 DECRYPTION BY CERTIFICATE HumanResources037; GO -- Now list the original ID, the encrypted ID, and the -- decrypted ciphertext. If the decryption worked, the original -- and the decrypted ID will match. SELECT NationalIDNumber, EncryptedNationalIDNumber AS 'Encrypted ID Number', CONVERT(nvarchar, DecryptByKey(EncryptedNationalIDNumber)) AS 'Decrypted ID Number' FROM HumanResources.Employee; GO B. Cifrado simtrico con un autenticador En el ejemplo de cdigo siguiente se muestra cmo cifrar una columna mediante un cifrado simtrico que incluye un autenticador. USE AdventureWorks; --If there is no master key, create one now. IF NOT EXISTS (SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101) CREATE MASTER KEY ENCRYPTION BY PASSWORD = '23987hxJKL95QYV4369#ghf0%lekjg5k3fd117r$$#1946kcj$n44ncjhdlj' GO CREATE CERTIFICATE Sales09 WITH SUBJECT = 'Customer Credit Card Numbers'; GO CREATE SYMMETRIC KEY CreditCards_Key11 WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE Sales09; GO -- Create a column in which to store the encrypted data. ALTER TABLE Sales.CreditCard ADD CardNumber_Encrypted varbinary(128); GO -- Open the symmetric key with which to encrypt the data. OPEN SYMMETRIC KEY CreditCards_Key11 DECRYPTION BY CERTIFICATE Sales09; -- Encrypt the value in column CardNumber using the -- symmetric key CreditCards_Key11. -- Save the result in column CardNumber_Encrypted. UPDATE Sales.CreditCard SET CardNumber_Encrypted = EncryptByKey(Key_GUID('CreditCards_Key11') , CardNumber, 1, HashBytes('SHA1', CONVERT( varbinary , CreditCardID))); GO -- Verify the encryption. -- First, open the symmetric key with which to decrypt the data. OPEN SYMMETRIC KEY CreditCards_Key11 DECRYPTION BY CERTIFICATE Sales09; GO -- Now list the original card number, the encrypted card number, -- and the decrypted ciphertext. If the decryption worked, -- the original number will match the decrypted number. SELECT CardNumber, CardNumber_Encrypted AS 'Encrypted card number', CONVERT(nvarchar, DecryptByKey(CardNumber_Encrypted, 1 , HashBytes('SHA1', CONVERT(varbinary, CreditCardID)))) AS 'Decrypted card number' FROM Sales.CreditCard; 10 Disear una solucin de failover clustering. Considerar: grupo de recurso de cluster, consideraciones de parametrizacin de cluster, nmero de nodos, cuentas de servicio

141

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Introduccin a la agrupacin en clsteres de conmutacin por error de SQL Server 2008 Los clsteres de conmutacin por error de SQL Server proporcionan alta disponibilidad para una instancia completa de SQL Server. Los clsteres de conmutacin por error de SQL Server se crean sobre los de Windows Server. Para crear un clster de conmutacin por error de SQL Server, primero debe crear el clster de conmutacin por error de Windows Server subyacente. Un clster de conmutacin por error de SQL Server, denominado tambin instancia del clster de conmutacin por error, consta de los siguientes elementos:

Uno o varios nodos de clsteres de conmutacin por error de Windows Server Un grupo de recursos del clster dedicado para el clster de conmutacin por error de SQL Server que contiene lo siguiente:

o o o

Nombre de red para tener acceso al clster de conmutacin por error de SQL Server

Direcciones IP

Discos compartidos utilizados para la base de datos y el almacenamiento de registros de SQL Server

Archivos DLL de recursos que controlan el comportamiento de conmutacin por error de SQL Server

Claves del Registro con punto de comprobacin que se mantienen sincronizadas automticamente en los nodos de clsteres de conmutacin por error

Una instancia del clster de conmutacin por error de SQL Server aparece en la red como una nica instancia de SQL Server en un solo equipo. Internamente, solamente uno de los nodos es propietario del grupo de recursos del clster cada vez y es el encargado de atender todas las solicitudes del cliente de esa instancia del clster de conmutacin por error. En caso de se produzca un error (errores de hardware, errores del sistema operativo o errores de aplicacin o servicio) o se realice una actualizacin planeada, la propiedad del grupo se mueve a otro nodo del clster de conmutacin por error. Este proceso se denomina conmutacin por error. Gracias a la funcionalidad de clster de conmutacin por error de Windows Server, el clster de conmutacin por error de SQL Server proporciona alta disponibilidad a travs de la redundancia en el nivel de instancia. La instalacin de clsteres de conmutacin por error SQL Server 2008 utiliza una nueva arquitectura y proporciona funciones que no eran posibles con las versiones anteriores. A continuacin, se indican las diferencias principales de las versiones anteriores de SQL Server con respecto a la funcionalidad del clster de conmutacin por error:

No hay ninguna ejecucin remota en los nodos de clsteres.

o o

Para instalar, actualizar o mantener un clster de conmutacin por error de SQL Server en varios nodos, debe ejecutar el programa de instalacin de SQL Server por separado en cada nodo del clster de conmutacin por error.

Para agregar un nodo a un clster de conmutacin por error de SQL Server existente, debe ejecutar el programa de instalacin de SQL Server en el nodo que se va a agregar y elegir la funcin Agregar nodo. No ejecute el programa de instalacin en el nodo propietario del clster para agregar otro nodo.

Nota: La funcin Agregar nodo aumenta la disponibilidad del clster de conmutacin por error existente sin producir tiempos de inactividad.

No hay ninguna opcin para desinstalar el clster de conmutacin por error de SQL Server. Para desinstalar un clster de conmutacin por error de SQL Server, ejecute el programa de instalacin con la funcin Quitar nodo en cada uno de los nodos de clsteres de conmutacin que se va a quitar.

Para quitar un nodo de un clster de conmutacin por error de SQL Server, debe ejecutar el programa de instalacin de SQL Server en el nodo que se va a quitar y elegir la funcin Quitar nodo. No ejecute el programa de instalacin en el nodo propietario para quitar otro nodo.

o o

Si ejecuta la funcin Quitar nodo en el nodo propietario del clster y hay otros nodos en el clster de conmutacin por error, se mover la conmutacin por error a otro nodo del clster antes de que se quite el nodo.

Si ejecuta la funcin Quitar nodo en el nodo propietario del clster y no hay ningn otro nodo en el clster de conmutacin por error, se quitar la instancia completa del clster de conmutacin por error de SQL Server.

Hay dos opciones de instalacin:

o o

Instalacin del clster de conmutacin por error integrada con Agregar nodo

Instalacin de Advanced/Enterprise

142

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Compatibilidad con actualizaciones graduales y revisiones con un tiempo de inactividad mnimo. Confiabilidad de instalacin mejorada.

Alineacin con las caractersticas de clster de conmutacin por error de Windows Server 2008:

o o o o o
Nota:

Compatibilidad con hardware e ISCSI heterogneos sin necesidad de hardware certificado.

La herramienta de validacin de clsteres de Windows Server 2008 se utiliza para validar el clster de Windows y bloquear la instalacin de SQL Server cuando se detectan problemas.

Los SID de servicio eliminan el requisito de tener que utilizar grupos de dominio en Windows Server 2008.

Compatibilidad con IPV6 y DHCP.

Clsteres de conmutacin por error de hasta 16 nodos.

SQL Server solamente permite dos nodos para SQL Server Standard.

Sin alineacin con dependencias OR.

Opciones de instalacin de clsteres de conmutacin por error de SQL Server Opcin 1: instalacin integrada con Agregar nodo La instalacin de clsteres de conmutacin por error de SQL Server integrada consta de dos pasos: 1. Cree y configure una instancia de clster de conmutacin por error de SQL Server de un nico nodo. Cuando termine de configurar correctamente el nodo, dispondr de una instancia del clster de conmutacin por error totalmente funcional. En ese momento no dispondr de alta disponibilidad porque solamente hay un nodo en el clster de conmutacin por error. En cada nodo que se va a agregar al clster de conmutacin por error de SQL Server, ejecute el programa de instalacin con la funcin Agregar nodo para agregar ese nodo.

2.

Opcin 2: instalacin de Advanced/Enterprise La instalacin de clsteres de conmutacin por error de SQL Server Advanced/Enterprise consta de dos pasos: 1. En cada nodo que va a formar parte del clster de conmutacin por error de SQL Server, ejecute el programa de instalacin con la funcin Preparar clster de conmutacin por error. En este paso se preparan los nodos para su agrupacin en clsteres, pero al final de este paso no hay ninguna instancia de SQL Server operativa. Una vez preparados los nodos para su agrupacin en clsteres, ejecute el programa de instalacin en el nodo propietario del disco compartido con la funcin Completar clster de conmutacin por error. En este paso se configura y se completa la instancia del clster de conmutacin por error. Al final de este paso, dispondr de una instancia del clster de conmutacin por error de SQL Server operativa. Nota: Ambas opciones de instalacin permiten la instalacin de un clster de conmutacin por error de SQL Server de varios nodos. La funcin Agregar nodo se puede utilizar para agregar otros nodos en ambas opciones una vez creado un clster de conmutacin por error de SQL Server. Importante: Observe que la letra de unidad del sistema operativo de las ubicaciones de instalacin de SQL Server debe coincidir en todos los nodos agregados al clster de conmutacin por error de SQL Server.

2.

Cundo utilizar la agrupacin en clsteres de conmutacin por error Utilice la agrupacin en clsteres de conmutacin por error para:

Administrar un clster de conmutacin por error desde cualquier nodo de la configuracin agrupada de SQL Server. Permitir que un nodo de clsteres de conmutacin por error conmute por error a otro nodo de la configuracin de clster de conmutacin por error.

143

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Configurar Analysis Services para la agrupacin en clsteres de conmutacin por error. Ejecutar bsquedas de texto completo mediante el servicio Microsoft Search con agrupacin en clsteres de conmutacin por error.

Instalar una agrupacin en clsteres de conmutacin por error Para utilizar la agrupacin en clsteres de conmutacin por error, debe seguir pasos de instalacin especficos. Para instalar, configurar y mantener un clster de conmutacin por error de SQL Server, utilice el programa de instalacin de SQL Server. Utilice el programa de instalacin de SQL Server en un clster de conmutacin por error para lo siguiente:

Instalar SQL Server para crear un clster de conmutacin por error. Antes de instalar la agrupacin en clsteres de conmutacin por error, debe asegurarse de que el sistema cumple con los requisitos mnimos y configurar los Servicios de Cluster Server de Microsoft (MSCS). Todos los nodos de un clster de conmutacin por error deben ser de la misma plataforma, de 32 bits o de 64 bits, y deben ejecutar la misma edicin y versin del sistema operativo. Adems, las versiones de 64 bits de SQL Server deben instalarse en hardware de 64 bits en el que se ejecuten versiones de 64 bits de los sistemas operativos de Windows. No hay compatibilidad con WOW64 para la agrupacin en clsteres de conmutacin por error en esta versin. Agregar o quitar nodos de una configuracin de clster de conmutacin por error sin influir en los dems nodos de clsteres

Especificar varias direcciones IP para cada instancia de clster de conmutacin por error. Puede especificar varias direcciones IP para cada servidor, lo que le permite utilizar todas las subredes IP de la red que hay disponibles. SQL Server tiene un lmite de una direccin IP por red.

Compatibilidad con agrupacin en clsteres de conmutacin por error En SQL Server, el nmero de nodos admitidos para la agrupacin en clsteres de conmutacin por error depende del sistema operativo y la edicin de SQL Server.

Antes de instalar una agrupacin en clsteres de conmutacin por error Antes de instalar un clster de conmutacin por error de SQL Server, debe seleccionar el hardware y el sistema operativo en el que se ejecutar SQL Server. Tambin debe configurar el Servicio de clster de Microsoft (MSCS), as como revisar la red, la seguridad y las consideraciones relativas al resto del software que se ejecutar en el clster de conmutacin por error. Antes de comenzar el proceso de instalacin del clster de conmutacin por error, revise los siguientes elementos.

Comprobar la solucin de hardware

Si la solucin de clster incluye nodos de clster geogrficamente dispersos, deben comprobarse elementos adicionales como la latencia de red y la compatibilidad con discos compartidos. La solucin completa debe figurar en la lista de compatibilidad de hardware de clsteres geogrficos. Las configuraciones SAN tambin se admiten en las ediciones Advanced Server y Datacenter Server de Windows 2000. En la categora "Cluster/Multi-cluster Device" de Windows Catalog and Hardware Compatibility List se enumera el conjunto de dispositivos de almacenamiento habilitados para SAN que se han comprobado y se admiten como unidades de almacenamiento SAN con varios clsteres MSCS conectados. Mediante la correspondencia de los dispositivos de esta lista con las configuraciones de clster completas definidas en la categora "cluster" de Windows Catalog and Hardware Compatibility List, es posible implementar un conjunto de servidores y clsteres de Windows en una red SAN con dispositivos de almacenamiento compartidos de una forma admitida por Microsoft. Si implementa un clster de conmutacin por error de SQL Server en componentes de tecnologa de interfaz para pequeos equipos de Internet (iSCSI), se recomienda hacerlo con precaucin. Considere la posibilidad de utilizar el uso compartido de recursos de disco de qurum. En un clster de servidores, el disco de qurum contiene una copia maestra de la configuracin del clster y se usa tambin como "desempate" si se produce un error en toda la comunicacin de red entre los nodos del clster. En funcin del tipo de clster de servidores que se implemente, el disco de qurum puede ser o no un disco fsico en la matriz de discos del clster compartidos. Aunque es conveniente reservar un disco del clster completo para su uso como disco de qurum, se puede permitir el acceso de los recursos distintos del recurso de qurum al disco de qurum. Sin embargo, al hacer que el recurso de qurum comparta el mismo disco con otros recursos, es obligatorio elegir entre dos alternativas no deseables. Debe configurar el recurso para que un potencial error no afecte al grupo, o bien debe permitir que los errores de otros recursos afecten al grupo. En el primer caso, se pierde compatibilidad con la conmutacin por error con el recurso; en el segundo, el recurso de qurum realiza la conmutacin por error junto con el resto del grupo que contiene el recurso de qurum y el recurso con error. Como consecuencia, todo el clster queda sin conexin durante el tiempo que el grupo tarde en realizar la conmutacin por error.. Para instalar un clster de conmutacin por error de SQL Server cuando los archivos de instalacin de origen y el clster estn en dominios diferentes, copie los archivos de instalacin en el dominio actual disponible para el clster de conmutacin por error de SQL Server.

144

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Comprobar la configuracin del sistema operativo

Asegrese de que el sistema operativo est correctamente instalado y diseado para admitir la agrupacin en clsteres de conmutacin por error. En la tabla siguiente se muestra una lista de las ediciones de SQL Server y de los sistemas operativos que las admiten. Nota: SQL Server 2008 Evaluation tiene los mismos requisitos de hardware y software que SQL Server 2008 Enterprise. Edicin de SQL Server Windows Server 2003 Microsoft Windows 2003 Microsoft Windows Microsoft Windows 2008

Enterprise SP2

Datacenter Server SP2

2008 Enterprise

Datacenter Server

SQL

Server

2008 S

Enterprise (64 bits) IA641

SQL

Server

2008 S

Enterprise (64 bits) x641

SQL

Server

2008 S

Enterprise (32 bits)

SQL

Server

2008 S

Developer (64 bits) IA641

SQL

Server

2008 S

Developer (64 bits) x641

SQL

Server

Developer S

(32 bits)

SQL

Server

2008 S

Standard (64 bits) IA641

SQL

Server

2008 S

Standard (64 bits) x641

SQL bits)

Server

2008

(32 S

1Los clsteres de SQL Server 2008 no se admiten en modo WOW. Esto afecta a las actualizaciones de SQL Server 2000 y SQL Server 2005 instaladas originalmente en WOW. La nica opcin de actualizacin en estos casos es instalar la nueva versin en paralelo y migrar. Para SQL Server 2000 IA64, no se admite la actualizacin en contexto.

Habilite el proveedor de servicios de cifrado de Windows (CSP) en Windows Server 2003. Si el servicio del CSP est detenido o deshabilitado en cualquier nodo de clsteres, el programa de instalacin de SQL Server genera un cuadro de dilogo de requisito de Windows. SQL Server admite puntos de montaje; las instalaciones en clster de SQL Server estn limitadas al nmero de letras de unidad disponibles. En el supuesto de que solo utilice una letra de unidad para el sistema operativo y las dems letras estn disponibles como unidades de clster normales o unidades de clster que hospedan puntos de montaje, existe un lmite mximo de 25 instancias de SQL Server por clster de conmutacin por error. Un volumen montado, o punto de montaje, le permite utilizar una sola letra de unidad para hacer referencia a muchos discos o volmenes. Si tiene una letra de unidad D: para un disco o volumen normal, puede conectar o "montar" discos o volmenes adicionales como directorios de la letra de unidad D: sin que dichos discos o volmenes adicionales requieran letras de unidad propias. Consideraciones adicionales sobre puntos de montaje para la agrupacin en clsteres de conmutacin por error de SQL Server:

El programa de instalacin de SQL Server requiere que la unidad base de una unidad montada tenga una letra de unidad asociada. En las instalaciones de clster de conmutacin por error, esta unidad base debe ser una unidad de clster. En esta versin no se admiten los GUID de volumen.

La unidad base, la que tiene la letra de unidad, no se puede compartir con otras instancias de clster de conmutacin por error. Se trata de una restriccin normal para los clsteres de conmutacin por error, pero no es una restriccin en los servidores independientes con varias instancias.

Tenga especial cuidado al configurar el clster de conmutacin por error a fin de asegurarse de que tanto la unidad base como los discos o volmenes montados aparecen como recursos en el grupo de recursos. El programa de

145

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
instalacin de SQL Server valida la configuracin de la unidad de disco como parte de la instalacin del clster de conmutacin por error.

El programa de instalacin de SQL Server establece automticamente las dependencias entre el grupo de clsteres de SQL Server y los discos que estarn en el clster de conmutacin por error. No establezca las dependencias para los discos antes de la instalacin.

Durante la instalacin del clster de conmutacin por error de SQL Server 2008, se crea el objeto de equipo (cuentas de equipo de Active Directory) para el nombre de recurso de red de SQL Server. En un clster de Windows 2008, la cuenta del nombre del clster (cuenta de equipo del propio clster) necesita tener permisos para crear objetos de equipo. Si instala el clster SQL Server en un clster de Windows 2003, el servicio de clster ha de tener permisos para crear objetos de equipo.

Configurar Microsoft Cluster Server

Microsoft Cluster Server (MSCS) debe configurarse al menos en un nodo del clster de servidores. MSCS solo se admite si se instala en una configuracin de hardware cuya compatibilidad con el software MSCS haya sido comprobada. Adems, debe ejecutar SQL Server Enterprise o SQL Server Standard en combinacin con MSCS. SQL Server Enterprise admite clsteres de conmutacin por error con un mximo de 8 nodos. SQL Server Standard admite clsteres de conmutacin por error con 2 nodos. La DLL de recursos para el servicio SQL Server exporta dos funciones usadas por el administrador de clsteres de MSCS para comprobar la disponibilidad del recurso de SQL Server. Hay una comprobacin simple, LooksAlive, que consulta el estado del servicio a travs del Administrador de control de servicios de Windows NT. Tambin hay una comprobacin ms estricta, IsAlive, que se conecta a SQL Server como un sondeo del usuario para realizar una consulta simple. De forma predeterminada, LooksAlive se desencadena cada 5 segundos e IsAlive se desencadena cada 60 segundos. Los intervalos de sondeo de IsAlive y LooksAlive se pueden cambiar en el administrador de clsteres de MSCS, en la ficha Avanzadas, para el recurso SQL Server o usando la utilidad Cluster.exe del smbolo del sistema. MSCS debe poder comprobar que la instancia en clster de conmutacin por error est en ejecucin mediante la comprobacin IsAlive. Esto requiere conectarse al servidor mediante una conexin de confianza. De forma predeterminada, la cuenta que ejecuta el servicio de clster no est configurada como administrador en los nodos del clster y el grupo BUILTIN\Administradores no tiene permiso para iniciar sesin en SQL Server. Esta configuracin solo cambia si se cambian los permisos en los nodos del clster. Asegrese de que el grupo o la cuenta con la que se ejecuta el servicio de clster se ejecuta bajo SQL Server y puede iniciar una sesin en l para la comprobacin de IsAlive. En caso contrario, se producir un error en la comprobacin de IsAlive. Como mnimo, la cuenta del servicio de clster de MSCS debe tener privilegios public en SQL Server para poder ejecutar SELECT @@servername de forma peridica. Al instalar MSCS, es muy importante usar cuentas de servicio independientes para iniciar una sesin en MSCS y en SQL Server. De lo contrario, la contrasea del servicio de clster no se puede cambiar con el comando de clster. Cuando se utiliza MSCS, un nodo debe tener el control del bus SCSI compartido antes de poner el otro nodo en lnea. Si no es as, la conmutacin por error de aplicaciones puede entrar en un estado pendiente de en lnea e impedir la conmutacin por error al otro nodo o producir un error total. Si el sistema de clster tiene un proceso de instalacin propio, debe utilizarse.

Instalar Microsoft DTC (Coordinador de transacciones distribuidas) Antes de instalar SQL Server en un clster de conmutacin por error, determine si debe crearse el recurso de clster de Microsoft DTC (Coordinador de transacciones distribuidas). Si solo instala el motor de base de datos, no ser necesario el recurso de clster de MSDTC. Si est instalando el motor de base de datos y SSIS o Componentes de la estacin de trabajo, o si usar las transacciones distribuidas, debe instalar MSDTC. Observe que MSDTC no se requiere para las instancias que son solo para Analysis Services.

Configurar Microsoft DTC (Coordinador de transacciones distribuidas) Tras instalar el sistema operativo y configurar el clster, debe configurar MSDTC para que funcione en un clster mediante el Administrador de clsteres. Si no logra crear el clster de MSDTC, no se bloquear el programa de instalacin de SQL Server, pero la funcionalidad de la aplicacin SQL Server puede verse afectada si MSDTC no se configura correctamente.

Otras consideraciones de software

Asegrese de que todos los nodos del clster estn configurados de forma idntica, lo que incluye COM+, letras de unidad de disco y usuarios del grupo de administradores. Compruebe que la interconexin del clster (latido) est configurada correctamente. Compruebe que ha borrado los registros del sistema en todos los nodos y ha consultado de nuevo los registros del sistema. Antes de continuar, asegrese de que los registros no contienen mensajes de error. Para las instalaciones de SQL Server en configuraciones en paralelo con versiones anteriores, los servicios de SQL Server deben usar cuentas que solo se encuentran en el grupo de dominios global. Adems, las cuentas usadas por los servicios de SQL Server no deben aparecer en el grupo local de administradores. Si no se sigue esta directriz, se producirn comportamientos inesperados con respecto a la seguridad. Para los nodos de clsteres de Windows Server 2003 en un entorno en que no hay ningn controlador de dominio de Windows Server 2003 preexistente.

146

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Instale el software necesario: antes de ejecutar el programa de instalacin para instalar o actualizar a SQL Server 2008, instale el software previo siguiente para reducir el tiempo de instalacin. Puede instalar el software previo en cada nodo de clsteres de conmutacin por error y, a continuacin, reiniciar los nodos una vez antes de ejecutar el programa de instalacin. .NET Framework 3.5 SP1. El programa de instalacin no instala .NET Framework 3.5 SP1 en un sistema operativo en clster. Debe instalar .NET Framework 3.5 SP1 antes de ejecutar el programa de instalacin. Para evitar problemas con el instalador de .NET Framework 3.5, asegrese de que el Servicio Windows Update se est ejecutando.

o o o

Windows Installer 4.5.

Si est utilizando Windows Server 2003 SP2, instale la revisin 937444. Se trata de un requisito para la caracterstica FILESTREAM de los Servicios de Database Engine (Motor de base de datos).

Archivos auxiliares para la instalacin de SQL Server. Puede instalar estos archivos ejecutando SqlSupport.msi que se encuentra en el disco de instalacin de SQL Server 2008.

Para usar el cifrado, instale el certificado del servidor con el nombre DNS completo del clster MSCS en todos los nodos del clster de conmutacin por error de SQL Server. Por ejemplo, si tiene un clster con dos nodos cuyos nombres son "Test1.DomainName.com" y "Test2.DomainName.com" y una instancia de clster de conmutacin por error de SQL Server denominada "Virtsql", debe obtener un certificado para "Virtsql.DomainName.com" e instalarlo en los nodos test1 y test2. A continuacin, puede activar la casilla Forzar cifrado de protocolo en el Administrador de configuracin de SQL Server para configurar el cifrado en el clster de conmutacin por error. Importante: No active la casilla Forzar cifrado de protocolo hasta que haya instalado certificados en todos los nodos participantes de la instancia de clster de conmutacin por error.

Compruebe que no tiene instalado software antivirus en el clster MSCS. Compruebe que el disco en el que se instalar SQL Server no est comprimido. Si intenta instalar SQL Server en una unidad comprimida, se producir un error en la instalacin de SQL Server. Cuando asigne nombre a un grupo de clsteres de la instalacin de clster de conmutacin por error, no debe utilizar ninguno de los caracteres siguientes:

o o o o o

Operador menor que (<)

Operador mayor que (>)

Comillas dobles (")

Comillas simples (')

Smbolo de "y" comercial (&)

Tambin compruebe que los nombres de los grupos de clsteres existentes no contienen los caracteres no compatibles.

Consideraciones sobre la red, los puertos y el firewall

Antes de iniciar el programa de instalacin de SQL Server, compruebe que ha deshabilitado NetBIOS para todas las tarjetas de red privada. El nombre de red y la direccin IP del servidor SQL Server no deben utilizarse para ningn otro fin, por ejemplo el uso compartido de archivos. Si desea crear un recurso compartido de archivos, utilice un nombre de red y una direccin IP diferentes y nicos para el recurso. Importante: Microsoft recomienda no usar recursos compartidos de archivos en unidades de datos, ya que pueden afectar al comportamiento y el rendimiento de SQL Server.

Aunque SQL Server admite canalizaciones con nombre y Sockets TCP/IP sobre TCP/IP en un clster, Microsoft recomienda utilizar Sockets TCP/IP en una configuracin de clster. Para asegurarse de que la funcionalidad del clster de conmutacin por error es correcta, agregue excepciones a la configuracin del firewall para el puerto de SQL Server, el puerto de Explorador SQL, Compartir impresoras y archivos (TCP 139/445 y UDP 137/138) y Llamada a procedimiento remoto (puerto TCP 135).

147

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Observe que el servidor ISA no se admite en la agrupacin en clsteres de Windows y, por consiguiente, tampoco se admite en los clsteres de conmutacin por error de SQL Server. El Servicio de Registro remoto debe estar activado y en ejecucin.

La administracin remota debe estar habilitada. Para el puerto de SQL Server, use el Administrador de configuracin de SQL Server con objeto de comprobar la configuracin de la red de SQL Server para el protocolo TCP/IP en la instancia que desea desbloquear. Debe habilitar el puerto TCP para IPALL si desea conectar a SQL Server mediante TCP despus de la instalacin. De forma predeterminada, Explorador SQL escucha en el puerto UDP 1434. Las operaciones de instalacin del clster de conmutacin por error incluyen una regla que comprueba el orden de los enlaces de red. Aunque el orden de los enlaces pueda parecer correcto, existe la posibilidad de haber deshabilitado configuraciones de NIC o haber dejado configuraciones de NIC "fantasma" en el sistema. Las configuraciones de NIC "fantasma" pueden afectar al orden de los enlaces y hacer que la regla de orden de enlaces emita una advertencia. Para evitar esta situacin, realice los pasos siguientes con el fin de identificar y quitar los adaptadores de red deshabilitados: 1. 2. 3. En un smbolo del sistema, escriba: set devmgr_Show_Nonpersistent_Devices=1. Escriba y ejecute: start Devmgmt.msc. Expanda la lista de adaptadores de red. Solo los adaptadores fsicos de red deshabilitado, el programa de instalacin notificar un error utilidad Panel de control/Conexiones de red tambin mostrar que el Configuracin de red, en el Panel de control, muestra la misma devmgmt.msc. deben estar en la lista. Si tiene un adaptador para la regla de orden de enlaces de red. La adaptador estaba deshabilitado. Confirme que lista de adaptadores fsicos habilitados que

4. 5.

Quite los adaptadores de red deshabilitados antes de ejecutar el programa de instalacin de SQL Server. Una vez que el programa de instalacin finalice, vuelva a Conexiones de red en el Panel de control y deshabilite los adaptadores de red que no se usen actualmente.

Otras consideraciones

Para crear un clster de conmutacin por error, debe ser un administrador local con permisos para iniciar sesin como servicio y para actuar como parte del sistema operativo en todos los nodos de la instancia de clster de conmutacin por error. Antes de instalar o actualizar un clster de conmutacin por error de SQL Server, deshabilite todas las aplicaciones y servicios que podran usar componentes de SQL Server durante la instalacin, pero mantenga los recursos de disco en lnea. En Windows Server 2008, se generan automticamente SID de servicio para usarlos con los servicios de SQL Server 2008. Para las instancias de clster de conmutacin por error de SQL Server 2008 actualizadas desde SQL Server 2000 o SQL Server 2005, se conservarn los grupos de dominios y las configuraciones de las listas de control de acceso (ACL) existentes. Los grupos de dominio deben estar dentro del mismo dominio que las cuentas de equipo. Por ejemplo, si el equipo donde se va a instalar SQL Server se encuentra en el dominio SQLSVR que es un elemento secundario de MYDOMAIN, debe especificar un grupo del dominio SQLSVR. El dominio SQLSVR puede contener cuentas de usuario de MYDOMAIN. En Windows Server 2003, cree grupos de dominios para los servicios de clster que se instalarn como parte del clster de conmutacin por error de SQL Server. El servicio SQL Server, el servicio Agente SQL Server, el servicio Analysis Services y el servicio iFTS se deben ejecutar como cuentas de dominio que son miembros del grupo de dominios. Si es necesario, solicite al administrador del dominio los nombres de los grupos de dominio existentes, o pdale que cree los grupos de dominio para su clster de conmutacin por error. Si va a instalar una instancia del clster de conmutacin por error de SQL Server 2008 en un dominio de modo mixto de Windows 2000, debe utilizar los grupos globales del dominio para los servicios de clster de SQL Server. Nota: Los controladores de dominio de Windows 2000 pueden funcionar en modo mixto y modo nativo. El modo mixto permite tener controladores de dominio de nivel inferior en el mismo dominio.

La agrupacin en clsteres de conmutacin por error de SQL Server no se admite cuando los nodos de clsteres son controladores de dominio. Configure el Servicio de nombres de dominio (DNS) o el Servicio de nombres Internet de Windows (WINS). En el entorno donde se va a instalar el clster de conmutacin por error de SQL Server debe estar ejecutndose un servidor DNS o WINS. El programa de instalacin de SQL Server requiere el registro del servicio de nombres de dominio dinmicos de la referencia virtual de la interfaz IP de SQL Server. Si no se puede completar el registro dinmico, se produce un error en el programa de instalacin y sta se revierte. Si no est disponible el registro dinmico, debe haber registrado previamente el servidor en DNS. Compruebe si las herramientas, caractersticas y componentes de SQL Server que desea usar son compatibles con la agrupacin en clsteres de conmutacin por error.

148

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Considere cmo supervisar y mantendr el clster de conmutacin por error para lograr los objetivos de alta disponibilidad.

Mantener un clster de conmutacin por error Despus de instalar un clster de conmutacin por error de SQL Server, puede cambiarlo o repararlo mediante el programa de instalacin de SQL Server. Por ejemplo, puede agregar nodos adicionales a una instancia de clster de conmutacin por error, ejecutar una instancia en clster como instancia independiente o quitar un nodo de una configuracin de instancias en clster. Agregar un nodo a una instancia de clster de conmutacin por error existente El programa de instalacin de SQL Server ofrece la posibilidad de mantener una instancia de clster de conmutacin por error existente. Si elige esta opcin, puede agregar otros nodos a la configuracin de clster de conmutacin por error ejecutando el programa de instalacin de SQL Server en el equipo al que se desea agregar el clster. Quitar un nodo de una instancia de clster de conmutacin por error existente Puede quitar un nodo de una configuracin de clster de conmutacin por error ejecutando el programa de instalacin de SQL Server en el equipo del que desea quitar el clster. Cada nodo de una configuracin de clster de conmutacin por error de SQL Server se considera del mismo nivel y sin dependencias de otros nodos del clster, con lo que es posible quitar cualquiera de ellos. Un nodo daado no tiene que estar disponible para poder quitarlo y el proceso de eliminacin no desinstala los binarios de SQL Server del nodo no disponible. Los nodos quitados se pueden volver a agregar a un clster de conmutacin por error en cualquier momento. Ejecutar una instancia agrupada de SQL Server como instancia independiente Por lo general, una instancia agrupada de SQL Server se ejecuta bajo el control de los Servicios de Cluster Server de Microsoft (MSCS). Sin embargo, puede que sea necesario ejecutar una instancia agrupada de SQL Server como instancia independiente. Por ejemplo, para ejecutar una instancia de SQL Server en modo de usuario nico, puede que sea necesario ejecutar una instancia agrupada de SQL Server como instancia independiente desde el smbolo del sistema en lugar de iniciar SQL Server a travs de MSCS. Para conectarse a una instancia agrupada de SQL Server en modo independiente mediante sockets, los recursos de direccin IP y de nombre de red deben estar en lnea para el clster de conmutacin por error donde se instal la instancia. Si estos recursos no pueden estar en lnea, realice la conexin mediante Canalizaciones con nombre. No obstante, debe crear un alias en el lado del cliente para comunicarse con la canalizacin con nombre donde escucha la instancia de SQL Server. Utilice el Administrador de configuracin de SQL Server para averiguar el nombre de la canalizacin. Cambiar cuentas de servicio No debe cambiar las contraseas de ninguna de las cuentas de servicio de SQL Server cuando un nodo de clsteres de conmutacin por error est inactivo o sin conexin. Si tiene que hacerlo, debe restablecer de nuevo la contrasea mediante el Administrador de configuracin de SQL Server cuando todos los nodos vuelvan a estar en lnea. Si la cuenta de servicio de SQL Server no es de un administrador de un clster, no se pueden eliminar los recursos administrativos compartidos de ninguno de los nodos del clster. Los recursos administrativos compartidos de un clster deben estar disponibles para que SQL Server funcione. Importante: No utilice la misma cuenta para la cuenta de servicio de SQL Server y la cuenta de MSCS. Si la contrasea cambia para la cuenta MSCS, la instalacin de SQL Server no ser satisfactoria. En Windows Server 2008, se utilizan SID de servicio para las cuentas de servicio de SQL Server.

11 Disear una Base de Datos con Espejo. Considerar: cuando utilizar un servidor testigo, consideraciones de Sistema de Operacin, suspender vs. detener, recuperacin a fallas automtico o manual, reparacin de pginas automtico, snapshots de Base de Datos para reportes, administrando a nivel de instancia los objetos. Introduccin La creacin de reflejo de la base de datos es bsicamente una solucin de software para aumentar la disponibilidad de la base de datos. La creacin de reflejo se implementa en cada una de las bases de datos y slo funciona con las que utilizan el modelo de recuperacin completa. Los modelos de recuperacin simple y optimizados para cargas masivas de registros no admiten la creacin de reflejo de la base de datos. En SQL Server Standard y Enterprise se admite la creacin de un reflejo de la base de datos. La creacin de reflejo de la base de datos proporciona una disponibilidad considerable y es una alternativa o un suplemento fcil de administrar a la agrupacin en clsteres de conmutacin por error o al trasvase de registros. Cuando una sesin de creacin de reflejo de la base de datos est sincronizada, la creacin de reflejo de la base de datos proporciona un servidor en espera activa que admite la conmutacin por error rpida sin que se pierdan datos de las transacciones confirmadas. Durante una sesin de creacin de reflejo normal, cuando se produce un error del servidor de produccin, las aplicaciones cliente pueden recuperarse rpidamente volviendo a conectarse al servidor en espera.

Informacin general sobre la creacin de reflejos de la base de datos La creacin de reflejo de la base de datos es una solucin de software usada principalmente para aumentar la disponibilidad de una base de datos. La creacin de reflejo se implementa en cada una de las bases de datos y slo funciona con las que utilizan el modelo de

149

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
recuperacin completa. Los modelos de recuperacin simple y de recuperacin optimizado para cargas masivas de registros no admiten la creacin de reflejo de la base de datos. Por lo tanto, todas las operaciones masivas se registran siempre por completo. La creacin de reflejo de una base de datos funciona con cualquier nivel de compatibilidad con bases de datos. Nota: No es posible reflejar las bases de datos maestra, msdb, tempdb o model. La creacin de reflejos de la base de datos mantiene dos copias de una sola base de datos que deben residir en diferentes instancias de SQL Server Database Engine (Motor de base de datos de SQL Server). Generalmente, estas instancias de servidor residen en equipos de diferentes ubicaciones. Una instancia del servidor sirve la base de datos a los clientes (el servidor principal). La otra instancia acta como un servidor en estado de espera activa (el servidor reflejado), dependiendo de la configuracin y del estado de la sesin de creacin de reflejo. Cuando una sesin de creacin de reflejo de la base de datos est sincronizada, la creacin de reflejo de la base de datos proporciona un servidor en espera activa que admite la conmutacin por error rpida sin que se produzca ninguna prdida de datos derivada de las transacciones confirmadas. Cuando la sesin no est sincronizada, el servidor reflejado suele estar disponible como servidor en espera activa (con posible prdida de datos).

Ventajas de la creacin de reflejo de la base de datos La creacin de reflejo de la base de datos es una estrategia sencilla que ofrece las siguientes ventajas:

Aumenta la proteccin de los datos. La creacin de reflejo de la base de datos proporciona una redundancia completa o casi completa de los datos, en funcin de si el modo de funcionamiento es el de alta seguridad o el de alto rendimiento. Un asociado de creacin de reflejo de la base de datos que se ejecute en SQL Server 2008 Enterprise o en versiones posteriores intentar resolver automticamente cierto tipo de errores que impiden la lectura de una pgina de datos. El socio que no puede leer una pgina, solicita una copia nueva al otro socio. Si la solicitud se realiza correctamente, la copia sustituir a la pgina que no se puede leer, de forma que se resuelve el error en la mayora de los casos. Incrementa la disponibilidad de una base de datos. Si se produce un desastre en el modo de alta seguridad con conmutacin automtica por error, la conmutacin por error pone en lnea rpidamente la copia en espera de la base de datos, sin prdida de datos. En los dems modos operativos, el administrador de bases de datos tiene la alternativa del servicio forzado (con una posible prdida de datos) para la copia en espera de la base de datos. Mejora la disponibilidad de la base de datos de produccin durante las actualizaciones. Para minimizar el tiempo de inactividad para una base de datos reflejada, puede actualizar secuencialmente las instancias de SQL Server que participan en una sesin de creacin de reflejo de la base de datos. Esto incurrir en el tiempo de inactividad de slo una conmutacin por error nica. Este formulario de actualizacin se conoce como actualizacin gradual.

Funcionamiento de la creacin de reflejo de la base de datos Los dos servidores, principal y reflejado, se comunican y colaboran como asociados en una sesin de creacin de reflejo de la base de datos. Los dos asociados realizan funciones complementarias en la sesin: la funcin principal y la funcin de reflejo. En cada momento, un asociado realiza la funcin principal y el otro realiza la funcin de reflejo. Cada asociado se describe como poseedor de su funcin actual. El asociado que posee la funcin principal se denomina servidor principal y su copia de la base de datos es la base de datos principal actual. El asociado que posee la funcin de reflejo se denomina servidor reflejado y su copia de la base de datos es la base de datos reflejada actual. Cuando se implementa la creacin de reflejo de la base de datos en un entorno de produccin, la base de datos principal es la base de datos de produccin. La creacin de reflejo de la base de datos implica rehacer cada operacin de insercin, actualizacin y eliminacin que se produce desde la base de datos principal a la base de datos reflejada tan pronto como sea posible. Para rehacer estas operaciones, se enva cada secuencia de entradas del registro de transacciones activo al servidor reflejado, que las aplica a la base de datos reflejada, en secuencia, lo ms rpido posible. A diferencia de la replicacin, que trabaja en el nivel lgico, la creacin de reflejo de la base de datos trabaja en el nivel de registro fsico. A partir de SQL Server 2008, el servidor principal comprime la secuencia de entradas del registro de transacciones antes de enviarla al servidor reflejado. Esta compresin del registro se produce en todas las sesiones de creacin de reflejo.

Modos de funcionamiento Una sesin de creacin de reflejo de la base de datos se ejecuta en modo sincrnico o asincrnico. Con el funcionamiento asincrnico, las transacciones se confirman sin esperar a que el servidor reflejado escriba el registro en el disco, lo que maximiza el rendimiento. Con el funcionamiento sincrnico, una transaccin se confirma en ambos asociados, pero a costa de aumentar la latencia de las transacciones. Existen dos modos de funcionamiento de la creacin de reflejo. Uno de ellos, el modo de alta seguridad, admite el funcionamiento sincrnico. En el modo de alta seguridad, cuando se inicia una sesin, el servidor reflejado sincroniza la base de datos reflejada con la base de datos principal lo ms rpido posible. Una vez sincronizadas las bases de datos, una transaccin se confirma en ambos asociados, pero a costa de aumentar la latencia de las transacciones. El segundo modo de funcionamiento, el modo de alto rendimiento, se ejecuta de manera asincrnica. El servidor reflejado intenta hacer frente a las entradas de registro enviadas por el servidor principal. La base de datos reflejada podra retrasarse ligeramente en relacin con la base de datos principal. No obstante, lo habitual es que dicha diferencia sea pequea. Sin embargo, la diferencia puede ser considerable si el servidor principal soporta una gran carga de trabajo o el sistema del servidor reflejado se encuentra sobrecargado. En el modo de alto rendimiento, en cuanto el servidor principal enva una entrada de registro al servidor reflejado, el servidor principal enva una confirmacin al cliente. No espera a una confirmacin del servidor reflejado. Esto significa que las transacciones se confirman sin esperar a que el servidor reflejado escriba el registro en el disco. Este funcionamiento asincrnico permite que el servidor principal se ejecute con la mnima latencia de transacciones, pero a riesgo de una prdida potencial de datos. Todas las sesiones de creacin de reflejo de la base de datos slo admiten un servidor principal y un servidor reflejado. Esta configuracin se muestra en la ilustracin siguiente.

150

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

El modo de alta seguridad con conmutacin automtica por error requiere una tercera instancia de servidor denominada testigo. A diferencia de los dos asociados, el testigo no sirve a la base de datos. El testigo admite la conmutacin automtica por error al comprobar que el servidor principal se encuentre activo y en funcionamiento. El servidor reflejado inicia la conmutacin automtica por error slo si ste y el testigo permanecen mutuamente conectados despus de haberse desconectado del servidor principal. En la siguiente ilustracin se muestra una configuracin que incluye un testigo.

Nota: El establecimiento de una nueva sesin de creacin de reflejo requiere que en todas las instancias del servidor involucradas se ejecute la misma versin de SQL Server. Sin embargo, al actualizar a SQL Server 2008, pueden existir variaciones en las versiones de las instancias involucradas.

Seguridad de las transacciones y modos de funcionamiento Que el modo operativo sea asincrnico o sincrnico depende de la configuracin de seguridad de las transacciones. Si utiliza exclusivamente SQL Server Management Studio para configurar la creacin de reflejo de la base de datos, la configuracin de seguridad de las transacciones se realiza automticamente cuando selecciona el modo operativo. Si utiliza Transact-SQL para configurar la creacin de reflejo de la base de datos, deber comprender cmo establecer la seguridad de las transacciones. El control de la seguridad de las transacciones est a cargo de la propiedad SAFETY de la instruccin ALTER DATABASE. En la base de datos que se va a reflejar, la opcin SAFETY se establece en FULL o en OFF.

Si la opcin SAFETY se establece en FULL, la operacin de creacin de reflejo de la base de datos es sincrnica, tras la fase inicial de sincronizacin. Si un testigo se establece en el modo de alta seguridad, la sesin admite la conmutacin automtica por error. Si la opcin SAFETY se establece en OFF, la operacin de creacin de reflejo de la base de datos es asincrnica. La sesin se ejecuta en modo de alto rendimiento y la opcin WITNESS tambin debe establecerse en OFF.

Conmutacin de funciones En el contexto de una sesin de creacin de reflejo de la base de datos, las funciones principal y reflejo suelen ser intercambiables en un proceso conocido como conmutacin de funciones. La conmutacin de funciones implica la transferencia de la funcin principal al servidor

151

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
reflejado. En la conmutacin de funciones, el servidor reflejado acta como el asociado de conmutacin por error del servidor principal. Cuando se produce una conmutacin de funciones, el servidor reflejado asume la funcin de servidor principal y pone en lnea su copia de la base de datos como la nueva base de datos principal. El servidor principal anterior, si est disponible, asume la funcin de reflejo y su base de datos se convierte en la nueva base de datos reflejada. Las funciones pueden conmutarse repetidamente.

Hay tres formas de intercambiar funciones.

Conmutacin automtica por error Esta funcin requiere el modo de alta seguridad y la presencia del servidor reflejado y de un testigo. La base de datos ya debe estar sincronizada y el testigo debe estar conectado al servidor reflejado. La funcin del testigo es comprobar si un determinado servidor asociado est activo y en funcionamiento. Si el servidor reflejado pierde su conexin con el servidor principal, pero el testigo an est conectado al servidor principal, el servidor reflejado no inicia una conmutacin por error. Conmutacin por error manual Esta funcin requiere el modo de alta seguridad. Los asociados deben estar conectados entre s y la base de datos ya debe estar sincronizada. Servicio forzado (con posible prdida de datos) En los modos de alto rendimiento y alta seguridad sin conmutacin automtica por error, se puede forzar el servicio si el servidor principal no ha funcionado y el servidor reflejado est disponible. Importante: El modo de alto rendimiento se ha diseado para que se ejecute sin un testigo. No obstante, si existe un testigo, el servicio forzado requiere que el testigo est conectado al servidor reflejado.

En cualquier escenario de conmutacin de funciones, una vez que la nueva base de datos principal se pone en lnea, las aplicaciones cliente se pueden recuperar rpidamente si vuelven a conectarse a la base de datos.

Compatibilidad de la creacin de reflejo de la base de datos A partir de SQL Server 2005 Service Pack 1 (SP1), SQL Server Standard y SQL Server Enterprise han admitido los testigos y asociados de creacin de reflejo de la base de datos. Sin embargo, los asociados deben usar la misma edicin y solamente SQL ServerEnterprise admite la creacin de reflejo de la base de datos asincrnica (modo de alto rendimiento). SQL Server Workgroup y SQL Server Express tambin admiten testigos.

Sesiones de creacin de reflejo de la base de datos La creacin de reflejo de la base de datos se produce en el contexto de una sesin de creacin de reflejo de la base de datos. En este tema se supone que est familiarizado con las funciones entidad de seguridad, reflejo y token, los modos operativos y la conmutacin de funciones en la creacin de reflejo de la base de datos. Cuando la base de datos reflejada est preparada y las instancias del servidor estn configuradas, el propietario de la base de datos podr iniciar la creacin de reflejo de la base de datos. En cuanto se inicia la creacin de reflejo, cada asociado comienza a mantener informacin de estado en su base de datos sobre esa base de datos y sobre el otro asociado y el token, si existen. Esta informacin de estado permite que las instancias de servidor mantengan una relacin conocida como sesin de creacin de reflejo de la base de datos. Durante una sesin de creacin de reflejo de una base de datos, las instancias de servidor se supervisan entre s. La informacin de estado se mantiene hasta que el propietario de la base de datos detiene la sesin. Al inicio de una sesin de creacin de reflejo de la base de datos, el servidor reflejado identifica el nmero de secuencia de registro (LSN) del ltimo registro de transacciones aplicado en la base de datos reflejada y solicita al servidor de la entidad de seguridad el registro de transacciones de todas las transacciones posteriores, si las hay. En respuesta, el servidor de la entidad de seguridad enva al servidor reflejado las entradas del registro activo acumuladas desde ltimo registro restaurado en la base de datos reflejada o enviado al servidor reflejado. El registro sin enviar que se ha acumulado en el disco lgico de la base de datos de la entidad de seguridad se conoce como cola de envo. El servidor reflejado escribe inmediatamente el registro entrante en el disco, donde se mantiene hasta que se aplica a la base de datos reflejada. El registro que permanece en espera en el disco del reflejo se conoce como la cola rehecha. La parte del registro sin restaurar que espera en la cola rehecha es un indicador del tiempo necesario para conmutar por error a la base de datos reflejada. El servidor de la entidad de seguridad contina poniendo la base de datos de la entidad de seguridad a disposicin de los clientes y de las conexiones de cliente. Tras el inicio de la creacin de reflejo, cada vez que un cliente actualiza la base de datos de la entidad de seguridad, al escribir la transaccin en el registro de la base de datos de la entidad de seguridad, el servidor de la entidad de seguridad tambin enva esa entrada del registro al servidor reflejado. Ah, el servidor reflejado escribe inmediatamente la entrada del registro en el disco como la ltima entrada de la cola rehecha. En segundo plano, el servidor reflejado rehace el registro en la base de datos reflejada, entrada por entrada, empezando por la entrada del registro ms antigua, tan pronto como sea posible. Al rehacer el registro, se aplican secuencialmente las entradas del registro en cola a la base de datos reflejada, comenzando por la entrada ms antigua. Cada entrada del registro slo se rehace una vez. A medida que el servidor reflejado rehace el registro, la base de datos reflejada se pone al da de forma continua. Si el servidor de la entidad de seguridad trunca o reduce el registro de la base de datos de la entidad de seguridad, el servidor reflejado tambin reduce el registro en el mismo punto de la secuencia. Generalmente, al rehacer el registro, la base de datos reflejada se pone inmediatamente al nivel de la base de datos de la entidad de seguridad. El modo operativo de la sesin determina si la base de datos reflejada alcanza totalmente el nivel de la base de datos de la entidad de seguridad. En el modo de alta seguridad sincrnico, el servidor de la entidad de seguridad espera para confirmar las

152

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
transacciones nuevas hasta que se graban en el disco del registro del servidor reflejado. Cuando las entradas del registro acumuladas se han enviado al servidor reflejado, la base de datos reflejada se sincroniza con la base de datos de la entidad de seguridad. Durante una sesin, si el servidor de la entidad de seguridad no puede enviar todas las entradas del registro inmediatamente, las entradas del registro sin enviar se acumulan en la cola de envo. En el modo de alta seguridad sincrnico, despus de la sincronizacin, las nuevas entradas del registro sin enviar se acumulan slo cuando la creacin del reflejo se pone en pausa o se suspende. Por el contrario, en el modo de alto rendimiento asincrnico, el registro sin enviar se acumula siempre que el servidor reflejado se retrasa durante la creacin del reflejo, adems de cuando el reflejo se pone en pausa o se suspende. La cantidad del registro sin enviar es un indicador de la posible prdida de datos en el caso de que el servidor de la base de datos no funcione. Nota: Si se producen errores al rehacer, el servidor reflejado pausa la sesin poniendo la base de datos en el estado SUSPENDED. Para poder reanudar la sesin, el propietario de la base de datos debe resolver la causa del error.

Sesiones simultneas Una determinada instancia de servidor puede participar en varias sesiones simultneas de creacin de reflejo de la base de datos (una por cada base de datos reflejada) con la misma instancia o con instancias de servidor distintas. Con frecuencia, una instancia de servidor sirve exclusivamente como asociado o como token en todas las sesiones de creacin de reflejo de la base de datos. Sin embargo, puesto que cada sesin depende de las dems, una instancia de servidor puede actuar como asociado en algunas sesiones y como token en otras. Por ejemplo, considere las siguientes cuatro sesiones entre tres instancias de servidor (SSInstance_1, SSInstance_2 y SSInstance_3). Cada estancia de servidor sirve como asociado en algunas sesiones y como token en otras: Instancia servidor de Sesin para la base de Sesin para la base de Sesin para la base de Sesin para datos A datos B datos C datos D la base de

SSInstance_1

Testigo

Asociado

Asociado

Asociado

SSInstance_2

Asociado

Testigo

Asociado

Asociado

SSInstance_3

Asociado

Asociado

Testigo

Testigo

En la siguiente ilustracin se muestran dos instancias de servidor que participan como asociados en dos sesiones de creacin de reflejo. Una sesin es para una base de datos llamada Db_1 y la otra sesin es para una base de datos llamada Db_2.

Cada una de las bases de datos es independiente de las dems. Por ejemplo, una instancia de servidor puede ser inicialmente el servidor reflejado de dos bases de datos. Si en una de esas bases de datos se produce una conmutacin por error, la instancia de servidor se convierte en el servidor de la entidad de seguridad de la base de datos en la que se ha realizado la conmutacin por error y, a la vez, sigue siendo el servidor reflejado de la otra base de datos. Como ejemplo adicional, suponga una instancia de servidor que sea el servidor de la entidad de seguridad de dos o ms bases de datos que se ejecutan en modo de alta seguridad con conmutacin automtica por error. Si se produce un error en la instancia de servidor, todas las bases de datos realizan automticamente la conmutacin por error a sus respectivas bases de datos reflejadas. Al configurar una instancia de servidor para que acte como asociado y token, asegrese de que el extremo de reflejo de la base de datos admite ambas funciones Asegrese tambin de que el sistema dispone de suficientes recursos para reducir la contencin de recursos. Nota: Dado que las bases de datos reflejadas son independientes entre s, no pueden realizar la conmutacin por error en grupo.

153

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Subprocesos creados para una sesin de creacin de reflejo de la base de datos Los tipos de subprocesos que una instancia de servidor crea para una sesin de creacin de reflejo de la base de datos dependen en parte de las funciones de creacin de reflejo que dicha instancia est realizando. Una sesin determinada tiene algunos o todos los subprocesos siguientes:

Un subproceso global para las comunicaciones de la creacin de reflejo de la base de datos. Este subproceso lo inicia Service Broker. Si la instancia del servidor est actuando como un asociado de creacin de reflejo (si es el servidor principal o el servidor reflejado):

o o

Un subproceso por base de datos reflejada para el procesamiento de eventos.

Un subproceso por base de datos reflejada para las tareas asincrnicas (como el envo del registro o la escritura en el registro) que de otra forma bloquearan el subproceso de evento.

Siempre que la instancia est actuando como un servidor reflejado:

o o

Un subproceso de administracin de puesta al da, que enva el registro para su puesta al da, realiza la lectura anticipada de pginas, la adquisicin de bloqueos, etc.

En SQL Server Standard, un subproceso de puesta al da por base de datos reflejada, o en SQL Server Enterprise, un subproceso de puesta al da por base de datos reflejada por cada cuatro CPU. Estos subprocesos realizan la puesta al da real del registro.

Si la instancia est actuando como testigo:

Un subproceso global para procesar los mensajes del testigo de todas las sesiones de creacin de reflejo de la base de datos en las que la instancia est actuando como testigo.

Requisitos previos para una sesin de creacin de reflejo de la base de datos

Para que pueda comenzar una sesin de creacin de reflejo, el propietario de la base de datos o el administrador del sistema deben crear la base de datos reflejada, configurar los extremos e inicios de sesin, y en algunos casos, crear y configurar certificados. La creacin de una base de datos reflejada requiere como mnimo que se realice una copia de seguridad completa de la base de datos de la entidad de seguridad y una siguiente copia de seguridad de registros, y que ambas se restauren en la instancia de servidor reflejado mediante WITH NORECOVERY. Adems, antes de que pueda iniciar la creacin de reflejo, si se realizan copias de seguridad de registros adicionales posteriores a la copia de seguridad de registros requerida, tambin debe aplicar manualmente cada copia de seguridad de registros adicional (siempre usando WITH NORECOVERY). Tras aplicar la copia de seguridad de registros ms reciente, puede iniciar la creacin de reflejo.

Impacto al pausar una sesin en el registro de transacciones del servidor principal En cualquier momento, el propietario de la base de datos puede pausar una sesin. La pausa preserva el estado de la sesin mientras se quita la creacin de reflejo. Cuando se pausa una sesin, el servidor de la entidad de seguridad no enva ninguna entrada del registro nueva al servidor reflejado. Todas estas entradas permanecen activas y se acumulan en el registro de transacciones de la base de datos de la entidad de seguridad. Mientras una sesin de creacin de reflejo de la base de datos permanece pausada, el registro de transacciones no se puede truncar. Por tanto, si se realiza una pausa demasiado larga en la sesin de creacin de reflejo de la base de datos, el registro puede llenarse.

Conexiones de cliente El proveedor de datos de Microsoft .NET para SQL Server proporciona compatibilidad con la conexin de cliente en sesiones de creacin de reflejo de la base de datos.

Modos de funcionamiento de la creacin de reflejo de la base de datos Esta seccin contiene informacin sobre los modos de funcionamiento sincrnico y asincrnico para las sesiones de creacin de reflejo de la base de datos Operacin asincrnica de creacin de reflejo de la base de datos (Modo de alto rendimiento) La operacin asincrnica de creacin de reflejo de la base de datos slo la admite SQL Server 2005 Enterprise Edition Service Pack 1 (SP1) y versiones posteriores. Si la seguridad de las transacciones est configurada en OFF, la sesin de creacin de reflejo de la base de datos funciona de forma asincrnica. La operacin asincrnica slo admite el modo operativo de alto rendimiento. Este modo mejora el rendimiento a costa de la

154

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
alta disponibilidad. El modo de alto rendimiento utiliza solamente el servidor principal y el servidor reflejado. Los problemas del servidor reflejado nunca afectan al servidor principal. Al perderse el servidor principal, la base de datos reflejada se marca como DISCONNECTED, pero est disponible como base de datos en espera activa. El modo de alto rendimiento slo admite un formato de conmutacin de funciones: el servicio forzado (con posible prdida de datos), que utiliza el servidor reflejado como servidor en estado de espera activa. El servicio forzado es una de las posibles respuestas a los errores del servidor principal. Dado que es posible la prdida de datos, debe considerar otras alternativas antes de forzar el servicio en el servidor reflejado. En la siguiente ilustracin se muestra la configuracin de una sesin con el modo de alto rendimiento.

En el modo de alto rendimiento, en cuanto el servidor principal enva el registro de una transaccin al servidor reflejado, el servidor principal enva una confirmacin al cliente, sin esperar una confirmacin del servidor reflejado. Las transacciones se confirman sin esperar a que el servidor reflejado escriba el registro en el disco. La operacin asincrnica permite que el servidor principal se ejecute con la mnima latencia de transacciones. El servidor reflejado intenta hacer frente a las entradas de registro enviadas por el servidor principal. Sin embargo, la base de datos reflejada puede retrasarse un poco con respecto a la base de datos principal, aunque la diferencia entra ambas suele ser pequea. No obstante, la diferencia puede ser considerable si el servidor principal soporta una gran carga de trabajo o el sistema del servidor reflejado se encuentra sobrecargado. Cundo est indicado utilizar el modo de alto rendimiento El modo de alto rendimiento puede resultar til en un caso de recuperacin de desastres en el que los servidores principal y reflejado se encuentran separados por una distancia considerable y no se desea que los pequeos errores afecten al servidor principal. Nota: El trasvase de registros puede complementar a la creacin de reflejo de la base de datos y es una alternativa conveniente a la creacin asincrnica de reflejo de la base de datos. El impacto de un testigo en el modo de alto rendimiento Si se utiliza Transact-SQL para configurar el modo de alto rendimiento, siempre que la propiedad SAFETY est establecida en OFF, se recomienda encarecidamente que la propiedad WITNESS tambin se establezca en OFF. Un testigo puede coexistir con el modo de alto rendimiento, pero no proporciona ventaja alguna y genera riesgo. Si el testigo est desconectado de la sesin y uno de los asociados se bloquea, la base de datos no estar disponible. Esto es as porque, aun cuando el modo de alto rendimiento no necesita un testigo, si se establece uno, la sesin requiere un qurum compuesto de dos o ms instancias de servidor. Si la sesin pierde el qurum, no puede servir a la base de datos. Cuando se establece un testigo en una sesin en modo de alto rendimiento, la aplicacin de qurum implica que:

Si se pierde el servidor reflejado, el servidor principal se debe conectar al testigo. De lo contrario, el servidor principal mantiene su base de datos sin conexin hasta que el testigo o el servidor reflejado vuelven a unirse a la sesin. Si se pierde el servidor principal, forzar el servicio en el servidor reflejado requiere que ste se conecte al testigo.

Responder ante los errores del servidor principal Si se produce un error en el servidor principal, el propietario de la base de datos tiene varias opciones:

Dejar la base de datos inactiva hasta que el servidor principal vuelva a estar disponible. Si la base de datos principal y su registro de transacciones estn intactos, esta opcin conserva todas las transacciones confirmadas a costa de la disponibilidad. Detener la sesin de creacin de reflejo de la base de datos, actualizar manualmente la base de datos y, despus, iniciar una nueva sesin de creacin de reflejo. Si la base de datos principal se pierde pero el servidor principal sigue en funcionamiento, intente inmediatamente realizar una copia de seguridad del final del registro en la base de datos principal. Si la copia del final del registro se realiza correctamente, la mejor opcin puede ser eliminar la creacin de reflejo. Tras eliminar la creacin de reflejo, puede restaurar el registro en la base de datos reflejada anterior, que conserva todos los datos. Nota: Si no se puede realizar la copia del final del registro y no puede esperar a que el servidor principal se recupere, considere la posibilidad de forzar el servicio, que ofrece la ventaja de mantener el estado de la sesin.

Forzar el servicio (con posible prdida de datos) en el servidor reflejado. El servicio forzado es estrictamente un mtodo de recuperacin de desastres y no se debe utilizar demasiado a menudo. Slo es posible forzar el servicio si el servidor principal est inactivo, la sesin es asincrnica (la seguridad de transacciones est configurada en OFF) y la sesin no tiene un testigo (la propiedad WITNESS est configurada en OFF) o el testigo se ha conectado al servidor reflejado (esto es, hay qurum). Al forzar el servicio, el servidor reflejado asume la funcin de servidor principal y ofrece su copia de la base de datos a los clientes. Una vez forzado el servicio, los registros de transacciones que el servidor principal no haya enviado todava al servidor

155

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
reflejado se pierden. Por lo tanto, el servicio forzado debe limitarse a situaciones en las que sea aceptable la posible prdida de datos y sea crucial la disponibilidad inmediata de la base de datos.

Creacin de reflejo sincrnico de la base de datos (modo de alta seguridad) Cuando la seguridad de las transacciones se define como FULL, la sesin de creacin de reflejo de la base de datos se ejecuta en modo de alta seguridad y funciona de forma sincrnica despus de una fase inicial de sincronizacin. En este tema se describen los detalles de las sesiones de creacin de reflejo de la base de datos que estn configuradas para el funcionamiento sincrnico. En este tema se presupone que est familiarizado con los conceptos bsicos de las operaciones de creacin de reflejo de la base de datos. Para que una sesin funcione de forma sincrnica, el servidor reflejado debe sincronizar la base de datos reflejo con la base de datos de entidad de seguridad. Cuando la sesin se inicia, el servidor de entidad de seguridad comienza a enviar su registro activo al servidor reflejado. El servidor reflejado escribe todos los registros de entrada en el disco lo antes posible. Las bases de datos se sincronizan cuando todos los registros recibidos se escriben en el disco. Las bases de datos se sincronizan siempre y cuando los asociados permanezcan en comunicacin. Nota: Utilice la clase de evento Database Mirroring State Change para supervisar los cambios de estado en una sesin de creacin de reflejo de la base de datos. Cuando finaliza la sincronizacin, cada transaccin confirmada en la base de datos de entidad de seguridad tambin se confirma en el servidor reflejado, garantizando as la proteccin de los datos. Esto se consigue esperando la confirmacin de una transaccin en la base de datos de entidad de seguridad hasta que el servidor principal recibe un mensaje del servidor reflejado indicando que ha reforzado el registro de transacciones en el disco. Tenga en cuenta que la espera de este mensaje aumenta la latencia de la transaccin. El tiempo necesario para la sincronizacin depende bsicamente de la diferencia entre la base de datos reflejo y la base de datos de entidad de seguridad en el momento de iniciar la sesin (diferencia calculada por el nmero de registros inicialmente recibidos del servidor principal), la carga de trabajo en la base de datos principal y la velocidad del sistema reflejo. Una vez sincronizada una sesin, el registro reforzado que an debe rehacerse en la base de datos reflejada permanece en la cola de puesta al da. En cuanto se sincroniza la base de datos reflejo, el estado de ambas copias de base de datos cambia a SYNCHRONIZED. La operacin sincrnica se mantiene de la siguiente manera: 1. Al recibir una transaccin de un cliente, el servidor de entidad de seguridad escribe el registro para la transaccin en el registro de transacciones. El servidor de entidad de seguridad escribe la transaccin en la base de datos y, al mismo tiempo, enva el registro al servidor reflejado. El servidor de entidad de seguridad espera el reconocimiento del servidor reflejado antes de confirmar cualquiera de los elementos siguientes al cliente: una confirmacin de transaccin o una reversin. El servidor reflejado refuerza el registro en el disco y devuelve un reconocimiento al servidor de entidad de seguridad. Al recibir el reconocimiento del servidor reflejado, el servidor de entidad de seguridad enva un mensaje de confirmacin al cliente.

2.

3. 4.

El modo de alta seguridad protege los datos al hacer que sea necesario sincronizar los datos de dos lugares. Se garantiza que todas las transacciones confirmadas sern escritas en el disco del servidor reflejado.

Modo de alta seguridad sin conmutacin automtica por error

En la siguiente ilustracin se muestra la configuracin del modo de alta seguridad sin conmutacin automtica por error. La configuracin slo consta de dos asociados.

Cuando los asociados estn conectados y la base de datos ya est sincronizada, se admite la conmutacin por error manual. Si la instancia de servidor reflejado se bloquea, la instancia de servidor de entidad de seguridad no se ve afectada y queda expuesta (sin reflejar los datos). Si se pierde el servidor de entidad de seguridad, el reflejo se suspende, pero el servicio puede forzarse en el servidor reflejado (con una posible prdida de datos).

Modo de alta seguridad con conmutacin automtica por error

La conmutacin automtica por error ofrece una alta disponibilidad al garantizar que se pueda servir a la base de datos incluso despus de la prdida de un servidor. La conmutacin automtica por error requiere que la sesin disponga de una tercera instancia de servidor, el

156

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
testigo, que idealmente reside en un tercer equipo. En la siguiente ilustracin se muestra la configuracin de una sesin en modo de alta seguridad que admite la conmutacin automtica por error.

A diferencia de los dos asociados, el testigo no sirve a la base de datos. El testigo simplemente admite la conmutacin automtica por error al comprobar que el servidor de entidad de seguridad se encuentre activo y en funcionamiento. El servidor reflejado inicia la conmutacin automtica por error slo si ste y el testigo permanecen mutuamente conectados despus de haberse desconectado del servidor de entidad de seguridad. Cuando se define un testigo, la sesin requiere qurum, una relacin entre al menos dos instancias de servidor que permite que la base de datos pueda estar disponible. La conmutacin automtica por error requiere las condiciones siguientes:

La base de datos ya est sincronizada. El error se produce mientras estn conectadas las tres instancias de servidor, y el servidor testigo y el reflejado permanecen conectados.

La prdida de un asociado tiene el siguiente efecto:

Si la instancia de servidor de entidad de seguridad no est disponible en las condiciones anteriores, se produce la conmutacin automtica por error. El servidor reflejado cambia a la funcin de entidad de seguridad y ofrece su base de datos como base de datos de entidad de seguridad. Si el servidor de entidad de seguridad no est disponible cuando estas condiciones no se cumplen, se puede forzar el servicio (con una posible prdida de datos). Si nicamente el servidor reflejado no est disponible, la entidad de seguridad y el testigo continan.

Si la sesin pierde el testigo, el qurum requiere ambos asociados. Si uno de los asociados pierde el qurum, ambos lo pierden y la base de datos deja de estar disponible hasta que se restablece el qurum. El requisito de qurum garantiza que, en ausencia de un testigo, la base de datos no quede nunca expuesta, es decir, sin un reflejo. Nota: Si cree que el testigo va a permanecer desconectado durante bastante tiempo, se recomienda eliminarlo temporalmente de la sesin hasta que est disponible.

Configuracin de Transact-SQL y modos de funcionamiento de la creacin de reflejo de la base de datos

Este tema trata sobre el funcionamiento de una sesin de creacin de reflejo de la base de datos desde el punto de vista de la configuracin de ALTER DATABASE y de los estados de la base de datos reflejada y del testigo. Este tema est dirigido a los usuarios que administran la creacin de reflejo de la base de datos principal o exclusivamente mediante Transact-SQL, en vez de mediante Microsoft SQL Server Management Studio. Nota: Como alternativa al uso de Transact-SQL, puede controlar el modo de funcionamiento de una sesin en el Explorador de objetos mediante la pgina Creacin de reflejos del cuadro de dilogo Propiedades de la base de datos. Cmo la seguridad de transaccin y el estado del testigo afectan al modo de funcionamiento El modo de funcionamiento de una sesin viene determinado por la combinacin de su configuracin de seguridad de las transacciones y el estado del testigo. En cualquier momento, el propietario de la base de datos puede cambiar la configuracin de seguridad de las transacciones y puede agregar o quitar el testigo.

157

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Seguridad de las transacciones La seguridad de las transacciones es una propiedad de base de datos especfica de la creacin de reflejo que determina si una sesin de creacin de reflejo de base de datos funciona de forma sincrnica o asincrnica. Hay dos niveles de seguridad: FULL y OFF.

SAFETY FULL La seguridad de las transacciones completa hace que la sesin funcione de forma asincrnica en modo de alta seguridad. Si existe un testigo, una sesin admite la conmutacin automtica por error. Cuando se establece una sesin mediante instrucciones ALTER DATABASE, sta empieza con el valor SAFETY establecido en FULL; es decir, la sesin empieza en modo de alta seguridad. Una vez que se ha iniciado la sesin, puede agregarse un testigo.

SAFETY OFF Desactivar la seguridad de las transacciones hace que la sesin funcione de forma asincrnica, en modo de alto rendimiento. Si la propiedad SAFETY est establecida en OFF, la propiedad WITNESS tambin debe estar establecida en OFF (el valor predeterminado).

La configuracin de seguridad de las transacciones de la base de datos est registrada en cada asociado de la vista de catlogo sys.database_mirroring en las columnas mirroring_safety_level y mirroring_safety_level_desc. El propietario de la base de datos puede cambiar el nivel de seguridad de las transacciones en cualquier momento.

Estado del testigo Si se establece un testigo, es necesario que haya qurum, por lo que el estado del testigo ser siempre significativo. Si existe, el testigo tendr uno de estos dos estados:

Cuando el testigo est conectado a un asociado, el testigo tiene el estado CONNECTED en relacin con el asociado y tiene qurum con ese asociado. En este caso, la base de datos puede estar disponible, incluso si alguno de los asociados no est disponible. Cuando hay un testigo pero no est conectado a un asociado, el testigo tiene el estado UNKOWN o DISCONNECTED en relacin con el asociado. En este caso, el testigo carece de qurum con ese asociado y, si los asociados no estn conectados entre s, la base de datos se vuelve no disponible.

El estado de cada testigo en una instancia de servidor se registra en la vista de catlogo sys.database_mirroring, en las columnas mirroring_witness_state y mirroring_witness_state_desc. En la tabla siguiente se resume cmo el modo de funcionamiento de una sesin depende de su configuracin de seguridad de las transacciones y del estado del testigo. Modo de funcionamiento Seguridad de las transacciones Estado del testigo

Modo de alto rendimiento

OFF

NULL (sin testigo)2

Modo de alta seguridad sin conmutacin automtica por error

FULL

NULL (sin testigo)

Modo de alta seguridad con conmutacin automtica por error1

FULL

CONNECTED

1 Si el testigo se desconecta, se recomienda establecer WITNESS OFF hasta que la instancia del servidor testigo est disponible.
2

Si hay un testigo en modo de alto rendimiento, no participa en la sesin. Sin embargo, para que la base de datos est disponible, al menos dos de las instancias de servidor deben permanecer conectadas. Por lo tanto, se recomienda mantener la propiedad WITNESS establecida en OFF en las sesiones en modo de alto rendimiento.

Ver la configuracin de seguridad y el estado del testigo Para ver la configuracin de seguridad y el estado del testigo de una base de datos, utilice la vista de catlogo sys.database_mirroring. Las columnas relevantes son: Factor Columnas Descripcin

Seguridad

de

las mirroring_safety_level mirroring_safety_level_desc

o La configuracin de seguridad de las transacciones para las actualizaciones de la base de datos reflejada es una de las siguientes: UNKNOWN OFF

transacciones

158

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

FULL NULL= la base de datos no est en lnea.

Existe un testigo?

mirroring_witness_name

Nombre de servidor del testigo de creacin de reflejo de la base de datos o NULL, que indica que no existe ningn testigo.

Estado del testigo

mirroring_witness_state mirroring_witness_state_desc

o Estado del testigo en la base de datos en un determinado asociado: UNKNOWN CONNECTED DISCONNECTED NULL = no existe ningn testigo o la base de datos no est en lnea.

Por ejemplo, en el servidor principal o el servidor reflejado, escriba: SELECT mirroring_safety_level_desc, mirroring_witness_name, mirroring_witness_state_desc FROM sys.database_mirroring

Factores que afectan el comportamiento en caso de prdida del servidor principal En la tabla siguiente se resume el efecto combinado de la configuracin de seguridad de las transacciones, el estado de la base de datos y el estado del testigo en el comportamiento de una sesin de creacin de reflejos en caso de prdida del servidor principal. Seguridad de transacciones las Estado del reflejo de la base Estado de datos reflejada testigo del Comportamiento al perderse el servidor principal

FULL

SYNCHRONIZED

CONNECTED

Se produce la conmutacin automtica por error.

FULL

SYNCHRONIZED

DISCONNECTED

El servidor reflejado se detiene; la conmutacin por error no es posible y no se puede hacer que la base de datos est disponible.

OFF

SUSPENDED o DISCONNECTED NULL (sin testigo)

El servicio se puede forzar en el servidor reflejado (con posible prdida de datos).

FULL

SYNCHRONIZING SUSPENDED

o NULL (sin testigo)

El servicio se puede forzar en el servidor reflejado (con posible prdida de datos).

Conmutacin de funciones durante una sesin de creacin de reflejo de la base de datos En el contexto de una sesin de creacin de reflejo de la base de datos, las funciones principal y reflejo suelen ser intercambiables en un proceso conocido como conmutacin de funciones. En la conmutacin de funciones, el servidor reflejado acta como el asociado de conmutacin por error para el servidor principal al asumir la funcin principal, y al recuperar su copia de la base de datos y ponerla en lnea como la nueva base de datos principal. El servidor principal anterior, cuando est disponible, asumir la funcin reflejo y su base de datos se convertir en la nueva base de datos reflejada. Potencialmente, las funciones pueden conmutarse como respuesta a varios errores o con fines administrativos. En la siguiente ilustracin se muestran los asociados de creacin de reflejo Partner_A y Partner_B en el proceso de conmutacin de las funciones principal y reflejo durante una serie de conmutaciones por error automticas o manuales.

159

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Importante: Tras una conmutacin de funciones, los trabajos que se ejecutaron en la anterior base de datos principal se deben recrear en el nuevo servidor principal para que se ejecuten all. Existen tres tipos de conmutacin de funciones: conmutacin por error automtica, conmutacin por error manual y el servicio forzado (con posible prdida de datos).La compatibilidad con cada forma depende del modo operativo de la sesin. Nota: .

Conmutacin por error manual El modo de alta seguridad admite la conmutacin por error manual. Al sincronizar la base de datos, su propietario puede iniciar una conmutacin por error manual. La conmutacin por error manual se proporciona con fines administrativos. Conmutacin automtica por error En presencia de un testigo, el modo de alta seguridad admite la conmutacin automtica por error. La conmutacin automtica por error slo se produce con la prdida del servidor principal cuando el testigo y el servidor reflejado siguen conectados entre s y la base de datos ya est sincronizada. Forzar servicio (con posible prdida de datos) Se permite forzar el servicio en modo de alta seguridad si no hay ningn testigo definido y en modo de alto rendimiento. Al perderse el servidor principal, el propietario de la base de datos puede hacer que sta est disponible forzando el servicio en el servidor reflejado (con posible prdida de datos). Nota: Se recomienda establecer la propiedad WITNESS en OFF en modo de alto rendimiento. De lo contrario, para poner la base de datos en lnea, el servidor reflejado debe estar conectado al testigo.

En la siguiente tabla se resumen las formas de conmutacin por error admitidas en cada uno de los modos operativos. Alto rendimiento Modo de alta seguridad sin ningn Modo de alta seguridad con un testigo testigo

Conmutacin error

automtica

por No

No

Conmutacin por error manual

No

160

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Servicio forzado

No

Tras una conmutacin de funciones, deben existir ciertos metadatos en ambos asociados para garantizar que todos los usuarios de bases de datos puedan tener acceso a la nueva base de datos principal. Adems, se deben crear los trabajos de copia de seguridad en el nuevo servidor principal para garantizar que se siga realizando una copia de seguridad de la base de datos de acuerdo con su programacin peridica. Durante una conmutacin de funciones, la cantidad de tiempo que la creacin de reflejo de la base de datos estar sin servicio depende del tipo de conmutacin de funciones y de la causa. Reparacin automtica de la pgina durante una sesin de creacin de reflejo de la base de datos

A partir de SQL Server 2008, un asociado de creacin de reflejo de la base de datos intenta recuperar automticamente las pginas daadas de la base de datos reflejada resolviendo ciertos tipos de errores que impiden leer una pgina de datos. El socio que no puede leer una pgina solicita una copia nueva al otro socio. Si la solicitud se realiza correctamente, la copia sustituir a la pgina que no se puede leer, de forma que se resuelve el error en la mayora de los casos. Nota: La reparacin automtica de la pgina por parte de asociados de creacin de reflejo de la base de datos difiere de la reparacin de DBCC. Una reparacin automtica de la pgina conserva todos los datos. En cambio, es posible que sea necesario eliminar algunas pginas y, por lo tanto, algunos datos cuando se utiliza la opcin REPAIR_ALLOW_DATA_LOSS de DBCC para la correccin de errores. Tipos de errores que provocan un intento de reparacin de pgina automtica La reparacin de pgina automtica de la creacin de reflejo de la base de datos intenta reparar nicamente aquellas pginas de un archivo de datos en las que una operacin no se ha realizado correctamente debido a uno de los errores que se muestran en la siguiente tabla. Nmero de Descripcin error Instancias que provocan el intento de una reparacin de pgina automtica

823

Se toman medidas solo cuando el sistema operativo ha realizado una ERROR_CRC. El valor del sistema operativo para prueba cclica de redundancia (CRC) en la que se ha producido un este error es de 23. error en los datos.

824

Errores lgicos.

Los errores de datos lgicos, como la escritura incompleta o la suma incorrecta de comprobacin de pgina.

829

Se ha marcado una pgina como pendiente de restauracin.

Todos.

Tipos de pginas que no se pueden reparar automticamente La creacin de reflejo de la base de datos puede reparar los tipos de pginas de control siguientes:

Pgina de cabecera del archivo (Id. 0 de pgina).

Pgina 9 (la pgina de inicio de la base de datos). Pginas de asignacin: pginas del mapa de asignacin global (GAM), pginas del mapa de asignacin global compartido (SGAM) y pginas de espacio disponible en pginas (PFS).

Control de errores de E/S en la base de datos principal

En la base de datos principal, solo se intentar realizar la reparacin de pgina automtica cuando el nodo est en el estado SYNCHRONIZED y el servidor principal todava est enviando las entradas del registro al servidor reflejado. A continuacin se muestra la secuencia bsica de acciones en un intento de reparacin de pgina automtica:

1.

Cuando se produce un error de lectura en una pgina de datos de la base de datos principal, el servidor principal inserta una fila en la tabla suspect_pages con el estado del error adecuado. El servidor principal solicita a continuacin una copia de la pgina del servidor reflejado. La solicitud especifica el identificador de la pgina y el LSN que se encuentra actualmente al final del registro vaciado. La pgina se marca como pendiente de restauracin. Esto hace que no se pueda tener acceso a ella durante el intento de reparacin de pgina automtica. Si se pretende tener acceso a esta pgina durante el intento de reparacin, se producir el error 829 (pendiente de restauracin).

161

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
2. Despus de recibir la solicitud de la pgina, el servidor reflejado espera hasta que haya vuelto a crear el registro del LSN especificado en la solicitud. A continuacin, el servidor reflejado intenta tener acceso a la pgina en la base de datos reflejada. Si se puede tener acceso a la pgina, el servidor reflejado enva la copia de la pgina al servidor principal. De lo contrario, el servidor reflejado devuelve un error al servidor principal y se produce un error en el intento de reparacin de pgina automtica. El servidor principal procesa la respuesta que contiene la copia nueva de la pgina.

3.

4.
5.

Despus de que el intento de reparacin de pgina automtica repare una pgina sospechosa, la pgina se marcar en la tabla suspect_pages como restaurada (event_type = 4). Si el error de E/S de la pgina ha producido transacciones diferidas despus de reparar la pgina, el servidor principal intentar resolver esas transacciones.

Control de los errores de E/S en la base de datos reflejada

Los errores de E/S en las pginas de datos que se producen en la base de datos reflejada se controlan de la siguiente manera.

1.

Si el servidor reflejado encuentra uno o ms errores de E/S en las pginas cuando vuelve a generar una entrada del registro, la sesin de creacin de reflejo establece el estado SUSPENDED. En ese momento, el servidor reflejado inserta una fila en la tabla suspect_pages con el estado de error adecuado. A continuacin, el servidor reflejado solicita al servidor principal una copia de la pgina. El servidor principal intenta tener acceso a la pgina en la base de datos principal. Si se puede tener acceso a la pgina, el servidor principal enva la copia de la pgina al servidor reflejado.

2.

3.

Si el servidor reflejado recibe copias de cada pgina que ha solicitado, el servidor reflejado intentar reanudar la sesin de creacin de reflejo. Cuando un intento de reparacin de pgina automtica corrige una pgina sospechosa, sta aparece marcada en la tabla suspect_pages como restaurada (event_type = 4). Si un servidor reflejado no recibe ninguna de las pginas solicitadas por el servidor principal, el intento de reparacin de pgina automtica no se realizar correctamente y la sesin de creacin de reflejo permanecer suspendida. Si se reanuda la sesin de creacin de reflejo manualmente, se tendrn en cuenta de nuevo las pginas daadas durante la fase de sincronizacin.

Prcticas recomendadas para el desarrollador de software La reparacin de pgina automtica es un proceso asincrnico que se ejecuta en segundo plano. Por consiguiente, incluso para una base de datos reflejada, se producir un error en una operacin de base de datos que solicite una pgina que no se pueda leer, y sta devolver el cdigo de error acerca de las condiciones que han provocado el error. Al desarrollar una aplicacin para una base de datos reflejada, debera interceptar las excepciones relativas a las operaciones con errores. Si el cdigo de error de SQL Server es 823, 824 u 829, debera volver a intentar dicha operacin ms adelante. Estados de creacin de reflejo Durante una sesin de creacin de reflejo de la base de datos, la base de datos reflejada siempre se encuentra en un estado especfico (el estado de creacin de reflejo). El estado de la base de datos refleja el estado de la comunicacin, el flujo de datos y la diferencia de datos entre los asociados. La sesin de creacin de reflejo de la base de datos adopta el mismo estado que la base de datos de la entidad de seguridad. Durante una sesin de creacin de reflejo de una base de datos, las instancias de servidor se supervisan entre s. Los asociados usan el estado de creacin de reflejo para supervisar la base de datos. A excepcin del estado PENDING_FAILOVER, las bases de datos de la entidad de seguridad y reflejada siempre tienen el mismo estado. Si se establece un token para la sesin, cada uno de los asociados supervisa el token mediante su estado de conexin (CONNECTED o DISCONNECTED). Los estados posibles de creacin de reflejo de la base de datos son: Estado de de reflejo creacin Descripcin

SYNCHRONIZING

El contenido de la base de datos reflejada va por detrs del contenido de la base de datos de la entidad de seguridad. El servidor de la entidad de seguridad va enviando entradas del registro al servidor reflejado, que est aplicando los cambios a la base de datos reflejada para ponerla al da. Al inicio de una sesin de creacin de reflejo de la base de datos, la base de datos se encuentra en el estado SYNCHRONIZING. En este estado, el servidor de la entidad de seguridad sigue dando servicio a la base de datos, mientras que el reflejado intenta ponerse al da.

SYNCHRONIZED

El estado de creacin de reflejo cambia a SYNCHRONIZED cuando el servidor reflejado est suficientemente al da con respecto al servidor de la entidad de seguridad. La base de datos permanece en este estado mientras el servidor de la entidad de seguridad contina con el envo de cambios al servidor reflejado, y el servidor reflejado contina con la aplicacin de los cambios en la base de datos reflejada. Si la seguridad de las transacciones se establece en FULL, se admite la conmutacin automtica por error y la conmutacin manual por error en el estado SYNCHRONIZED; no hay prdida de datos tras la conmutacin por

162

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

error. Si la seguridad de las transacciones est desactivada, siempre es posible sufrir alguna prdida de datos, incluso en el estado SYNCHRONIZED.

SUSPENDED

La copia reflejada de la base de datos no est disponible. La base de datos de la entidad de seguridad se ejecuta sin enviar registros al servidor reflejado, condicin conocida como ejecucin expuesta. ste es el estado despus de una conmutacin por error. Una sesin tambin puede tener el estado SUSPENDED como resultado de errores al rehacer, o bien si el administrador pone en pausa la sesin. SUSPENDED es un estado persistente que sobrevive a los apagados e inicios de los asociados.

PENDING_FAILOVER

Este estado se encuentra slo en el servidor de la entidad de seguridad despus de que se haya iniciado una conmutacin por error, pero el servidor todava no se ha pasado a la funcin de reflejo. Cuando se inicia la conmutacin por error, la base de datos de la entidad de seguridad pasa al estado PENDING_FAILOVER, finaliza rpidamente cualquier conexin de usuario y asume la funcin de reflejo inmediatamente.

DISCONNECTED

El asociado ha perdido la comunicacin con el otro asociado.

Implementacin de la creacin de reflejo de la base de datos Esta seccin contiene informacin sobre cmo configurar el reflejo de la base de datos y cmo conectar los clientes a una base de datos reflejada. Configurar la creacin de reflejo de la base de datos En esta seccin se describen los requisitos previos, las recomendaciones y los pasos para configurar la creacin de reflejo de la base de datos. Importante: Se recomienda configurar la creacin de reflejo de la base de datos durante los periodos de poca actividad, dado que este proceso puede afectar al rendimiento.

a) Requisitos previos, restricciones y recomendaciones para la creacin de reflejo de la base de datos En este tema se describen los requisitos previos y las recomendaciones para configurar la creacin de reflejo de la base de datos. Nota: El formato de almacenamiento en disco de SQL Server es el mismo en los entornos de 64 bits y 32 bits. Por lo tanto, una sesin de creacin de reflejo de la base de datos puede combinar instancias del servidor que se ejecuten en entornos de 32 bits e instancias del servidor que se ejecuten en entornos de 64 bits. Requisitos previos Para poder configurar la creacin de reflejo de la base de datos, debe hacer lo siguiente:

Para establecer una nueva sesin de creacin de reflejo, los asociados y el testigo, si los hay, deben estar en ejecucin en la misma versin de SQL Server. Asegrese de que los dos servidores asociados: el servidor principal y el servidor reflejado, estn ejecutando la misma edicin de Microsoft SQL Server. Solo SQL Server 2005 Standard y las versiones posteriores, as como SQL Server 2005 Enterprise Edition y sus versiones posteriores admiten asociados de creacin de reflejo de la base de datos. La operacin asincrnica de creacin de reflejo de la base de datos (modo de alto rendimiento) solo se admite en SQL Server 2005 Enterprise Edition y versiones posteriores. Si usa un testigo, asegrese de que est instalado SQL Server 2005 o una versin posterior en el sistema. El testigo puede ejecutarse en cualquier equipo de confianza que admita las ediciones Standard, Enterprise, Workgroup o Express. Asegrese de que el servidor reflejado tenga suficiente espacio en disco para la base de datos reflejada.

163

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Al crear la base de datos reflejada en el servidor reflejado, asegrese de restaurar la copia de seguridad de la base de datos principal especificando la misma base de datos con la opcin WITH NORECOVERY. Adems, todas las copias de seguridad de registros creadas despus de realizar esa copia de seguridad deben aplicarse de nuevo con WITH NORECOVERY. Importante: Si la creacin de reflejo de la base de datos se ha detenido, para poder reiniciarla, cualquier copia de seguridad de registros posterior que se realice en la base de datos principal se debe aplicar a la base de datos reflejada.

La creacin de reflejo de una base de datos funciona con cualquier nivel de compatibilidad con bases de datos.

Restricciones La creacin de reflejo de la base de datos no es compatible con FILESTREAM. No se puede crear un grupo de archivos FILESTREAM en el servidor principal. La creacin de reflejo de la base de datos no puede configurarse para una base de datos que contiene grupos de archivos FILESTREAM. En un sistema de 32 bits, la creacin de reflejo de la base de datos puede admitir un mximo de 10 bases de datos por instancia de servidor debido a los nmeros de subproceso de trabajo consumidos por cada sesin de creacin de reflejo de la base de datos. La creacin de reflejo de la base de datos no est admitida con transacciones entre bases de datos o transacciones distribuidas.

Recomendaciones para configurar servidores asociados

Los servidores asociados deben ejecutarse en sistemas comparables que puedan manejar cargas de trabajo idnticas. Nota: Si piensa usar el modo de alta seguridad con conmutacin automtica por error, la carga normal de cada uno de los servidores asociados de conmutacin por error debe usar la CPU en un porcentaje menor del 50 por ciento. Si se sobrecarga la CPU, un servidor asociado de conmutacin por error podra ser incapaz de hacer ping a las otras instancias de servidor en la sesin de creacin de reflejo. Esto produce una conmutacin por error innecesaria. Si no puede mantener el uso de la CPU por debajo del 50 por ciento, se recomienda usar el modo de alta seguridad sin conmutacin automtica por error o el modo de alto rendimiento.

Si es posible, la ruta de acceso (incluida la letra de unidad) de la base de datos reflejada debera ser idntica a la de la base de datos principal. Debe incluir la opcin MOVE en la instruccin RESTORE si los diseos de archivo deben ser distintos. Por ejemplo, si la base de datos principal est en unidad 'F:' y en el sistema reflejado no existe la unidad F:. Importante: Si mueve los archivos de la base de datos al crear la base de datos reflejada, es posible que no pueda agregar archivos a la base de datos posteriormente sin que se tenga que suspender la creacin de reflejo.

Todas las instancias de servidor de una sesin reflejada deberan usar la misma intercalacin y pgina de cdigos principal. Las diferencias pueden causar un problema durante la configuracin de la creacin de reflejo. Otra opcin sera calcular el tiempo para la conmutacin por error en una base de datos para asegurarse de que la configuracin del sistema ofrecer el rendimiento necesario. Para obtener el mejor rendimiento, utilice un adaptador de red (tarjeta de interfaz de red) dedicado para la creacin de reflejo. No hay ninguna recomendacin acerca de si una red de rea extensa (WAN) es lo suficientemente confiable para la creacin de reflejo de la base de datos en modo de alta seguridad. Si decide usar el modo de alta seguridad en una WAN, tenga cuidado al agregar un testigo a la sesin, ya que se pueden producir conmutaciones automticas por error no deseadas.

Recomendaciones para implementar la creacin de reflejo de la base de datos El rendimiento ptimo de la creacin de reflejo de la base de datos se obtiene mediante el funcionamiento asincrnico. Una sesin de creacin de reflejo que utiliza el funcionamiento sincrnico puede disminuir el rendimiento cuando su carga de trabajo genera grandes cantidades de datos del registro de transacciones. En entornos de prueba, es adecuado explorar todos los modos de funcionamiento para evaluar la forma en que tiene lugar la creacin de reflejo de la base de datos. Sin embargo, antes de implementar la creacin de reflejo en un entorno de produccin, asegrese de que comprende cmo funciona red en la realidad. El modo de alta seguridad con conmutacin automtica por error est diseado para una red con un servicio elevado y una conexin dedicada, o bien para una configuracin de red bastante sencilla que minimice los orgenes de posibles errores de red. Dicho entorno de red de alta calidad es necesario para el modo de alta seguridad con conmutacin automtica por error y es recomendable en todas las sesiones

164

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
de creacin de reflejo de la base de datos. Sin embargo, la confiabilidad de la red afecta mucho menos a los modos de alto rendimiento y de alta seguridad sin conmutacin automtica por error. Por tanto, para entornos de produccin, se recomienda que siga estas directrices de implementacin. 1. Comience ejecutando en el modo de alto rendimiento asincrnico. Este modo es el menos sensible al entorno de red y proporciona la mejor configuracin para explorar la forma en que funciona la creacin de reflejo. Se recomienda ejecutar el sistema de manera asincrnica hasta que est seguro de que el ancho de banda admite la creacin de reflejo y ha desarrollado conocimientos de la configuracin de la creacin de reflejo y del rendimiento del modo asincrnico en el entorno. Importante: A travs de las pruebas, se recomienda controlar las sesiones en busca de errores de red que impidan la creacin de reflejo de la base de datos. 2. Cuando est seguro de que el funcionamiento asincrnico cumple las necesidades empresariales, puede que desee intentar el funcionamiento sincrnico para mejorar la proteccin de datos. Cuando pruebe la manera en que funciona la creacin de reflejo sincrnica en el entorno, se recomienda probar primero el modo de alta seguridad sin conmutacin automtica por error. El fin principal de esta prueba es comprobar cmo afecta el funcionamiento sincrnico al rendimiento de la base de datos. Espere a habilitar la conmutacin automtica por error hasta que tenga la seguridad de que el modo de alta seguridad sin conmutacin automtica por error cumple las necesidades empresariales y que los errores de red no estn ocasionando problemas.

3.

b) Extremo de creacin de reflejo de la base de datos La administracin de conexiones en Microsoft SQL Server 2005 y versiones posteriores se basa en extremos. Un extremo es un objeto de SQL Server que permite a SQL Server comunicarse por la red. En la creacin de un reflejo de una base de datos, una instancia de servidor requiere su propio extremo de creacin de reflejo de la base de datos dedicado. Todas las conexiones de creacin de reflejo en una instancia de servidor utilizan un nico extremo de reflejo de la base de datos. Se trata de un extremo especial que se utiliza exclusivamente para recibir conexiones de creacin de reflejo de la base de datos procedentes de otras instancias de servidor. Nota: Las conexiones de cliente al servidor principal no usan el extremo de creacin de reflejo de la base de datos. Los extremos de creacin de reflejo de la base de datos utilizan el Protocolo de control de transporte (TCP, Transmission Control Protocol) para enviar y recibir mensajes entre instancias de servidor en sesiones de creacin de reflejo de la base de datos. Cada extremo de creacin de reflejo de la base de datos se escucha en un nmero de puerto TCP diferente. El extremo de creacin de reflejo de la base de datos de una instancia de servidor controla el puerto en el que dicha instancia escucha los mensajes de creacin de reflejo de la base de datos de otras instancias de servidor.

Direccin de red de servidor La direccin de red de una instancia de servidor (su direccin de red de servidor) contiene el nmero de puerto de su extremo, as como el nombre de sistema y de dominio del equipo host. Dado que cada servidor cuenta con un extremo para la creacin de reflejo distinto que utiliza un puerto exclusivo, el nmero de puerto identifica de forma exclusiva una instancia de servidor especfica. Esto permite que varias instancias de servidor en un mismo servidor participen en la creacin del reflejo de la base de datos (que slo se suele realizar con fines de pruebas). En la siguiente ilustracin se muestra cmo dos instancias de servidor en el mismo servidor se identifican de forma exclusiva. Las direcciones de red de las dos instancias de servidor contienen el mismo nombre de sistema, MYSYSTEM, y el mismo nombre de dominio, Adventure-Works.MyDomain.com. Para habilitar el sistema de forma que enrute conexiones a una instancia de servidor, una direccin de red de servidor incluye el nmero de puerto asociado al extremo para la creacin de reflejo de una instancia de servidor en particular.

165

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Nota: Estos extremos se pueden utilizar para activar o desactivar toda la funcionalidad de creacin de reflejo para la instancia. De forma predeterminada, una instancia de SQL Server no contiene un extremo de creacin de reflejo de la base de datos. stos se deben crear manualmente como parte de la configuracin de la sesin de creacin de reflejo de la base de datos. El administrador del sistema debe crear un extremo independiente en cada instancia de servidor que participe en la creacin del reflejo de la base de datos. Nota de seguridad: Si el equipo que ejecuta SQL Server dispone de firewall, la configuracin de ste debe permitir conexiones entrantes y salientes en el puerto especificado en el extremo. Para la creacin del reflejo de la base de datos, la autenticacin y el cifrado se configuran en el extremo. Importante: No reconfigure un extremo de creacin de reflejo de la base de datos en uso. Las instancias de servidor usan los extremos de todas las dems instancias para conocer el estado de los otros sistemas. Si reconfigura el extremo, podra reiniciarse, lo que podra parecer un error en las otras instancias de servidor. Esto es especialmente importante en el modo de alta seguridad con conmutacin automtica por error, en el que reconfigurar el extremo en un asociado podra dar lugar a una conmutacin por error. Cada instancia de servidor de creacin de reflejo de base de datos requiere un puerto de escucha nico asignado al extremo de creacin de reflejo de base de datos de la instancia. Una instancia de servidor slo puede tener un extremo de creacin de reflejo de base de datos, que tiene un puerto nico. Un extremo de creacin de reflejo de base de datos puede utilizar cualquier puerto disponible en el sistema local cuando se crea el extremo. Todas las sesiones de creacin de reflejo de base de datos de una instancia de servidor escuchan en dicho puerto y todas las conexiones entrantes para la creacin de reflejo de base de datos utilizan dicho puerto. Al crear el extremo, un administrador del sistema especifica los mtodos de autenticacin y cifrado de la instancia del servidor. Importante: Si existe un extremo para la creacin de reflejo de la base de datos y ya se est utilizando, utilice ese extremo para cualquier otra sesin que establezca en la instancia de servidor. Si quita un extremo en uso, se interrumpirn las conexiones de las sesiones existentes. Si se ha establecido un testigo para una sesin, la eliminacin del extremo de reflejo de la base de datos puede hacer que el servidor principal de esa sesin pierda qurum; si sucede esto, la base de datos se queda sin conexin y los usuarios quedan desconectados.

166

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Para crear un extremo de reflejo utilizando la autenticacin de Windows 1. 2. Conecte con la instancia del servidor para la que desea crear un extremo de reflejo de la base de datos. Determine si ya existe un extremo de reflejo de la base de datos utilizando la siguiente instruccin: SELECT name, role_desc, state_desc FROM sys.database_mirroring_endpoints Importante: Si ya existe un extremo de reflejo para la instancia del servidor, utilice ese extremo para todas las otras sesiones que establezca en la instancia del servidor. 3. Para usar Transact-SQL para crear un extremo que se utilice con la autenticacin de Windows, utilice la instruccin CREATE ENDPOINT. La instruccin toma la siguiente forma general: CREATE ENDPOINT <endpointName> STATE=STARTED AS TCP ( LISTENER_PORT = <listenerPortList> ) FOR DATABASE_MIRRORING ( [ AUTHENTICATION = WINDOWS [ <authorizationMethod> ] ] [ [,] ENCRYPTION = REQUIRED [ ALGORITHM { <algorithm> } ] ] [,] ROLE = <role> ) donde

o o

<endpointName> es un nombre exclusivo para el extremo de reflejo de la base de datos de la instancia del servidor.

STARTED especifica que el extremo debe iniciarse y que debe empezar a escuchar las conexiones. Un extremo de reflejo de base de datos normalmente se crea en el estado STARTED. Opcionalmente, puede iniciar una sesin en el estado STOPPED (valor predeterminado) o DISABLED.

<listenerPortList> es un nmero de puerto nico (nnnn) en el que desea que el servidor escuche los mensajes de creacin de reflejo de base de datos. Slo se permite TCP; si se especifica cualquier otro protocolo se provoca un error. Un nmero de puerto slo se puede usar una vez por sistema. Un extremo de creacin de reflejo de base de datos puede utilizar cualquier puerto disponible en el sistema local cuando se crea el extremo. Para identificar los puertos que estn usando los extremos TCP del sistema, utilice la siguiente instruccin Transact-SQL:

SELECT name, port FROM sys.tcp_endpoints Importante: Cada instancia del servidor requiere slo un puerto de escucha nico.

Para la autenticacin de Windows, la opcin AUTHENTICATION es opcional, a menos que desee que el extremo utilice slo NTLM o Kerberos para autenticar conexiones. <authorizationMethod> especifica el mtodo que se utiliza para autenticar conexiones como uno de los siguientes: NTLM, KERBEROS o NEGOTIATE. El valor predeterminado, NEGOTIATE, hace que el extremo utilice el protocolo de negociacin de Windows para elegir NTLM o Kerberos. La negociacin habilita conexiones con o sin autenticacin, dependiendo del nivel de autenticacin del extremo opuesto.

ENCRYPTION se establece en REQUIRED de forma predeterminada. Esto significa que todas las conexiones con este punto final deben usar cifrado. No obstante, puede deshabilitar el cifrado o hacer que sea opcional en un extremo. Las alternativas son las siguientes: Valor Definicin

DISABLED

Especifica que los datos enviados en una conexin no estn cifrados.

167

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

SUPPORTED

Especifica que los datos estn cifrados slo si el extremo opuesto especifica SUPPORTED o REQUIRED.

REQUIRED

Especifica que los datos enviados en una conexin deben estar cifrados.

o o

Si un extremo requiere cifrado, el otro extremo debe tener ENCRYPTION establecido en SUPPORTED o REQUIRED.

<algorithm> proporciona la opcin de especificar estndares de cifrado para el extremo. El valor de <algorithm> puede ser uno de los siguientes algoritmos o combinaciones de algoritmos: RC4, AES, AES RC4 o RC4 AES. AES RC4 especifica que este extremo negociar el algoritmo de cifrado, dando preferencia al algoritmo AES. RC4 AES especifica que este extremo negociar el algoritmo de cifrado, dando preferencia al algoritmo RC4. Si ambos extremos especifican ambos algoritmos pero en rdenes diferentes, el extremo que acepta la conexin gana. Nota: Aunque es notablemente ms rpido que AES, RC4 es un algoritmo relativamente dbil, mientras que AES es un algoritmo relativamente fuerte. Por tanto, se recomienda que utilice el algoritmo AES.

<role> define la funcin o las funciones que el servidor puede llevar a cabo. Se tiene que especificar ROLE. Para permitir que una instancia de servidor sirva como una funcin para una sesin de reflejo de base de datos y una funcin diferente para otra sesin, especifique ROLE=ALL. Para hacer que la instancia de un servidor slo sea un asociado o un testigo, especifique ROLE=PARTNER o ROLE=WITNESS, respectivamente.

Nota: En SQL Server Express, WITNESS es la nica opcin disponible.

En el siguiente ejemplo se crean dos extremos para las instancias de servidor predeterminadas en tres sistemas independientes: Funcin de la instancia de servidor Nombre del equipo host

Asociado (inicialmente en la funcin principal)

SQLHOST01\.

Asociado (inicialmente en la funcin de reflejo)

SQLHOST02\.

Testigo

SQLHOST03\.

En este ejemplo, los tres extremos utilizan el nmero de puerto 7022, aunque funcionara cualquier nmero de puerto disponible. La opcin AUTHENTICATION no es necesaria, porque los extremos utilizan el tipo predeterminado, Autenticacin de Windows. La opcin ENCRYPTION tampoco es necesaria, porque se supone que los extremos van a negociar el mtodo de autenticacin de una conexin, que es el comportamiento predeterminado para la autenticacin de Windows. Adems, todos los extremos requieren cifrado, que es el comportamiento predeterminado. Cada instancia de servidor se limita a actuar como asociado o como testigo, y el extremo de cada servidor especifica expresamente la funcin (ROLE=PARTNER o ROLE=WITNESS). Importante: Cada instancia de servidor slo puede tener un extremo. Por lo tanto, si desea que una instancia de servidor acte como asociado en ciertas sesiones y como testigo en otras, especifique ROLE=ALL. --Endpoint for initial principal server instance, which --is the only server instance running on SQLHOST01. CREATE ENDPOINT endpoint_mirroring STATE = STARTED AS TCP ( LISTENER_PORT = 7022 ) FOR DATABASE_MIRRORING (ROLE=PARTNER); GO --Endpoint for initial mirror server instance, which --is the only server instance running on SQLHOST02. CREATE ENDPOINT endpoint_mirroring STATE = STARTED AS TCP ( LISTENER_PORT = 7022 ) FOR DATABASE_MIRRORING (ROLE=PARTNER); GO --Endpoint for witness server instance, which --is the only server instance running on SQLHOST03. CREATE ENDPOINT endpoint_mirroring STATE = STARTED AS TCP ( LISTENER_PORT = 7022 ) FOR DATABASE_MIRRORING (ROLE=WITNESS); GO

168

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Cmo permitir que la creacin de reflejo de la base de datos utilice certificados para las conexiones salientes (Transact-SQL)

En este tema se describen los pasos necesarios para configurar instancias de servidor que utilicen certificados para autenticar conexiones salientes en la creacin de un reflejo de base de datos. La configuracin de conexiones salientes se debe realizar antes de que se puedan configurar conexiones entrantes. Nota: Todas las conexiones de creacin de reflejo de una instancia de servidor utilizan un nico extremo para la creacin de un reflejo de base de datos y, al crear el extremo, se debe especificar el mtodo de autenticacin de la instancia de servidor. El proceso de configuracin de conexiones salientes implica los siguientes pasos generales:

1. 2.
3. 4.

En la base de datos master, cree una clave maestra de la base de datos.

En la base de datos master, cree un certificado cifrado en la instancia de servidor. Cree un extremo para la instancia de servidor con su certificado. Realice una copia de seguridad del certificado en un archivo y cpiela de forma segura en el otro sistema (o en los otros sistemas).

Debe llevar a cabo estos pasos para cada asociado y el testigo, si procede. El siguiente procedimiento describe estos pasos con ms detalle. En cada paso, el procedimiento proporciona un ejemplo de configuracin de una instancia de servidor en un sistema denominado HOST_A. La seccin Ejemplo asociada muestra los mismos pasos para otra instancia de servidor en un sistema denominado HOST_B. Procedimiento Para configurar instancias del servidor para conexiones salientes de creacin de reflejo (en HOST_A)

1.

En la base de datos master, cree la clave maestra de la base de datos si no existe ninguna. Para ver las claves existentes en una base de datos, utilice la vista de catlogo sys.symmetric_keys. Para crear la clave maestra de la base de datos, utilice el siguiente comando de Transact-SQL: CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>'; GO Utilice una contrasea segura nica y regstrela en un lugar seguro.

2.

En la base de datos master, cree un certificado cifrado en la instancia de servidor con el fin de utilizarlo en las conexiones salientes para la creacin de reflejo de la base de datos. Por ejemplo, para crear un certificado para el sistema HOST_A. USE master; CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate for database mirroring'; GO

Para ver los certificados de la base de datos master puede utilizar las siguientes instrucciones de Transact-SQL: USE master; SELECT * FROM sys.certificates; 3. Asegrese de que el extremo de creacin de reflejo de la base de datos existe en cada una de las instancias de servidor. Si ya existe un extremo de creacin de reflejo de la base de datos para la instancia de servidor, debe volver a utilizar dicho extremo para las dems sesiones que establezca en la instancia de servidor. Para determinar si existe un extremo de creacin de reflejo de la base de datos en una instancia de servidor y ver su configuracin, utilice la siguiente instruccin: SELECT name, role_desc, sys.database_mirroring_endpoints; state_desc, connection_auth_desc, encryption_algorithm_desc FROM

Si no existe ningn extremo, cree uno que utilice este certificado en las conexiones salientes y las credenciales del certificado en la comprobacin del otro sistema. Se trata de un extremo para todo el servidor que utilizan todas las sesiones de creacin de reflejo en las que participa la instancia de servidor. Por ejemplo, para crear un extremo de creacin de reflejo para la instancia del servidor de ejemplo en HOST_A. CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP ( LISTENER_PORT=7024 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING (

169

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
AUTHENTICATION = CERTIFICATE HOST_A_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL ); GO 4. 5. Realice una copia de seguridad del certificado y cpiela en el otro sistema (o en los otros sistemas). Esto es necesario para configurar conexiones entrantes en el otro sistema. BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer'; GO Copie este certificado mediante el mtodo seguro que elija. Debe tener mucho cuidado para mantener la seguridad de todos los certificados. El cdigo de ejemplo de los pasos anteriores configura conexiones salientes en HOST_A. No es necesario realizar los pasos salientes equivalentes en HOST_B. Estos pasos se describen en la siguiente seccin Ejemplo. Ejemplo En el siguiente ejemplo se muestra la configuracin de HOST_B para conexiones salientes. USE master; --Create the database Master Key, if needed. CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>'; GO -- Make a certifcate on HOST_B server instance. CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate for database mirroring'; GO --Create a mirroring endpoint for the server instance on HOST_B. CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP ( LISTENER_PORT=7024 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL ); GO --Backup HOST_B certificate. BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer'; GO --Using any secure copy method, copy C:\HOST_B_cert.cer to HOST_A. Copie el certificado en el otro sistema mediante el mtodo seguro que elija. Debe tener mucho cuidado para mantener la seguridad de todos los certificados. Importante: Despus de configurar conexiones salientes, debe configurar conexiones entrantes en cada instancia de servidor para la otra instancia (o instancias) de servidor.

Seguridad A menos que pueda garantizar que su red es segura, se recomienda utilizar cifrado para las conexiones de creacin de reflejo de la base de datos. Cuando copie un certificado en otro sistema, utilice un mtodo de copia seguro.

c) Seguridad en el transporte para la creacin del reflejo de una base de datos La seguridad en el transporte de SQL Server 2005 y versiones posteriores implica autenticacin y, opcionalmente, cifrado de los mensajes intercambiados entre las bases de datos. Para la creacin del reflejo de la base de datos, la autenticacin y el cifrado se configuran en el extremo.

Autenticacin Autenticacin es el proceso de comprobar que un usuario es quien dice ser. Las conexiones entre extremos de reflejo de base de datos requieren autenticacin. Las solicitudes de conexin desde un asociado o testigo, segn corresponda, deben autenticarse. El tipo de autenticacin que utilice la instancia de servidor es una propiedad del extremo de reflejo de la base de datos. Existen dos tipos de seguridad de transporte disponibles para la creacin de reflejo de la base de datos: autenticacin de Windows y autenticacin basada en certificados. La Autenticacin de Windows admite dos protocolos de autenticacin: NT LAN Manager (NTLM) y Kerberos. Se puede configurar un extremo de reflejo de base de datos para utilizar slo un protocolo o para negociar entre ellos. De forma predeterminada, se utiliza la negociacin. El valor predeterminado, NEGOTIATE, provoca que el extremo utilice el protocolo de negociacin de Windows para elegir entre NTLM o Kerberos. Si se especifica un mtodo de autorizacin determinado (NTLM o Kerberos) en un extremo, ste slo puede utilizar dicho mtodo. Si el extremo opuesto se configura para utilizar slo el otro mtodo, los extremos no se pueden conectar entre s.

170

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Una conexin de creacin de reflejo de la base de datos utiliza autenticacin de Windows (la Interfaz proveedora de funcionalidad de seguridad (SSPI)) o la autenticacin basada en certificados.

Autenticacin de Windows En la autenticacin de Windows, cada instancia de servidor inicia sesin en el otro lado mediante las credenciales de Windows de la cuenta de usuario de Windows en la que se ejecuta el proceso. Por este motivo, la autenticacin de Windows requiere que los servicios de SQL Server se ejecuten como usuarios de dominio en dominios de confianza o como servicios de red. Para autenticar los dos extremos de una conexin, la autenticacin de Windows utiliza las credenciales de la cuenta de usuario de Windows en la que se ejecutan las instancias de SQL Server. Por lo tanto, la cuenta de usuario de cada instancia de servidor debe disponer de los permisos necesarios para iniciar sesin y enviar mensajes a cada una de las dems instancias de servidor.

Certificados En ciertas situaciones, como cuando las instancias de servidor no estn en dominios de confianza o cuando SQL Server se ejecuta como servicio local, la autenticacin de Windows no est disponible. En estos casos, en lugar de credenciales de usuario, se requieren certificados para autenticar solicitudes de conexin. El extremo de creacin de reflejo de cada instancia de servidor debe configurarse con su propio certificado creado localmente. El mtodo de cifrado se establece al crear el certificado.Administre con cuidado los certificados que utilice. Una instancia de servidor utiliza la clave privada de su propio certificado para establecer su identidad al establecer una conexin. La instancia de servidor que recibe la solicitud de conexin utiliza la clave pblica del certificado del remitente para autenticar la identidad de ste. Por ejemplo, imagine dos instancias de servidor, Servidor_A y Servidor_B. Servidor_A utiliza su clave privada para cifrar el encabezado de la conexin antes de enviar una solicitud de conexin a Servidor_B. Servidor_B utiliza la clave pblica del certificado de Servidor_A para descifrar el encabezado de la conexin. Si el encabezado descifrado es correcto, Servidor_B sabe que el encabezado fue cifrado por Servidor_A y la conexin se autentica. Si el encabezado descifrado es incorrecto, Servidor_B sabe que la solicitud de conexin no es autntica y rechaza la conexin. Nota de seguridad: Instale slo certificados de orgenes de confianza. No hay ningn mtodo automatizado para configurar la seguridad de creacin de reflejo de la base de datos mediante certificados. Es necesario el uso de Transact-SQL Cifrado de datos De manera predeterminada, un extremo de creacin de reflejo de la base de datos requiere el cifrado de datos enviados en conexiones de creacin de reflejo. En este caso, slo se puede conectar el extremo a extremos que tambin utilicen cifrado. A menos que pueda garantizar que su red es segura, se recomienda requerir cifrado para las conexiones de creacin de reflejo de la base de datos. Sin embargo, puede deshabilitar el cifrado o hacerlo compatible, pero no obligatorio. Si se deshabilita el cifrado, los datos no se cifran nunca y el extremo no se puede conectar a otro extremo que requiera cifrado. Si se admite cifrado, los datos slo se cifran si el extremo opuesto admite o requiere cifrado. Nota: Los extremos de creacin de reflejo creados mediante SQL Server Management Studio se crean con cifrado obligatorio o deshabilitado. Para cambiar la configuracin de cifrado a SUPPORTED, utilice la instruccin ALTER ENDPOINT Transact-SQL. De manera opcional, puede controlar los algoritmos de cifrado que utiliza un extremo si especifica uno de los siguientes valores para la opcin ALGORITHM en un instruccin CREATE ENDPOINT o ALTER ENDPOINT: Valor ALGORITHM Descripcin

RC4

Especifica que el extremo debe utilizar el algoritmo RC4. ste es el valor predeterminado.

AES

Especifica que el extremo debe utilizar el algoritmo AES.

AES RC4

Especifica que los dos extremos negociarn un algoritmo de cifrado con este extremo, dando preferencia al algoritmo AES.

RC4 AES

Especifica que los dos extremos negociarn un algoritmo de cifrado con este extremo, dando preferencia al algoritmo RC4.

Si los extremos de conexin especifican estos dos algoritmos en distintas rdenes, el extremo que acepte la conexin gana. Nota: Aunque es notablemente ms rpido que AES, RC4 es un algoritmo relativamente dbil, mientras que AES es un algoritmo relativamente fuerte. Por tanto, se recomienda utilizar el algoritmo AES.

d) Preparar una base de datos reflejada para la creacin de reflejo

171

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Para poder empezar una sesin de creacin de reflejo, el propietario de la base de datos o el administrador del sistema debe asegurarse de que la base de datos reflejada se ha creado y est preparada para la creacin de reflejo. Crear una base de datos reflejada

La creacin de una base de datos reflejada requiere como mnimo que se haga una copia de seguridad completa de la base de datos de la entidad de seguridad y la subsiguiente copia de seguridad de registros, y que ambas se restauren en la instancia de servidor reflejado mediante WITH NORECOVERY. Para que la creacin de reflejo funcione, la base de datos reflejada debe permanecer en estado RESTORING. Adems, para poder iniciar la creacin de reflejo, si se hacen copias de seguridad adicionales de registros despus de la copia de seguridad de registros obligatoria, es preciso aplicar manualmente todas las copias de seguridad de registros adicionales, siempre mediante WITH NORECOVERY. Si se programa un trabajo de copia de seguridad de registros para que se ejecute muy a menudo en la base de datos, puede que sea necesario deshabilitar el trabajo de copia de seguridad hasta que se haya iniciado la creacin de reflejo. Despus de aplicar la copia de seguridad de registros ms reciente, se puede iniciar la creacin de reflejo y, si se ha deshabilitado, volver a habilitar el trabajo de copia de seguridad de registros. Nota: Slo se puede realizar una copia de seguridad del servidor de la entidad de seguridad actual. No es posible crear una copia de seguridad de la base de datos reflejada porque se encuentra en estado de restauracin (RESTORING).

Preparar una base de datos reflejada para reiniciar la creacin de reflejo Si la creacin de reflejo se ha eliminado y la base de datos reflejada sigue en el estado de recuperacin (RECOVERING), se puede reiniciar la creacin de reflejo. No obstante, en primer lugar se debe realizar al menos una copia de seguridad de registros de la base de datos de la entidad de seguridad. A continuacin, en la base de datos reflejada, debe restaurar WITH NORECOVERY todas las copias de seguridad de registros que se realizaron en la base de datos de la entidad de seguridad desde que se elimin la creacin de reflejo. e) Establecer una base de datos reflejada cifrada Para habilitar el descifrado automtico de la clave maestra de base de datos de una base de datos reflejada, debe proporcionar la contrasea que utiliz para cifrar la clave maestra a la instancia del servidor reflejado. SQL Server 2005 y las versiones posteriores incluyen mecanismos para transferir la contrasea. Utilice sp_control_dbmasterkey_password para crear una credencial para la clave maestra de base de datos antes de iniciar la creacin de reflejo de base de datos. Debe repetir este proceso para cada base de datos que se vaya a reflejar. Advertencia: No habilite el descifrado por error de una base de datos que debe permanecer inaccesible a sa y a otras entidades de seguridad de servidor con amplios privilegios. Puede configurar una base de datos de forma que su jerarqua de claves no pueda descifrarse con la clave maestra de servicio. Esta opcin se admite como una defensa para bases de datos que contienen informacin que no debe estar accesible para sa u otras entidades de seguridad de servidor con amplios privilegios. Si habilita el descifrado por error de este tipo de bases de datos eliminar la defensa, permitiendo as que sa y otras entidades de seguridad de servidor con amplios privilegios descifren la base de datos.

f) Configurar cuentas de inicio de sesin para la creacin de reflejo de la base de datos Para que dos instancias del servidor se comuniquen en una sesin de creacin de reflejo de la base de datos, la cuenta de inicio de sesin de cada instancia debe tener acceso a la otra instancia. Adems, cada cuenta de inicio de sesin requiere permiso de conexin al extremo de reflejo de la base de datos de la otra instancia.

Crear inicios de sesin de usuario La informacin de las bases de datos del sistema maestra y msdb no se puede reflejar. Por lo tanto, para que la conmutacin de funciones se ejecute correctamente para todos los usuarios de la base de datos, los inicios de sesin de usuario que tienen permisos de conexin a la instancia del servidor principal tambin deben existir en la instancia del servidor reflejado. El impacto de este requisito depende de si los asociados de creacin de reflejo de la base de datos se ejecutan como la misma cuenta de usuario de dominio:

Si los asociados se ejecutan como la misma cuenta de usuario de dominio, automticamente existen los inicios de sesin de usuario correctos en ambas bases de datos maestra. Esto simplifica la configuracin de seguridad de la base de datos y es recomendable su aplicacin. Si las instancias del servidor asociado se ejecutan como cuentas de usuario diferentes, los inicios de sesin del usuario de la instancia del servidor principal deben reproducirse manualmente en la instancia del servidor reflejado. Para evitar tener usuarios hurfanos despus de una conmutacin de funciones, debe mantener de forma rutinaria el mismo conjunto de inicios de sesin del usuario en las bases de datos principal y reflejada. No obstante, si los usuarios quedan hurfanos despus de una conmutacin de funciones, puede configurar sus inicios de sesin en ese momento.

Crear un inicio de sesin para otra cuenta

172

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Si dos instancias del servidor se ejecutan con cuentas diferentes, el administrador del sistema debe utilizar la instruccin Transact-SQL CREATE LOGIN para crear un inicio de sesin para la cuenta de servicio de inicio de la instancia remota en la tabla syslogins de la base de datos maestra de cada instancia del servidor. Importante: Si SQL Server se ejecuta con una cuenta que no sea de dominio, es necesario utilizar certificados. Por ejemplo, para que la instancia del servidor sqlA, que se ejecuta con loginA, se conecte a la instancia del servidor sqlB, que se ejecuta con loginB, loginA debe estar en la tabla syslogins de sqlB y loginB debe estar en la tabla syslogins de sqlA. Adems, en una sesin de creacin de reflejo de la base de datos que incluya una instancia del servidor testigo (sqlC) y en la que las tres instancias del servidor se ejecuten con diferentes cuentas de dominio, deben crearse los siguientes inicios de sesin: En la instancia... Cree inicios de sesin y conceda permiso de conexin para ...

sqlA

sqlB y sqlC

sqlB

sqlA y sqlC

sqlC

sqlA y sqlB

Nota: Es posible conectarse a la cuenta de servicio de red mediante la cuenta del equipo en lugar de un usuario de dominio. Si se utiliza la cuenta de equipo, debe agregarse como un usuario en la otra instancia del servidor.

Conceder permiso de conexin Una vez creado un inicio de sesin en una instancia del servidor, debe concederse al inicio de sesin permiso para conectarse al extremo de reflejo de la base de datos de la instancia del servidor. El administrador del sistema concede el permiso de conexin mediante una instruccin Transact-SQL GRANT.

g) Especificar una direccin de red de servidor (creacin de reflejo de la base de datos) La configuracin de una sesin de creacin de reflejo de la base de datos necesita una direccin de red de servidor para cada una de las instancias de servidor. La direccin de red de servidor de una instancia de servidor debe identificar sin ambigedades la instancia proporcionando una direccin del sistema y el nmero del puerto en el que la instancia escucha. Antes de que pueda especificar un puerto en una direccin de red de servidor, debe existir un extremo de creacin de reflejo de la base de datos en la instancia de servidor. Sintaxis para una direccin de red de servidor La sintaxis para una direccin de red de servidor tiene el siguiente formato: TCP :// < direccinDelSistema> : < puerto> donde

< direccinDelSistema> es una cadena que identifica de forma inequvoca al equipo de destino. Generalmente, la direccin del servidor es un nombre del sistema (si los sistemas estn en el mismo dominio), un nombre de dominio completo o una direccin IP:

o o

Si los sistemas estn en el mismo dominio, puede utilizar el nombre del equipo; por ejemplo, SYSTEM46.

Para utilizar una direccin IP, sta debe ser nica en el entorno. Recomendamos que utilice una direccin IP slo si es esttica. La direccin IP puede ser IP Versin 4 (IPv4) o IP Versin 6 (IPv6). Una direccin IPv6 se debe incluir entre corchetes, por ejemplo: [<IPv6_address>]. Para conocer la direccin IP de un sistema, en el smbolo del sistema de Windows, escriba el comando ipconfig.

El nombre de dominio completo siempre funciona. ste es una cadena de direccin definida localmente que tiene diferentes formatos en los distintos lugares. Con frecuencia, aunque no siempre, el nombre de dominio completo es un nombre compuesto que incluye el nombre del equipo y una serie de segmentos de dominio separados por puntos con el siguiente formato: computer_name . domain_segment[....domain_segment] donde computer_name es el nombre de red del equipo que ejecuta la instancia de servidor y domain_segment[....domain_segment] es la informacin restante de dominio del servidor; por ejemplo: localinfo.corp.Adventure-Works.com. El contenido y el nmero de segmentos de dominio se determinan en la empresa u organizacin. Si no conoce el nombre de dominio completo del servidor, consulte con el administrador del sistema.

173

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Nota:

< puerto> es el nmero del puerto utilizado por el extremo de reflejo de la base de datos de la instancia del servidor asociado. Un extremo de reflejo de la base de datos puede utilizar cualquier puerto disponible en el equipo. Cada nmero de puerto de un sistema debe estar asociado con un nico extremo y cada extremo est asociado con una sola instancia de servidor; en consecuencia, diferentes instancias del mismo servidor escuchan en diferentes extremos con distintos puertos. Por lo tanto, el puerto que especifique en la direccin de red de servidor al configurar una sesin de creacin de reflejo de la base de datos siempre dirigir la sesin a la instancia de servidor cuyo extremo est asociado con dicho puerto. En la direccin de red de servidor de una instancia de servidor, slo el nmero del puerto asociado con su extremo de creacin de reflejo distingue esa instancia de las dems instancias del equipo. En la siguiente ilustracin se muestran las direcciones de red de servidor de dos instancias de servidor en un solo equipo. La instancia predeterminada usa el puerto 7022 y la instancia con nombre usa el puerto 7033. Las direcciones de red de servidor de estas dos instancias de servidor son, respectivamente, TCP://MYSYSTEM.Adventure-works.MyDomain.com:7022 y TCP://MYSYSTEM.Adventure-works.MyDomain.com:7033. Observe que la direccin no contiene el nombre de la instancia de servidor.

Para identificar el puerto asociado actualmente al extremo de reflejo de la base de datos de una instancia de servidor, utilice la siguiente instruccin Transact-SQL: SELECT type_desc, port FROM sys.tcp_endpoints Busque la fila cuyo valor de type_desc sea "DATABASE_MIRRORING" y utilice el nmero de puerto correspondiente.

Ejemplos

A. Usar un nombre de sistema La siguiente direccin de red de servidor especifica un nombre de sistema, SYSTEM46, y el puerto 7022. ALTER DATABASE AdventureWorks SET PARTNER ='tcp://SYSTEM46:7022'; B. Usar un nombre de dominio completo La siguiente direccin de red de servidor especifica un nombre de dominio completo, DBSERVER8.manufacturing.Adventure-Works.com, y el puerto 7024. ALTER DATABASE AdventureWorks SET PARTNER ='tcp://DBSERVER8.manufacturing.Adventure-Works.com:7024'; C. Usar IPv4 La siguiente direccin de red de servidor especifica una direccin IPv4 10.193.9.134, y el puerto 7023.

174

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
ALTER DATABASE AdventureWorks SET PARTNER ='tcp://10.193.9.134:7023'; D. Usar IPv6 La siguiente direccin de red de servidor contiene una direccin IPv6, 2001:4898:23:1002:20f:1fff:feff:b3a3, y el puerto 7022. ALTER DATABASE AdventureWorks SET PARTNER ='tcp://[2001:4898:23:1002:20f:1fff:feff:b3a3]:7022';

Buscar el nombre de dominio completo

Para buscar el nombre de dominio completo de un sistema, en el smbolo del sistema de Windows de ese sistema, escriba: IPCONFIG /ALL Para formar el nombre de dominio completo, debe concatenar los valores de <host_name> y <Primary_Dns_Suffix> de la forma siguiente: <host_name> . <Primary_Dns_Suffix> Por ejemplo, la configuracin IP Host Name . . . . . . : MYSERVER Primary Dns Suffix . . . : mydomain.Adventure-Works.com equivale al siguiente nombre de dominio completo: MYSERVER.mydomain.Adventure-Works.com

Ejemplos

En este ejemplo se muestra la direccin de red de servidor para una instancia de servidor en un equipo denominado REMOTESYSTEM3 en otro dominio. La informacin del dominio es NORTHWEST.ADVENTURE-WORKS.COM y el puerto del extremo de reflejo de la base de datos es 7025. Dados los componentes de este ejemplo, la direccin de red de servidor es: TCP://REMOTESYSTEM3.NORTHWEST.ADVENTURE-WORKS.COM:7025 En este ejemplo se muestra la direccin de red de servidor para una instancia de servidor en un equipo denominado DBSERVER1. Este sistema se encuentra en el dominio local y su nombre de sistema lo identifica de forma inequvoca. El puerto del extremo de reflejo de la base de datos es 7022. TCP://DBSERVER1:7022

h) Ejemplo: Configurar la creacin de reflejo de la base de datos mediante la autenticacin de Windows (Transact-SQL) un testigo mediante la autenticacin de Windows. En los ejemplos descritos en este tema se utiliza Transact-SQL. Tenga en cuenta que como alternativa a los pasos que utilizan Transact-SQL, puede utilizar el Asistente para la configuracin de seguridad de la creacin de reflejo de bases de datos para configurar la creacin de reflejo de la base de datos.

Requisito previo Este ejemplo utiliza la base de datos de ejemplo AdventureWorks, que usa de forma predeterminada un modelo de recuperacin simple. Para utilizar la creacin de reflejo de la base de datos con esta base de datos, modifquela para que utilice el modelo de recuperacin completa. Para llevarlo a cabo en Transact-SQL, utilice la instruccin ALTER DATABASE del siguiente modo: USE master; GO ALTER DATABASE AdventureWorks SET RECOVERY FULL; GO

Ejemplo

En este ejemplo, dos asociados y el testigo son las instancias de servidor predeterminadas en tres equipos. Las tres instancias de servidor se ejecutan en el mismo dominio de Windows, pero la cuenta de usuario es diferente para la instancia del servidor testigo del ejemplo. En la siguiente tabla se muestran de forma resumida los valores utilizados en este ejemplo. Funcin de creacin de reflejo inicial Sistema host Cuenta de usuario del dominio

Principal

PARTNERHOST1

<Mydomain>\<dbousername>

175

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Reflejo

PARTNERHOST5

<Mydomain>\<dbousername>

Testigo 1. 2. Cree un extremo en la instancia

WITNESSHOST4 del servidor principal

<Somedomain>\<witnessuser> (instancia predeterminada en PARTNERHOST1).

CREATE ENDPOINT Endpoint_Mirroring STATE=STARTED AS TCP (LISTENER_PORT=7022) FOR DATABASE_MIRRORING (ROLE=PARTNER) GO --Partners under same domain user; login already exists in master. --Create a login for the witness server instance, --which is running as Somedomain\witnessuser: USE master ; GO CREATE LOGIN [Somedomain\witnessuser] FROM WINDOWS ; GO -- Grant connect permissions on endpoint to login account of witness. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [Somedomain\witnessuser]; GO Cree un extremo en la instancia del servidor reflejado (instancia predeterminada en PARTNERHOST5).

3. 4. 5.
6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.

CREATE ENDPOINT Endpoint_Mirroring STATE=STARTED AS TCP (LISTENER_PORT=7022) FOR DATABASE_MIRRORING (ROLE=ALL) GO --Partners under same domain user; login already exists in master. --Create a login for the witness server instance, --which is running as Somedomain\witnessuser: USE master ; GO CREATE LOGIN [Somedomain\witnessuser] FROM WINDOWS ; GO --Grant connect permissions on endpoint to login account of witness. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [Somedomain\witnessuser]; GO Cree un extremo en la instancia del servidor testigo (instancia predeterminada en WITNESSHOST4).

18. 19. 20.


21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.

CREATE ENDPOINT Endpoint_Mirroring STATE=STARTED AS TCP (LISTENER_PORT=7022) FOR DATABASE_MIRRORING (ROLE=WITNESS) GO --Create a login for the partner server instances, --which are both running as Mydomain\dbousername: USE master ; GO CREATE LOGIN [Mydomain\dbousername] FROM WINDOWS ; GO --Grant connect permissions on endpoint to login account of partners. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [Mydomain\dbousername]; GO Cree la base de datos reflejada. En la instancia del servidor reflejado en PARTNERHOST5, establezca la instancia de servidor en PARTNERHOST1 como asociado (para convertirla en la instancia del servidor principal inicial). ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://PARTNERHOST1.COM:7022' GO En la instancia del servidor principal en PARTNERHOST1, establezca la instancia de servidor en PARTNERHOST5 como asociado (para convertirla en la instancia del servidor reflejado inicial). ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://PARTNERHOST5.COM:7022' GO En el servidor principal, establezca el testigo (que se encuentra en WITNESSHOST4).

33. 34. 35.


36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46.

47.

48. 49.
50.

51.

52.
53.

176

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
54. ALTER DATABASE AdventureWorks SET WITNESS = 'TCP://WITNESSHOST4.COM:7022' GO i) Usar certificados para la creacin de reflejos de la base de datos Para habilitar la autenticacin de certificados para la creacin de reflejos de la base de datos en una instancia determinada del servidor, el administrador del sistema debe configurar cada instancia del servidor para que utilice certificados en las conexiones de entrada y salida. Las conexiones de salida deben configurarse en primer lugar. Nota: Todas las conexiones de creacin de reflejo en una instancia de servidor utilizan un nico extremo de reflejo de la base de datos; debe especificar el mtodo de autenticacin de la instancia de servidor cuando cree el extremo. Por tanto, en la creacin de reflejo de la base de datos slo puede utilizar un formulario de autenticacin por cada instancia de servidor. Configurar conexiones salientes Siga estos pasos en cada instancia de servidor que configure para la creacin de reflejo de la base de datos:

55. 56.

1. 2.
3. 4.

En la base de datos maestra, cree una clave maestra de base de datos.

En la base de datos maestra, cree un certificado cifrado en la instancia de servidor. Cree un extremo para la instancia de servidor utilizando su certificado. Realice una copia de seguridad del certificado en un archivo. A continuacin, cpiela de forma segura a los dems sistemas.

Debe completar estos pasos para cada asociado y el testigo, si existe.

Configurar conexiones entrantes A continuacin, siga estos pasos para cada asociado que configure para la creacin de reflejo de la base de datos. En la base de datos maestra: 1. 2. 3. 4. 5. Cree un inicio de sesin para el otro sistema. Cree un usuario para dicho inicio de sesin. Obtenga el certificado para el extremo de reflejo de la otra instancia de servidor. Asocie el certificado al usuario creado en el paso 2. Conceda el permiso CONNECT en el inicio de sesin para el extremo de reflejo.

Si existe un testigo, tambin debe configurar conexiones de entrada para l. Esto requiere la configuracin de inicios de sesin, usuarios y certificados para el testigo en los dos asociados y viceversa.

Seguridad A menos que garantice que su red es segura, se recomienda utilizar el cifrado para las conexiones de creacin de reflejo de la base de datos. Cuando copie un certificado en otro sistema, utilice un mtodo de copia seguro. Tenga mucho cuidado de mantener todos sus certificados protegidos.

j ) Ejemplo: configurar la creacin de reflejo de la base de datos mediante certificados (Transact-SQL) En este ejemplo se muestran todos los pasos necesarios para crear una sesin de creacin de reflejo de la base de datos mediante la autenticacin basada en certificados. En los ejemplos descritos en este tema se utiliza Transact-SQL. A menos que garantice que su red es segura, se recomienda utilizar el cifrado para las conexiones de creacin de reflejo de la base de datos. Cuando copie un certificado en otro sistema, utilice un mtodo de copia seguro. Tenga mucho cuidado de mantener todos sus certificados protegidos. Ejemplo En el ejemplo siguiente se muestra lo que se debe hacer en un asociado que reside en el HOST_A. En este ejemplo, los dos asociados son las instancias de servidor predeterminadas en tres equipos. Las dos instancias de servidor se ejecutan en dominios de Windows que no son de confianza, por lo que se requiere la autenticacin basada en certificados.

177

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
HOST_A adopta la funcin principal inicial y HOST_B adopta la funcin de reflejo. Configurar la creacin de reflejo de la base de datos utilizando certificados implica cuatro fases generales. En este ejemplo se muestran tres de ellas, a saber, 1, 2 y 4. Estas fases son las siguientes: 1. Configurar conexiones En este ejemplo se muestran los pasos para: a. b. Configurar Host_A para conexiones salientes. Configurar Host_B para conexiones salientes. salientes

2.

Configurar conexiones En este ejemplo muestran los pasos para: a. b. Configurar Host_A para conexiones entrantes. Configurar Host_B para conexiones entrantes.

entrantes

3. 4.

Crear la base de datos reflejada. Configurar los asociados de creacin de reflejo

Configurar conexiones salientes Para configurar Host_A para conexiones salientes 1. 2. 3. 4. 5. 6. En la base de datos maestra, cree la clave maestra de la base de datos si es necesaria.

USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>'; GO Cree un certificado para esta instancia de servidor.

USE master; CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate'; GO Cree un extremo de creacin de reflejo para la instancia de servidor mediante el certificado.

7.
8. 9.

CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP ( LISTENER_PORT=7024 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE HOST_A_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL ); GO Realice una copia de seguridad del certificado HOST_A y cpielo en el otro sistema, HOST_B.

10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
20. 21. 22.

BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer'; GO Utilizando cualquier mtodo de copia seguro, copie C:\HOST_A_cert.cer en HOST_B.

Para configurar Host_B para conexiones salientes 1. 2. 3. En la base de datos maestra, cree la clave maestra de la base de datos si es necesaria.

USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>'; GO

178

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
4. 5. Cree un certificado en la instancia de servidor HOST_B.

CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate for database mirroring'; GO Cree un extremo de creacin de reflejo para la instancia de servidor en HOST_B.

6.
7. 8.

CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP ( LISTENER_PORT=7024 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL ); GO Realice una copia de seguridad del certificado de HOST_B.

9. 10. 11. 12. 13. 14. 15. 16. 17. 18.


19. 20. 21.

BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer'; GO Utilizando cualquier mtodo de copia seguro, copie C:\HOST_B_cert.cer en HOST_A.

Configurar conexiones entrantes Para configurar Host_A para conexiones entrantes 1. 2. 3. 4. 5. 6. 7. Cree un inicio de sesin en HOST_A para HOST_B.

USE master; CREATE LOGIN HOST_B_login WITH PASSWORD = '1Sample_Strong_Password!@#'; GO Cree un usuario para dicho inicio de sesin.

CREATE USER HOST_B_user FOR LOGIN HOST_B_login; GO Asocie el certificado al usuario.

CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'C:\HOST_B_cert.cer' GO Conceda el permiso CONNECT en el inicio de sesin al extremo de creacin de reflejo remoto.

8. 9.
10. 11.

GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login]; GO

Para configurar Host_B para conexiones entrantes 1. 2. 3. 4. 5. 6. 7. Cree un inicio de sesin en HOST_B para HOST_A.

USE master; CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2'; GO Cree un usuario para dicho inicio de sesin.

CREATE USER HOST_A_user FOR LOGIN HOST_A_login; GO Asocie el certificado al usuario.

CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'C:\HOST_A_cert.cer'

8. 9.

179

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
GO 10. 11. Conceda el permiso CONNECT en el inicio de sesin al extremo de creacin de reflejo remoto.

GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login]; GO

Importante: Si tiene planeado que la ejecucin se realice en modo de alta seguridad con conmutacin automtica por error, debe repetir los mismos pasos de configuracin para configurar el testigo de las conexiones entrantes y salientes. La configuracin de conexiones de entrantes cuando un testigo est implicado requiere configurar inicios de sesin y usuarios para los testigos de los asociados y de los asociados del testigo.

Crear la base de datos reflejada

Configurar los asociados de creacin de reflejo

1.

En la instancia del servidor reflejado en HOST_B, establezca la instancia de servidor en HOST_A como asociado (para convertirla en la instancia inicial del servidor principal): Sustituya una direccin de red vlida por TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024.

2. 3.

--At HOST_B, set server instance on HOST_A as partner (principal server): ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024'; GO En la instancia del servidor principal en HOST_A, establezca la instancia de servidor en HOST_B como asociado (para convertirla en la instancia inicial del servidor principal): Sustituya una direccin de red vlida por TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024.

4.

5.

6. 7.

--At HOST_A, set server instance on HOST_B as partner (mirror server). ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024'; GO En este ejemplo se considera que la sesin se ejecutar en modo de alto rendimiento. Para configurar esta sesin para el modo de alto rendimiento, en la instancia del servidor principal (en HOST_A), establezca la seguridad de la transaccin en OFF. --Change to high-performance mode by turning off transacton safety. ALTER DATABASE AdventureWorks SET PARTNER SAFETY OFF GO Nota: Si piensa realizar la ejecucin en modo de alta seguridad con conmutacin automtica por error, deje la seguridad de la transaccin en FULL (configuracin predeterminada) y agregue el testigo en cuanto sea posible despus de ejecutar la segunda instruccin SET PARTNER 'partner_server'. Tenga en cuenta que primero se debe configurar el testigo para conexiones salientes y entrantes.

8.
9.

10. 11.

12.

Conectar clientes a una base de datos reflejada

Para conectarse a una sesin de creacin de reflejo de la base de datos, un cliente puede usar SQL Native Client de SQL Server o el proveedor de datos de .NET Framework para SQL Server. Estos proveedores de acceso a datos son totalmente compatibles con la creacin de reflejo de la base de datos cuando se configuran para una base de datos de SQL Server 2008. Adems, la instancia del servidor principal actual debe estar disponible y el inicio de sesin del cliente se debe haber creado en la instancia del servidor.Las conexiones de cliente a una sesin de creacin de reflejo de la base de datos no tienen relacin con la instancia del servidor testigo, si existe alguno. a) Establecer la conexin inicial en una sesin de creacin de reflejo de la base de datos Para la conexin inicial en una base de datos reflejada, un cliente debe suministrar una cadena de conexin que como mnimo proporcione el nombre de una instancia del servidor. Este nombre de servidor requerido debera identificar la instancia del servidor principal actual y se conoce como el nombre del asociado inicial. Opcionalmente, la cadena de conexin tambin puede proporcionar el nombre de otra instancia del servidor, que debera identificar la instancia del servidor reflejado actual, para usarla si el asociado inicial no est disponible durante el primer intento de conexin. Este nombre se conoce como el nombre del asociado de conmutacin por error. La cadena de conexin tambin debe proporcionar el nombre de una base de datos. Esto es necesario para que el proveedor de acceso a datos pueda intentar la conmutacin por error.

180

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Al recibir una cadena de conexin, el proveedor de acceso a datos almacena el nombre del asociado inicial y el nombre del asociado de conmutacin por error, si se suministran, en una cach en la memoria voltil del cliente (para el cdigo administrado, el mbito de la cach es el dominio de la aplicacin). Una vez almacenado en cach, el proveedor de acceso a datos nunca actualiza el nombre del asociado inicial. Cuando el cliente suministra el nombre del asociado de conmutacin por error, el proveedor de acceso a datos tambin almacena este nombre temporalmente por si el proveedor no se puede conectar usando el nombre del asociado inicial. Una sesin de creacin de reflejo de la base de datos no protege frente a problemas de acceso al servidor que sean especficos de los clientes, como cuando un equipo cliente tiene un problema en la comunicacin con la red. Un intento de conexin a una base de datos reflejada tambin puede generar un error por diversas razones que no tienen que ver con el proveedor de acceso a datos; por ejemplo, debido a que la instancia del servidor principal est inactiva, como ocurre cuando la base de datos est realizando la conmutacin por error, o bien debido a un error de red. Cuando se intenta la conexin, el proveedor de acceso a datos comienza usando el nombre del asociado inicial. Si la instancia del servidor especificada est disponible y es la instancia del servidor principal actual, el intento de conexin suele tener xito. Nota: Si la sesin de creacin de reflejo se pone en pausa, el cliente suele conectarse al servidor principal y descargar el nombre del asociado. Sin embargo, la base de datos no est disponible para el cliente hasta que se reanude la creacin de reflejo. Si ese intento no funciona, el proveedor de acceso a datos prueba con el nombre del asociado de conmutacin por error, si est disponible. Si otro nombre del asociado identifica correctamente el servidor principal actual, el proveedor de acceso a datos normalmente puede abrir la conexin inicial. Al llevar a cabo esta conexin, el proveedor de acceso a datos descarga el nombre de la instancia del servidor del servidor reflejado actual. Este nombre se almacena en la cach como nombre del asociado de conmutacin por error y sobrescribe el nombre proporcionado por el cliente, si hay alguno. Despus, el Proveedor de datos de .NET Framework de SQL Server no actualiza el nombre del asociado de conmutacin por error. Por el contrario, SQL Server Native Client actualiza la cach siempre que una conexin posterior o el restablecimiento de la conexin devuelvan un nombre del asociado diferente. En la siguiente ilustracin se muestra una conexin del cliente con el asociado inicial, Partner_A, para una base de datos reflejada denominada Db_1. En la ilustracin se muestra un caso en el que el nombre del asociado inicial proporcionado por el cliente identifica correctamente el servidor principal actual, Partner_A. El intento de conexin inicial se realiza correctamente y el proveedor de acceso a datos almacena el nombre del servidor reflejado (Partner_B) como nombre del asociado de conmutacin por error en la cach local. Finalmente, el cliente se conecta a la copia principal de la base de datos Db_1.

El intento de conexin inicial puede no tener xito, por ejemplo, debido a un error de red o una instancia del servidor inactiva. Puesto que el asociado inicial no est disponible, para que el proveedor de acceso a datos intente conectarse al asociado de conmutacin por error, el cliente deber haber proporcionado el nombre del asociado de conmutacin por error en la cadena de conexin. En ese caso, si el nombre del asociado de conmutacin por error no est disponible, el intento de conexin original contina hasta que la conexin de red agota el tiempo de espera o se devuelve un error (igual que en una base de datos no reflejada). Cuando en la cadena de conexin se proporciona el nombre del asociado de conmutacin por error, el comportamiento del proveedor de acceso a datos depende del protocolo de red y del sistema operativo del cliente, segn se explica a continuacin:

Con TCP/IP, si el cliente ejecuta Microsoft Windows XP o posterior, los intentos de conexin se regulan mediante un algoritmo de reintento de conexin especfico de la creacin de reflejo de la base de datos. El algoritmo de reintento de conexin determina el tiempo mximo (el tiempo de reintento) asignado para abrir una conexin en un intento de conexin dado. En el caso de otros protocolos de red y clientes que no ejecutan Microsoft Windows XP o posterior Si se produce un error o si el asociado inicial no est disponible, el intento de conexin inicial espera hasta que los perodos de tiempo de espera de la conexin de red o del inicio de sesin caducan en el proveedor de acceso a datos. Generalmente, esta espera es del orden de 20 a 30 segundos. Despus, si el proveedor de acceso a datos no ha agotado el tiempo de espera, intenta conectarse al asociado de conmutacin por error. Si el perodo de tiempo de espera de conmutacin por error caduca antes de que la conexin tenga xito o si el asociado de conmutacin por error no est disponible, el intento de conexin no tiene xito. Si el asociado de conmutacin por error est disponible dentro del perodo de tiempo de espera de inicio de sesin y es ahora el servidor principal, el intento de conexin normalmente tiene xito.

Cadenas de conexin para una base de datos reflejada

181

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
La cadena de conexin proporcionada por el cliente incluye informacin que el proveedor de acceso a datos utiliza para conectarse a la base de datos. En esta seccin se explican las palabras clave que estn relacionadas especficamente con la conexin a una base de datos reflejada mediante una conexin del controlador ODBC de SQL Server Native Client.

Atributo Network La cadena de conexin debera contener el atributo Network para especificar el protocolo de red. De este modo se asegura que el protocolo de red especificado persiste entre conexiones a asociados diferentes. El mejor protocolo para conectarse a una base de datos reflejada es TCP/IP. Para garantizar que el cliente solicite TCP/IP para cada conexin con los asociados, una cadena de conexin proporciona el atributo siguiente: Network=dbmssocn; Importante: Se recomienda mantener TCP/IP al principio de la lista de protocolos del cliente. Sin embargo, si la cadena de conexin especifica el atributo Network, reemplaza el orden de la lista. O bien, para garantizar que el cliente solicite canalizaciones con nombre para cada conexin a los asociados, una cadena de conexin proporciona el atributo siguiente: Network=dbnmpntw; Importante: Dado que las canalizaciones con nombre no usan el algoritmo de reintento TCP/IP, en muchos casos, un intento de conexin a canalizaciones con nombre puede agotar el tiempo de espera antes de conectarse a una base de datos reflejada.

Atributo Server La cadena de conexin debe contener un atributo Server que proporciona el nombre del asociado inicial, que debera identificar la instancia del servidor principal actual. La forma ms sencilla de identificar la instancia del <nombreDelServidor>[\<nombreDeLaInstanciaDeSQLServer>]. Por ejemplo: Server=Partner_A; O bien: Server=Partner_A\Instance_2; Sin embargo, cuando se usa el nombre del sistema, el cliente debe realizar una bsqueda DNS para obtener la direccin IP del servidor y una consulta del Explorador de SQL Server para obtener el nmero de puerto del servidor en el que reside el asociado. Estas bsquedas y consultas pueden omitirse especificando la direccin IP y el nmero de puerto del asociado en el atributo Server, en lugar de especificar el nombre de servidor. Esto se recomienda para reducir la posibilidad de que se produzcan retardos externos mientras se conecta a ese asociado. Nota: Se necesita una consulta del Explorador de SQL Server si la cadena de conexin especifica el nombre de la instancia con nombre y no el puerto. Para especificar la direccin IP y el puerto, el atributo Server toma el formato siguiente, Server=<direccinIP>,<puerto>, por ejemplo: Server=123.34.45.56,4724; Nota: La direccin IP puede ser IP Versin 4 (IPv4) o IP Versin 6 (IPv6). servidor es especificando su nombre,

Atributo Database Adems, la cadena de conexin debe especificar el atributo Database para proporcionar el nombre de la base de datos reflejada. Si la base de datos no est disponible cuando el cliente intente conectarse, se producir una excepcin. Por ejemplo, para conectarse expresamente a la base de datos AdventureWorks del servidor principal Partner_A, un cliente usa la cadena de conexin siguiente: " Server=Partner_A; Database=AdventureWorks " Nota: En esta cadena se omite la informacin de autenticacin. Importante: La combinacin del prefijo del protocolo con el atributo Server (Server=tcp:<nombreDelServidor>) es incompatible con el atributo Network, y si se especifica el protocolo en ambos lugares, probablemente se producir un error. Por lo tanto, se recomienda que una cadena de conexin especifique el protocolo con el atributo Network y nicamente incluya el nombre del servidor en el atributo Server

182

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
("Network=dbmssocn; Server=<nombreDelServidor>").

Atributo Failover Partner Adems del nombre del asociado inicial, el cliente puede especificar tambin el nombre del asociado de conmutacin por error, que debera identificar la instancia del servidor reflejado actual. Una de las palabras clave especifica el asociado de conmutacin por error para el atributo de asociado de conmutacin por error. La palabra clave para este atributo depende de la API que est utilizando. En la tabla siguiente se enumeran estas palabras clave. API Palabra clave para el atributo de asociado de conmutacin por error

Proveedor OLE DB

FailoverPartner

Controlador ODBC

Failover_Partner

Objetos de datos ActiveX (ADO) .

Failover Partner

La forma ms sencilla de identificar la instancia <nombreDelServidor>[\<nombreDeLaInstanciaDeSQLServer>].

del

servidor

es

por

el

nombre

de

su

sistema,

O bien, la direccin IP y el nmero de puerto pueden proporcionarse en el atributo Failover Partner. Si el intento de conexin inicial no tiene xito durante la primera conexin a la base de datos, el intento de conectarse al asociado de conmutacin por error no tendr que retransmitirse en DNS y el Explorador de SQL Server. Una vez que se establezca la conexin, el nombre del asociado de conmutacin por error se sobrescribir con el nombre del asociado de conmutacin por error, de modo que, si se produce una conmutacin por error, las conexiones redirigidas requerirn DNS y el Explorador de SQL Server. Nota: Si slo se proporciona el nombre del asociado inicial, los programadores de la aplicacin no necesitarn realizar ninguna accin ni escribir ningn cdigo para volver a conectarse. Nota: Los programadores de aplicaciones de cdigo administrado proporcionan el nombre del asociado de conmutacin por error en la cadena ConnectionString del objeto SqlConnection.

Ejemplo de cadena de conexin Por ejemplo, para conectarse explcitamente con TCP/IP a la base de datos AdventureWorks en Partner_A o Partner_B, una aplicacin cliente podra que use el controlador ODBC proporcionar la cadena de conexin siguiente: "Server=Partner_A; Failover_Partner=Partner_B; Database=AdventureWorks; Network=dbmssocn" O bien, el cliente podra usar la direccin IP y el nmero de puerto para identificar al asociado inicial, Partner_A; por ejemplo, si la direccin IP es 250.65.43.21 y el nmero de puerto es 4734, la cadena de conexin sera: "Server=250.65.43.21,4734; Failover_Partner=Partner_B; Database=AdventureWorks; Network=dbmssocn" b) Algoritmo de reintento de conexin (para conexiones TCP/IP)

En una conexin TCP/IP, si el cliente ejecuta Microsoft Windows XP o una versin posterior cuando los nombres de ambos asociados estn en cach, el proveedor de acceso a datos se ajusta a un algoritmo de reintento de conexin. Esto se cumple para establecer la conexin inicial a la sesin y para volver a conectarse despus de que una conexin establecida se haya perdido. Una vez que se ha abierto una conexin, finalizar los pasos previos de inicio de sesin y el inicio de sesin requiere tiempo adicional. Nota: El tiempo empleado en abrir una conexin puede superar el tiempo de reintento debido a factores externos como, por ejemplo, lentas bsquedas de DNS, un controlador de dominio/KDC (Kerberos Key Distribution Center) lento, el tiempo necesario para contactar con el Explorador de SQL Server, congestin de la red, etc. Estos factores externos pueden impedir que un cliente se conecte a una base de datos reflejada. Adems, los factores externos pueden hacer que una conexin tarde ms en abrirse que el tiempo de reintento asignado. Si el intento de conexin genera un error o el tiempo de reintento caduca antes de que se realice correctamente, el proveedor de acceso a datos probar con el otro asociado. Si este punto no abre una conexin, el proveedor probar, de forma alternativa, con los nombre inicial y del asociado de conmutacin por error, hasta que se abra una conexin o el periodo de inicio de sesin se agote. El periodo de tiempo de espera predeterminado es de 15 segundos. Es recomendable que el periodo de espera de inicio de sesin sea de 5 segundos o ms. Si se especifica un periodo de tiempo de espera menor, es posible que ningn intento de conexin pueda realizarse correctamente. El tiempo de reintento es un porcentaje del periodo de inicio de sesin. El tiempo de reintento de una conexin es mayor en cada ciclo sucesivo. En el primer ciclo, el tiempo de reintento de cada uno de los dos intentos es el 8 por ciento del periodo de inicio de sesin total. En cada ciclo sucesivo, el algoritmo de reintento incrementa el tiempo mximo de reintento en la misma cantidad. De esta forma, los tiempos de reintento de las primeras ocho conexiones son las siguientes: 8%, 8%, 16%, 16%, 24%, 24%, 32%, 32%

183

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
El tiempo de reintento se calcula mediante la siguiente frmula: RetryTime = PreviousRetryTime + ( 0,08 * LoginTimeout ) Donde PreviousRetryTime es inicialmente 0. Por ejemplo, si se usa el periodo de tiempo de espera predeterminado de 15 segundos, LoginTimeout = 15. En este caso, los tiempos de reintento en los primeros tres ciclos son los siguientes: Ciclo Clculo de RetryTime Tiempo de reintento por intento

0 + (0.08 * 15)

1,2 segundos

1.2 + (0.08 * 15)

2,4 segundos

2.4 + (0.08 * 15)

3,6 segundos

3.6 + (0.08 * 15)

4,8 segundos

En la siguiente ilustracin se muestran los tiempos de reintento para intentos de conexin sucesivos, cada uno de los cuales se agota.

Para el periodo de espera de inicio de sesin predeterminado, el tiempo mximo asignado para los primeros tres ciclos de intentos de conexin es de 14,4 segundos. Si cada intento utilizase todo el tiempo que tiene asignado, slo quedaran 0,6 segundos antes de que el periodo de inicio de sesin se agotara. En este caso, el cuarto ciclo se acortara y slo se permitira un intento final rpido para conectarse mediante el nombre del asociado inicial. No obstante, un intento de conexin puede generar un error en menos tiempo que el tiempo de reintento asignado, especialmente en los ciclos posteriores. Por ejemplo, la recepcin de un error de red puede causar que un intento termine antes de que el tiempo de reintento se agote. Si los primeros intentos no se realizan correctamente debido a errores de red, habra tiempo disponible adicional para el cuarto ciclo y, probablemente, para ciclos adicionales. Otra razn de que un intento genere un error es una instancia de servidor inactiva, como pasa cuando una instancia de servidor se encuentra ocupada en realizar la conmutacin por error de su base de datos. En este caso, se impone un intervalo entre reintentos para evitar que los clientes sobrecarguen a los asociados con una rpida sucesin de intentos de conexin. Nota: Cuando ambos nombres de asociados estn disponibles, si el periodo de espera de inicio de sesin es infinito, el cliente intenta volver a conectarse a los servidores de forma indefinida, alternando entre el nombre del asociado inicial y el nombre del asociado por conmutacin por error. Intervalos de reintento durante la conmutacin por error Si un cliente intenta conectarse a un asociado que est en conmutacin por error, ste responde inmediatamente que se encuentra inactivo. En este caso, cada ciclo de intentos de conexin es mucho ms breve que el tiempo de reintento asignado. Esto significa que pueden producirse muchos ciclos de intentos de conexin antes de que el periodo de inicio de sesin se agote. Para evitar la sobrecarga de los asociados con una rpida serie de intentos de conexin durante una conmutacin por error, el proveedor de acceso a datos agrega un breve intervalo entre reintentos despus de cada ciclo. La longitud de un intervalo entre reintentos determinado se define mediante el algoritmo de intervalos entre reintentos. Despus del primer ciclo, el intervalo es de 100 milisegundos. Despus de cada uno de los siguientes tres ciclos, el intervalo entre reintentos se duplica: 200, 400 y 800. En todos los ciclos posteriores, el intervalo entre reintentos es de 1 segundo hasta que la conexin se realiza correctamente o se supera el tiempo de espera. Nota: Si la instancia de servidor se detiene, la solicitud de conexin genera un error de forma inmediata. En la siguiente ilustracin se muestra cmo los intervalos entre reintentos afectan a los intentos de conexin durante una conmutacin por error manual, donde los asociados conmutan sus funciones. El periodo de tiempo de espera de inicio de sesin es de 15 segundos.

184

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

c) Volver a conectar una sesin de creacin de reflejo de la base de datos Si una conexin establecida de una sesin de creacin de reflejo de la base de datos genera un error por alguna razn; por ejemplo, debido a una conmutacin automtica por error, y la aplicacin intenta volver a conectarse al servidor inicial, el proveedor de acceso a datos puede tratar de volver a conectarse utilizando el nombre de asociado de la conmutacin por error almacenado en la cach del cliente. No obstante, volver a conectarse no es un proceso automtico. La aplicacin debe detectar el error. Despus, la aplicacin necesita cerrar la conexin con error y abrir una nueva utilizando los mismos atributos de la cadena de conexin. En este punto, el proveedor de acceso a datos redirige la conexin al asociado de conmutacin por error. Si la instancia de servidor que se identifica con este nombre es actualmente el servidor de la entidad de seguridad, el intento de conexin suele tener xito. Si no est claro si una transaccin se confirm o revirti, la aplicacin debe comprobar el estado de la transaccin, de la misma forma en que lo hace cuando se vuelve a conectar con una instancia de servidor independiente. Volver a conectarse se parece bastante a una conexin inicial donde la cadena de conexin suministra un nombre de asociado de conmutacin por error. Si el primer intento no tiene xito, los intentos de conexin se alternan repetidamente entre el nombre del asociado inicial y el nombre del asociado de conmutacin por error, hasta que el cliente se conecta al servidor de la entidad de seguridad o el proveedor de acceso a datos agota el tiempo de espera. Nota: SQL Server Native Client comprueba que se conecta a una instancia de servidor de la entidad de seguridad, pero no si esta instancia es el asociado de la instancia de servidor especificada en el nombre de asociado inicial de la cadena de conexin. Si las conexiones utilizan TCP/IP y los clientes usan Windows XP o una versin posterior, el algoritmo de reintento de conexin determina la cantidad de tiempo asignada a los intentos de conexin en cada ciclo Importante: Si se desconecta el cliente de la base de datos, el proveedor de acceso a datos no intentar volver a conectarse. El cliente deber emitir una nueva solicitud de conexin. Adems, si se cierra una aplicacin al perder la conexin, la aplicacin pierde los nombres de asociado en la cach. Si se perdi la conexin porque el servidor de la entidad de seguridad dej de estar disponible, la nica forma en que la aplicacin puede volver a conectarse al servidor reflejado es proporcionando el nombre de asociado de conmutacin por error en su cadena de conexin. Impacto de la redireccin en una aplicacin cliente Despus de una conmutacin por error, el proveedor de acceso a datos redirige la conexin a la instancia de servidor de la entidad de seguridad actual. Sin embargo, la redireccin resulta transparente para los clientes. Para un cliente, una conexin redirigida parece una conexin a la instancia de servidor identificada por el nombre de asociado inicial. Cuando el asociado inicial es actualmente el servidor reflejado, es posible que el cliente parezca estar conectado al servidor reflejado y actualizando la base de datos reflejada. No obstante, en realidad se ha redirigido el cliente al asociado de conmutacin por error, que es la base de datos de la entidad de seguridad actual, y el cliente est actualizando la nueva base de datos de la entidad de seguridad. Despus de ser redirigido al asociado de conmutacin por error, un cliente puede obtener resultados inesperados cuando utiliza una instruccin USE de Transact-SQL para usar otra base de datos. Esto puede producirse si la instancia del servidor de la entidad de seguridad (el asociado de conmutacin por error) tiene un conjunto diferente de bases de datos que el servidor principal de la entidad de seguridad (el asociado inicial).

d) Impacto de un nombre de asociado de conmutacin por error obsoleto El administrador de la base de datos puede cambiar el asociado de conmutacin por error en cualquier momento. Por lo tanto, un nombre de asociado de conmutacin por error que suministre un cliente podra estar desfasado u obsoleto. Suponga, por ejemplo, que se sustituye el asociado de conmutacin por error Partner_B por la instancia del servidor Partner_C. Ahora, si un cliente proporciona Partner_B como nombre de asociado de conmutacin por error, el nombre estar obsoleto. En este caso, el comportamiento del proveedor de acceso a datos es el mismo que cuando el cliente no proporciona un nombre de asociado de conmutacin por error.

185

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Por ejemplo, suponga que un cliente utiliza una cadena de conexin para una serie de cuatro intentos de conexin. En la cadena de conexin, el nombre del asociado inicial es Partner_A y el del asociado de conmutacin por error, Partner_B: "Server=Partner_A; Failover Partner=Partner_B; Database=AdventureWorks" En la siguiente tabla se muestran cuatro configuraciones de asociado y se indica en cada caso si la cadena de conexin funciona para conectar el cliente por primera vez. Nota: Una aplicacin puede realizar el seguimiento de los cambios de configuracin y modificar su cadena de conexin en consecuencia. Ello requiere cdigo adicional, pero se consigue reducir la carga administrativa. Configuracin Servidor principal Servidor reflejado Comportamiento al intentar Partner_A y Partner_B conectarse especificando

Configuracin de creacin de reflejo Partner_A original.

Partner_B

Se almacena Partner_A en la cach como nombre del asociado inicial. El cliente se conecta correctamente a Partner_A. El cliente descarga el nombre del servidor reflejado, Partner B, y lo almacena en cach, sin tener en cuenta el nombre del asociado de conmutacin por error proporcionado por el cliente.

Partner_A sufre un error de hardware Partner_B y se produce la conmutacin por error (se desconectan los clientes).

ninguno

Partner_A sigue almacenado en cach como nombre del asociado inicial, pero el nombre del asociado de conmutacin por error proporcionado por el cliente, Partner_B, permite al cliente conectarse al servidor principal actual.

El administrador de la base de datos Partner_B detiene la creacin del reflejo (se desconectan los clientes), sustituye Partner_A por Partner_C y reinicia la creacin del reflejo.

Partner_C

El cliente intenta conectarse a Partner_A y surge un error. A continuacin, lo intenta con Partner_B (el servidor principal actual) y se conecta correctamente. El proveedor de acceso a datos descarga el nombre del servidor reflejado actual, Partner_C, y lo almacena en cach como nombre del asociado de conmutacin por error actual.

El servicio se conmuta manualmente Partner_C a Partner_C (se desconectan los clientes).

Partner_B

El cliente intenta conectarse primero a Partner_A y luego a Partner_B. Ambos nombres provocan errores y finalmente la solicitud de conexin supera el tiempo de espera y provoca un error.

Administracin de la creacin de reflejo de la base de datos La creacin de reflejo de la base de datos es bsicamente una solucin de software para aumentar la disponibilidad de la base de datos. La creacin de reflejo se implementa en cada una de las bases de datos y slo funciona con las que utilizan el modelo de recuperacin completa. Los modelos de recuperacin simple y optimizados para cargas masivas de registros no admiten la creacin de reflejo de la base de datos. En SQL Server Standard y Enterprise se admite la creacin de un reflejo de la base de datos. La creacin de reflejo de la base de datos ofrece una mejora considerable en cuanto a disponibilidad si se compara con el nivel que se poda alcanzar anteriormente con Microsoft SQL Server y, asimismo, supone una alternativa o un complemento fcil de administrar al trasvase de registros o a la agrupacin en clsteres de conmutacin por error. Cuando una sesin de creacin de reflejo de la base de datos est sincronizada, la creacin de reflejo de la base de datos proporciona un servidor en espera activa que admite la conmutacin por error rpida sin que se pierdan datos de las transacciones confirmadas. Durante una sesin de creacin de reflejo normal, cuando se produce un error del servidor de produccin, las aplicaciones cliente pueden recuperarse rpidamente volviendo a conectarse al servidor en espera. Nota: No puede reflejar las bases de datos del sistema master, msdb, temp o model.

Pausar y reanudar la creacin de reflejo de la base de datos El propietario de la base de datos puede pausar y reanudar posteriormente una sesin de creacin de reflejo de la base de datos en cualquier momento. La pausa preserva el estado de la sesin mientras se suspende la creacin de reflejo. Durante los cuellos de botella, las pausas pueden ser tiles para mejorar el rendimiento en el servidor principal. Cuando se realiza una pausa en una sesin, la base de datos principal sigue estando disponible. La pausa establece el estado de la sesin de creacin de reflejo de la base de datos en SUSPENDED y la base de datos reflejada ya no se mantiene al da con la base de datos principal, lo que ocasiona que la base de datos principal se ejecute de una manera expuesta. Se recomienda que reanude una sesin en pausa rpidamente, porque siempre que la sesin de creacin de reflejo de base de datos permanezca en pausa, no se puede truncar el registro de transacciones. Por tanto, si se realiza una pausa demasiado larga en la sesin de creacin de reflejo de la base de datos, se llena el registro de transacciones, haciendo que la base de datos no est disponible.. Importante:

186

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Despus de un servicio forzado, cuando el servidor principal original se conecta de nuevo se suspende la creacin de reflejo. Reanudar la creacin de reflejo en esta situacin puede dar lugar a una prdida de datos en el servidor principal original Cmo afectan la pausa y la reanudacin al truncamiento del registro Normalmente, cuando se lleva a cabo un punto de comprobacin automtico en una base de datos, su registro de transacciones se trunca en dicho punto de comprobacin despus de la siguiente copia de seguridad del registro. Mientras que una sesin de creacin de reflejo de base de datos permanece en pausa, todos las entradas de registro actuales permanecen activas porque el servidor principal est esperando para enviarlos al servidor reflejado. Las entradas de registro no enviadas se acumulan en el registro de transacciones de la base de datos principal hasta que se reanuda la sesin y el servidor principal ha enviado las entradas de registro al servidor reflejado. Cuando se reanuda la sesin, el servidor principal comienza a enviar inmediatamente las entradas de registro acumuladas al servidor reflejado. Despus de que el servidor reflejado confirma que ha puesto en cola la entrada de registro correspondiente al punto de comprobacin automtico ms antiguo, el servidor principal trunca el registro de la base de datos principal en dicho punto de comprobacin. El servidor reflejado trunca la cola rehecha en la misma entrada de registro. Conforme este proceso se repite por cada punto de comprobacin sucesivo, el registro se trunca por etapas, en cada punto de comprobacin.

Evitar un registro de transacciones lleno Si el registro se llena (bien porque alcanza su tamao mximo o porque la instancia del servidor se queda sin espacio), la base de datos no puede realizar ms actualizaciones. Hay dos alternativas para evitar este problema:

Reanudar la sesin de creacin de reflejo de la base de datos antes de que se llene el registro o agregar ms espacio al registro. Reanudar la creacin de reflejo de la base de datos permite al servidor principal enviar su registro activo acumulado al servidor reflejado y aplicar el estado SYNCHRONIZING a la base de datos reflejada. A continuacin, el servidor reflejado puede reforzar el registro en el disco y comenzar a rehacerlo. Detener la sesin de creacin de reflejo de la base de datos quitando la creacin de reflejo. A diferencia de la pausa de una sesin, al quitar la creacin de reflejo se elimina toda la informacin de la sesin de creacin de reflejo. Cada instancia de servidor asociado conserva su propia copia de la base de datos. Si se recupera la copia reflejada anterior, ser diferente de la copia principal anterior y estar por detrs en la cantidad de tiempo transcurrido desde que se detuvo la sesin.

Para pausar o reanudar la creacin de reflejo de la base de datos

Cmo pausar o reanudar una sesin de creacin de reflejo de la base de datos (SQL Server Management Studio) 1 Durante una sesin de creacin de reflejo de la base de datos, conctese a la instancia del servidor principal y, en el Explorador de objetos, haga clic en el nombre del servidor para expandir el rbol correspondiente.

2 3 4

Expanda Bases de datos y seleccione la base de datos.

Haga clic con el botn secundario en la base de datos, seleccione Tareas y, a continuacin, haga clic en Reflejado. Se abre la pgina Creacin de reflejo del cuadro de dilogo Propiedades de la base de datos.

Para pausar la sesin, haga clic en Pausar.

Aparecer un mensaje de confirmacin. Si hace clic en S, se pausar la sesin y el botn cambiar a Reanudar.

Para reanudar la sesin, haga clic en Reanudar.

Cmo pausar una sesin de creacin de reflejo de la base de datos (Transact-SQL) 1 2 Conctese a cualquier asociado. Escriba la instruccin Transact-SQL siguiente:

ALTER DATABASE <database_name> SET PARTNER SUSPEND donde <database_name> es la base de datos reflejada cuya sesin se desea suspender. Esta instruccin deja la base de datos en el estado SUSPENDED.

Para reanudar la creacin de reflejo de la base de datos

187

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Cmo pausar o reanudar una sesin de creacin de reflejo de la base de datos (SQL Server Management Studio) 1 Durante una sesin de creacin de reflejo de la base de datos, conctese a la instancia del servidor principal y, en el Explorador de objetos, haga clic en el nombre del servidor para expandir el rbol correspondiente.

2 3 4

Expanda Bases de datos y seleccione la base de datos.

Haga clic con el botn secundario en la base de datos, seleccione Tareas y, a continuacin, haga clic en Reflejado. Se abre la pgina Creacin de reflejo del cuadro de dilogo Propiedades de la base de datos.

Para pausar la sesin, haga clic en Pausar.

Aparecer un mensaje de confirmacin. Si hace clic en S, se pausar la sesin y el botn cambiar a Reanudar.

Para reanudar la sesin, haga clic en Reanudar.

Cmo reanudar una sesin de creacin de reflejo de la base de datos (Transact-SQL) 1 2 Conctese a cualquier asociado. Escriba la instruccin Transact-SQL siguiente:

ALTER DATABASE <database_name> SET PARTNER RESUME donde <database_name> es la base de datos reflejada cuya sesin desea reanudar. Nota: La reanudacin del reflejo de una base de datos pone a la base de datos reflejo en el estado SYNCHRONIZING. Si el nivel de seguridad es FULL, el reflejo se pone al nivel de la entidad de seguridad y la base de datos reflejo toma el estado SYNCHRONIZED. En este punto, es posible una conmutacin por error. Si el testigo est presente y activo, es posible la conmutacin automtica por error. Si no hay un testigo, es posible la conmutacin por error manual.

Para detener la creacin de reflejo de la base de datos

Cmo quitar la creacin de reflejo de la base de datos (SQL Server Management Studio) 1 Durante una sesin de creacin de reflejo de la base de datos, conctese a la sesin del servidor principal y, en el Explorador de objetos, haga clic en el nombre del servidor para expandir el rbol de servidores.

2 3
4

Expanda Bases de datos y seleccione la base de datos.

Haga clic con el botn secundario en la base de datos, seleccione Tareas y, a continuacin, haga clic en Reflejado. Se abre la pgina Creacin de reflejo del cuadro de dilogo Propiedades de la base de datos. En el panel Seleccionar una pgina, haga clic en Creacin de reflejos.

5 Para quitar la creacin de reflejo, haga clic en Quitar creacin de reflejo. Aparecer un mensaje de confirmacin. Si hace clic en S, se detendr la sesin y la creacin de reflejos se eliminar de la base de datos.

Opcionalmente, puede recuperar la base de datos reflejada anterior. En la instancia de servidor que era el servidor reflejado, use la instruccin Transact-SQL siguiente:

RESTORE DATABASE <database_name> WITH RECOVERY; Importante: Si recupera esta base de datos, habr dos bases de datos divergentes en lnea con el mismo nombre. Por consiguiente, debe garantizar que los clientes tengan acceso solamente a una de ellas, generalmente la base de datos principal ms reciente.

188

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Cmo quitar la creacin de reflejo de la base de datos (Transact-SQL)

1. 2.

Conctese a cualquier asociado. Emita la instruccin Transact-SQL siguiente:

ALTER DATABASE <database_name> SET PARTNER OFF donde <database_name> es la base de datos reflejada cuya sesin desea quitar. Esta instruccin quita la sesin de creacin de reflejo de la base de datos as como la creacin del reflejo de la base de datos. Puede especificar OFF en cualquier asociado. Opcionalmente, puede recuperar la base de datos reflejada anterior. En la instancia del servidor que era el servidor reflejado, escriba lo siguiente: RESTORE DATABASE <database_name> WITH RECOVERY; Importante: Si recupera esta base de datos, habr dos bases de datos divergentes en lnea con el mismo nombre. Por consiguiente, debe garantizar que los clientes tengan acceso solamente a una de ellas, generalmente la base de datos de la entidad de seguridad ms reciente.

12 Disear una solucin de alta disponibilidad basada en replicacin. Considerar: diferentes tipos de replicacin, topologas, recuperacin ante la falla de replicacin, sincronizacin, monitoreo de la salud del servidor La replicacin es un conjunto de tecnologas destinadas a la copia y distribucin de datos y objetos de base de datos desde una base de datos a otra, para luego sincronizar ambas bases de datos y mantener su coherencia. La replicacin permite distribuir datos entre diferentes ubicaciones y entre usuarios remotos o mviles mediante redes locales y de rea extensa, conexiones de acceso telefnico, conexiones inalmbricas e Internet. La replicacin transaccional se usa normalmente en escenarios servidor a servidor que requieren un alto rendimiento, como por ejemplo, la mejora de la escalabilidad y la disponibilidad, el almacenamiento de datos y la creacin de informes, la integracin de datos procedentes de varios sitios, la integracin de datos heterogneos, y la descarga del procesamiento por lotes. La replicacin de mezcla se ha diseado principalmente para las aplicaciones mviles o de servidores distribuidos que pueden encontrarse con conflictos de datos. Los escenarios ms frecuentes son: el intercambio de datos con usuarios mviles, las aplicaciones de punto de venta (POS) a consumidores, y la integracin de datos de varios sitios. La replicacin de datos se usa para proporcionar el conjunto de datos inicial para la replicacin transaccional y de mezcla; tambin se puede usar cuando est indicada una actualizacin completa de los datos. Con estos tres tipos de replicacin, SQL Server proporciona un sistema eficaz y flexible para la sincronizacin de datos en toda la organizacin. Adems de la replicacin, en SQL Server 2008 puede sincronizar las bases de datos mediante Microsoft Sync Framework y Sync Services for ADO.NET. Sync Services for ADO.NET proporciona una API intuitiva y flexible que se puede utilizar para generar aplicaciones destinadas a escenarios para la colaboracin sin conexin

Introduccin La replicacin de SQL Server es un conjunto de tecnologas destinadas a la copia y la distribucin de datos y objetos de base de datos de una base de datos a otra, para luego sincronizar ambas bases de datos con el fin de mantener su coherencia. Es til dividir la replicacin en dos amplias categoras: replicacin de datos en un servidor para un entorno de servidor y replicacin de datos entre un servidor y los clientes. La replicacin de datos entre servidores contribuye a la mejora de la escalabilidad y la disponibilidad, el almacenamiento de datos e informes, y la integracin de los datos desde varios sitios. La replicacin de los datos entre servidores y clientes suele contribuir al intercambio de datos con usuarios mviles, las aplicaciones de punto de venta (POS) a consumidores y la integracin desde varios sitios. La replicacin utiliza una metfora del sector editorial para representar los componentes de una topologa de replicacin, que incluyen el publicador, el distribuidor, los suscriptores, las publicaciones, los artculos y las suscripciones. Aunque la metfora de la revista es til para comprender la replicacin, es importante sealar que la replicacin de SQL Server incluye funciones que no estn representadas en esta metfora, en particular, la posibilidad de que un suscriptor realice actualizaciones y de que un publicador enve cambios incrementales a los artculos de una publicacin. Hay tres tipos de replicacin: replicacin transaccional, rplica de mezcla y replicacin de instantneas. Todos estos tipos dependen de varios programas independientes, denominados agentes, que realizan las tareas asociadas con el seguimiento de los cambios y la distribucin de los datos. Replicar datos entre un servidor y los clientes Es til dividir la rplica en dos amplias categoras: replicar datos en un servidor para un entorno de servidor y replicar datos entre un servidor y los clientes. En esta seccin de la documentacin se describen los casos en que se replican datos entre servidores y clientes, incluidas estaciones de trabajo, equipos porttiles, Tablet PC y dispositivos. Los datos normalmente se replican entre servidores y clientes para admitir las siguientes aplicaciones:

Intercambiar datos con usuarios mviles Muchas aplicaciones requieren que los datos estn disponibles para usuarios remotos, como personal de ventas, repartidores,

189

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
etc. Estas aplicaciones incluyen las de administracin de relaciones con los clientes (CRM), automatizacin del personal de ventas (SFA) y automatizacin del personal de campo (FFA).

Aplicaciones de punto de venta (POS) para el consumidor Las aplicaciones POS, como los terminales de caja de salida y los cajeros automticos, requieren que los datos se repliquen desde sitios remotos a un sitio central. Integrar datos de varios sitios Las aplicaciones a menudo integran datos de varios sitios. Por ejemplo, una aplicacin de apoyo a oficinas regionales puede requerir que los datos fluyan en una o en ambas direcciones entre las oficinas regionales y la oficina central.

Replicar datos en un entorno de servidor a servidor Resulta til dividir la replicacin en dos categoras generales: replicar datos en un entorno de servidor a servidor y replicar datos entre un servidor y los clientes. En esta seccin de la documentacin se describen escenarios de replicacin de datos entre servidores. Por lo general, los datos se replican entre servidores para proporcionar compatibilidad con las siguientes aplicaciones y requisitos:

Mejorar la escalabilidad y la disponibilidad Mantener copias de los datos que se actualicen de forma continua permite escalar la actividad de lectura entre varios servidores. La redundancia que produce el mantener varias copias de los mismos datos es crucial durante el mantenimiento del sistema (ya sea planeado o no planeado). Almacenamiento de datos e informes Los servidores de almacenamiento de datos e informes utilizan con frecuencia datos de los servidores de procesamiento de transacciones en lnea (OLTP). Utilice la replicacin para mover datos entre los servidores OLTP y los sistemas de informes y ayuda para la toma de decisiones. Integrar datos de varios sitios Con frecuencia, los datos se transfieren desde las oficinas remotas y se consolidan en una oficina central. De la misma forma, es posible replicar los datos en las oficinas remotas. Integrar datos heterogneos Algunas aplicaciones dependen de datos que se envan o se reciben de bases de datos distintas de SQL Server. Utilice la replicacin para integrar datos de bases de datos que no sean de SQL Server. Descargar procesos por lotes Las operaciones por lotes consumen con frecuencia demasiados recursos para ejecutarse en un servidor OLTP. Utilice la replicacin para descargar el procesamiento a un servidor de proceso por lotes dedicado.

Informacin general del modelo de publicacin de replicacin La replicacin utiliza una metfora del sector editorial para representar los componentes de una topologa de replicacin, que incluyen el publicador, el distribuidor, los suscriptores, las publicaciones, los artculos y las suscripciones. Resulta til pensar en la replicacin de Microsoft SQL Server como si fuera una revista:

El publicador (editor) de una revista produce una o ms publicaciones.

Una publicacin contiene artculos. El publicador distribuye la revista directamente o a travs de un distribuidor.

Los suscriptores reciben las publicaciones a las que se han suscrito.

Aunque la metfora de la revista es til para comprender la replicacin, es importante sealar que la replicacin de SQL Server incluye funciones que no estn representadas en esta metfora, en particular, la posibilidad de que un suscriptor realice actualizaciones y de que un publicador enve cambios incrementales a los artculos de una publicacin. Una topologa de replicacin define la relacin entre los servidores y las copias de los datos, y aclara la lgica que determina cmo fluyen los datos entre los servidores. Hay varios procesos de replicacin (denominados agentes) que son responsables de copiar y mover los datos entre el publicador y los suscriptores. En la siguiente ilustracin se muestra informacin general acerca de los componentes y procesos que participan en la replicacin.

190

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Publicador El publicador es una instancia de base de datos que permite que los datos estn disponibles para otras ubicaciones a travs de la replicacin. El publicador puede tener una o ms publicaciones, cada una de las cuales representa un conjunto de objetos y datos relacionados lgicamente para replicar. Distribuidor El distribuidor es una instancia de base de datos que funciona como almacn para datos especficos de replicacin asociados con uno o ms publicadores. Cada publicador est asociado con una sola base de datos (conocida como la base de datos de distribucin) en el distribuidor. La base de datos de distribucin almacena los datos de estado de la replicacin, metadatos acerca de la publicacin y, en algunos casos, funciona como cola para los datos que se transfieren del publicador a los suscriptores. En muchos casos, una sola instancia de servidor de bases de datos funciona como publicador y como distribuidor Esto se conoce como un distribuidor local. Cuando el publicador y el distribuidor se configuran en instancias distintas del servidor de bases de datos, el distribuidor se denomina un distribuidor remoto. Suscriptores Un suscriptor es una instancia de base de datos que recibe datos replicados. Un suscriptor puede recibir datos de varios publicadores y publicaciones. En funcin del tipo de replicacin elegida, el suscriptor tambin puede devolver los datos modificados al publicador o volver a publicar los datos en otros suscriptores. Artculo Un artculo identifica un objeto de base de datos incluido en una publicacin. Una publicacin puede contener diferentes tipos de artculos, como tablas, vistas, procedimientos almacenados y otros objetos. Cuando las tablas se publican como artculos, se pueden usar filtros para restringir las columnas y filas de datos que se envan a los suscriptores.

Publicacin Una publicacin es un conjunto de uno o ms artculos de una base de datos. La agrupacin de varios artculos en una publicacin permite especificar ms fcilmente un conjunto de objetos y datos de bases de datos relacionados lgicamente, que se replican como una unidad. Suscripcin Una suscripcin es una solicitud de una copia de una publicacin que se entrega a un suscriptor. La suscripcin define qu publicacin se recibir, dnde y cundo. Hay dos tipos de suscripciones: de insercin y de extraccin.

Informacin general sobre los tipos de replicacin Microsoft SQL Server proporciona los siguientes tipos de replicacin para usarlos en las aplicaciones distribuidas:

Replicacin transaccional. Replicacin de mezcla.

Replicacin de instantneas.

El tipo de replicacin que se elige para una aplicacin depende de muchos factores, como el entorno fsico de la replicacin, el tipo y la cantidad de datos que se desean replicar y si los datos se actualizan en el suscriptor. El entorno fsico incluye el nmero y la ubicacin de los equipos que participan en la replicacin, y si estos equipos son clientes (estaciones de trabajo, equipos porttiles o dispositivos de mano) o servidores. Por lo general, cada tipo de replicacin comienza con una sincronizacin inicial de los objetos publicados entre el publicador y los suscriptores. Esta sincronizacin inicial puede llevarse a cabo mediante la replicacin con una instantnea, que es una copia de todos los objetos y datos especificados por una publicacin. Una vez creada la instantnea, se enva a los suscriptores. Para algunas aplicaciones, la replicacin de instantneas es lo nico que se necesita. Para otros tipos de aplicaciones, es importante que los cambios de datos posteriores fluyan al suscriptor de forma incremental a lo largo del tiempo. Algunas aplicaciones tambin requieren que los cambios vuelvan del suscriptor al publicador. La replicacin transaccional y la replicacin de mezcla proporcionan opciones para estos tipos de aplicaciones.

191

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
En la replicacin de instantneas, no se realiza un seguimiento de los cambios de datos; cada vez que se aplica una instantnea, sta sobrescribe completamente los datos existentes. La replicacin transaccional realiza un seguimiento de los cambios a travs del registro de transacciones de SQL Server y la replicacin de mezcla realiza un seguimiento de los cambios a travs de desencadenadores y tablas de metadatos.

Replicacin transaccional. Normalmente, la replicacin transaccional se inicia con una instantnea de los datos y los objetos de la base de datos de publicaciones. En cuanto se obtiene la instantnea inicial, los posteriores cambios de datos y modificaciones del esquema realizados en el publicador habitualmente se entregan en el suscriptor cuando se producen (casi en tiempo real). Los cambios de datos se aplican al suscriptor en el mismo orden y dentro de los mismos lmites de la transaccin que cuando se produjeron en el publicador. Por tanto, en una publicacin, se garantiza la coherencia transaccional. La replicacin transaccional se utiliza normalmente en entornos entre servidores y es la adecuada en los siguientes casos:

Se desea que se propaguen cambios incrementales a los suscriptores en el momento en que ocurren. La aplicacin requiere latencia baja entre el momento en que se realizan los cambios en el publicador y el momento en que los cambios llegan al suscriptor. La aplicacin requiere acceso a estados de datos intermedios. Por ejemplo, si una fila cambia cinco veces, la replicacin transaccional permite a una aplicacin responder a cada cambio (por ejemplo, activando un desencadenador), no simplemente al cambio de datos neto de la fila. El publicador tiene un volumen elevado de actividad de insercin, actualizacin y eliminacin.

El publicador o el suscriptor es una base de datos que no es de SQL Server, como Oracle.

De forma predeterminada, los suscriptores de publicaciones transaccionales deben tratarse como de slo lectura, porque los cambios no se propagan del vuelta al publicador. No obstante, la replicacin transaccional ofrece opciones que permiten actualizaciones en el suscriptor. La replicacin transaccional se implementa con el Agente de instantneas, el Agente de registro del LOG y el Agente de distribucin de SQL Server. El Agente de instantneas prepara archivos de instantneas que contienen esquemas y datos de las tablas y objetos de base de datos publicados, almacena los archivos en la carpeta de instantneas y registra los trabajos de sincronizacin en la base de datos de distribucin del distribuidor. El Agente de registro del LOG supervisa el registro de transacciones de cada base de datos configurada para la replicacin transaccional y copia las transacciones marcadas para ser replicadas desde el registro de transacciones a la base de datos de distribucin, que acta como una cola de almacenamiento y reenvo confiable. El Agente de distribucin copia los archivos de instantneas iniciales de la carpeta de instantneas y las transacciones almacenadas en las tablas de la base de datos de distribucin a los suscriptores. Los cambios incrementales realizados en el publicador se transfieren a los suscriptores de acuerdo con la programacin del Agente de distribucin, que se puede ejecutar continuamente para que la latencia sea mnima o a intervalos programados. Puesto que los datos deben cambiarse en el publicador (cuando se utiliza la replicacin transaccional sin las opciones de actualizacin inmediata ni de actualizacin en cola), se evita que se produzcan conflictos de actualizacin. Al final, todos los suscriptores disponen de los mismos valores que el publicador. Si se utilizan las opciones de actualizacin inmediata o de actualizacin en cola con la replicacin transaccional, las actualizaciones pueden realizarse en el suscriptor y, con la actualizacin en cola, pueden producirse conflictos. En la siguiente ilustracin se muestran los principales componentes de la replicacin transaccional.

192

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Conjunto de datos inicial Antes de que un suscriptor de replicacin transaccional pueda recibir los cambios incrementales desde un publicador, debe contener tablas con el mismo esquema y los mismos datos que las tablas del publicador. El conjunto de datos inicial es normalmente una instantnea que se crea con el Agente de instantneas y se distribuye y aplica a travs del Agente de distribucin. Tambin se puede suministrar el conjunto de datos inicial mediante una copia de seguridad u otro medio, como SQL Server Integration Services. Cuando se distribuyen y se aplican instantneas a los suscriptores, slo se ven afectados los suscriptores que estn esperando instantneas iniciales. Otros suscriptores de esa publicacin (aquellos que ya se han inicializado) no se ven afectados.

Procesamiento simultneo de instantneas La replicacin de instantneas coloca bloqueos compartidos en todas las tablas publicadas como parte de la replicacin mientras dure la generacin de instantneas. As se puede evitar que se realicen actualizaciones en las tablas de publicacin. El procesamiento simultneo de instantneas, que es el valor predeterminado con la replicacin transaccional, no mantiene los bloqueos compartidos durante la generacin completa de la instantnea, lo que permite a los usuarios continuar el trabajo sin interrupcin mientras la replicacin crea los archivos de instantneas iniciales.

Agente de instantneas Los procedimientos por los que el Agente de instantneas implementa la instantnea inicial en la replicacin transaccional son los mismos que se utilizan en la replicacin de instantneas (excepto en lo indicado anteriormente acerca del procesamiento simultneo de instantneas).

193

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Despus de generarse los archivos de instantneas, podr verlos en la carpeta de instantneas mediante el Explorador de Microsoft Windows.

Modificar datos y el Agente de registro del LOG El Agente de registro del LOG se ejecuta en el distribuidor. Normalmente se ejecuta de forma continua, pero tambin puede hacerlo siguiendo una programacin establecida. Al ejecutarse, el Agente de registro del LOG lee primero el registro de transacciones de la publicacin (el mismo registro de la base de datos que se utiliza para el seguimiento de las transacciones y la recuperacin durante las operaciones normales del motor de base de datos de SQL Server) e identifica las instrucciones INSERT, UPDATE y DELETE, u otras modificaciones efectuadas en los datos de las transacciones que se hayan marcado para ser replicadas. A continuacin, el agente copia por lotes dichas transacciones a la base de datos de distribucin del distribuidor. El Agente de registro del LOG utiliza el procedimiento almacenado interno sp_replcmds para obtener el siguiente conjunto de comandos marcados para replicacin desde el registro. La base de datos de distribucin se convierte as en una cola de almacenamiento y reenvo desde la que se envan los cambios a los suscriptores. A la base de datos de distribucin slo se envan las transacciones confirmadas. El lote completo de transacciones se confirma despus de que se ha escrito correctamente en la base de datos de distribucin. A continuacin de la confirmacin de cada lote de comandos en el distribuidor, el Agente de registro del LOG llama a sp_repldone para marcar hasta dnde se ha llegado en la replicacin. Por ltimo, el agente marca las filas del registro de transacciones que estn listas para ser purgadas. Las filas que estn en espera de ser replicadas no se purgan. Los comandos de transaccin se almacenan en la base de datos de distribucin hasta que se propagan a todos los suscriptores o hasta que se ha alcanzado el perodo mximo de retencin de distribucin. Los suscriptores recibirn las transacciones en el mismo orden en que fueron aplicadas en el publicador. Agente de distribucin El Agente de distribucin se ejecuta en el distribuidor para las suscripciones de insercin y en el suscriptor para las suscripciones de extraccin. El Agente mueve las transacciones desde la base de datos de distribucin al suscriptor. Si se ha marcado una suscripcin para validarla, el Agente de distribucin comprueba tambin si los datos en el publicador y en el suscriptor coinciden.

Replicacin de mezcla. La replicacin de mezcla, como la replicacin transaccional, normalmente se inicia con una instantnea de los objetos y datos de una base de datos de publicaciones. Los cambios de datos y las modificaciones de esquema posteriores que se lleven a cabo en el publicador y en los suscriptores se controlan mediante desencadenadores. El suscriptor se sincroniza con el publicador cuando estn conectados a la red e intercambian todas las filas que han cambiado entre el publicador y el suscriptor desde la ltima vez que se produjo la sincronizacin. La replicacin de mezcla se suele utilizar en entornos de servidor a cliente. La replicacin de mezcla es adecuada en las siguientes situaciones:

Varios suscriptores actualizan los mismos datos en diferentes ocasiones y propagan los cambios al publicador y a otros suscriptores. Los suscriptores necesitan recibir datos, realizar cambios sin conexin y sincronizar ms adelante los cambios con el publicador y otros suscriptores. Cada suscriptor requiere una particin de datos diferente. Se pueden producir conflictos y, cuando ocurren, debe poder detectarlos y resolverlos.

La aplicacin requiere el cambio de datos neto en lugar de acceso a los estados intermedios de los datos. Por ejemplo, si una fila cambia cinco veces en el suscriptor antes de que ste se sincronice con el publicador, la fila cambiar slo una vez en el publicador para reflejar el cambio de datos neto (es decir, el quinto valor).

La replicacin de mezcla permite que diferentes sitios funcionen de forma autnoma y, despus, mezclen las actualizaciones en un solo resultado uniforme. Puesto que las actualizaciones tienen lugar en ms de un nodo, los mismos datos pueden haber sido actualizados por el publicador y por ms de un suscriptor. Por tanto, se pueden producir conflictos cuando las actualizaciones se mezclan y la replicacin de mezcla proporciona varias formas de controlar los conflictos. El Agente de instantneas y el Agente de mezcla de SQL Server implementan la replicacin de mezcla. Si la publicacin no se filtra o utiliza filtros estticos, el Agente de instantneas crea una sola instantnea. Si la publicacin utiliza filtros con parmetros, el Agente de instantneas crea una instantnea para cada particin de datos. El Agente de mezcla aplica las instantneas iniciales a los suscriptores. Tambin mezcla los cambios incrementales de los datos que tienen lugar en el publicador o en los suscriptores despus de la creacin de la instantnea inicial y detecta y resuelve los conflictos segn las reglas que configure. En el siguiente diagrama se muestran los componentes que se utilizan en la replicacin de mezcla.

194

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Cmo se inicializan publicaciones y suscripciones en la replicacin de mezcla La replicacin de mezcla debe inicializar tanto el publicador como el suscriptor para que puedan fluir datos entre ellos. En este tema se proporciona informacin sobre los pasos que tienen lugar durante la inicializacin. Inicializar la publicacin En la siguiente lista se detallan los pasos de inicializacin para una publicacin que tienen lugar cuando se ejecuta cada procedimiento almacenado presentado o una vez que ha finalizado el Asistente para nueva publicacin. El proceso de inicializacin contina despus de que el Agente de instantneas se ejecute por primera vez para una publicacin.

sp_replicationdboption

o o

La base de datos de publicaciones se marca para replicacin. Esta base de datos no puede quitarse a menos que se quite la replicacin.

Las tablas del sistema se agregan a la base de datos de publicaciones (a menos que ya haya una publicacin de mezcla en la base de datos).

sp_addmergepublication

Se agregan las entradas de la publicacin a las tablas del sistema.

sp_addpublication_snapshot

Se agrega un trabajo del Agente de instantneas al sistema del Agente SQL Server. El nombre del trabajo tiene el formato: <publicador>-<baseDeDatosDePublicaciones>-<publicacin>-<entero>.

sp_addmergearticle

195

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009 o o
Cada objeto replicado se marca para replicacin. No es posible eliminar el objeto, a menos que se quite el artculo correspondiente de todas las publicaciones.

Se agregan las entradas de cada artculo a las tablas del sistema.

El resto de la inicializacin de la base de datos de publicaciones se produce durante la ejecucin inicial del Agente de instantneas para una publicacin (la base de datos de publicaciones no se vuelve a inicializar durante las siguientes ejecuciones del Agente de instantneas). Si se utiliza el Asistente para nueva publicacin, la instantnea inicial se crea de forma predeterminada una vez que ha finalizado el asistente. Si se utilizan procedimientos almacenados, es necesario ejecutar el trabajo del agente o ejecutar ste directamente. La primera vez que se ejecuta el Agente de instantneas para una publicacin:

Se agrega una columna denominada rowguid a todas las tablas publicadas, a menos que la tabla ya tenga una columna del tipo de datos uniqueidentifier con la propiedad ROWGUIDCOL definida (en cuyo caso se utiliza dicha columna). La columna rowguid se utiliza para identificar de forma exclusiva cada fila de cada tabla publicada. Si la tabla se quita de la publicacin, la columna rowguid se elimina; si se ha utilizado una columna existente para realizar el seguimiento, la columna no se quita. En la base de datos de publicaciones de cada tabla publicada se crean los siguientes objetos (todos los objetos se crean en el esquema dbo):

Se agregan desencadenadores Insert, Update y Delete a las tablas publicadas para realizar un seguimiento de los cambios. Los nombres de los desencadenadores tienen el formato: MSmerge_ins_<GUID>, MSmerge_upd_<GUID> y MSmerge_del_<GUID>. El valor GUID se deriva de la entrada del artculo en la tabla del sistema sysmergearticles.

o o o

Se crean procedimientos almacenados para controlar inserciones, actualizaciones y eliminaciones en las tablas publicadas, as como para realizar otras operaciones relacionadas con la replicacin.

Se crean vistas para administrar las inserciones, las actualizaciones, las eliminaciones y el filtrado.

Se crean tablas de conflictos para almacenar informacin sobre conflictos. Las tablas de conflictos coinciden con el esquema de las tablas publicadas: se crean scripts para cada tabla publicada. Despus, los scripts se utilizan para crear la tabla de conflictos de la base de datos de publicaciones. Los nombres de las tablas de conflictos tienen el formato: dbo.MSmerge_conflict_<publicacin>_<artculo>.

Cada vez que se ejecuta el Agente de instantneas, se crean los siguientes tipos de archivos (con las extensiones que se indican) para cada artculo de la base de datos de publicaciones:

Esquema (.sch) Restricciones e ndices (.dri)

Desencadenadores (.trg) Datos de tabla del sistema (.sys)

Tablas de conflictos (.cft) Datos (.bcp): no se crean para las publicaciones con filtros con parmetros Si la publicacin no utiliza filtros con parmetros, la instantnea contiene los datos de las tablas publicadas en un conjunto de archivos .bcp. Si la publicacin utiliza filtros con parmetros (lo que es tpico de las publicaciones de mezcla), la instantnea inicial no contiene ningn dato. Los datos se proporcionan mediante una instantnea de la particin de un suscriptor. Esto se explica en la seccin "Inicializar una suscripcin".

Inicializar una suscripcin

Las suscripciones se inicializan cuando su Agente de mezcla se ejecuta y copia la instantnea inicial en la base de datos de suscripciones. Adems del esquema y los datos de los objetos replicados, la instantnea contiene las tablas del sistema, las vistas, los desencadenadores y los procedimientos almacenados que hay en la base de datos de publicaciones (tambin se copian una o dos tablas del sistema adicionales en la base de datos de suscripciones. Si una suscripcin se vuelve a inicializar, se sobrescriben todos los objetos replicados y los objetos del sistema de replicacin. Si ninguna de las tablas de la base de datos de publicaciones utiliza filtros con parmetros, se copia la misma instantnea de publicacin en cada suscriptor. Se se utilizan uno o ms filtros con parmetros, la forma en que se inicializa cada suscripcin se rige por la siguiente lgica:

Si se ha proporcionado al Agente de mezcla la ubicacin de la instantnea en la lnea de comandos:

Aplica la instantnea desde esa ubicacin.

196

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
De lo contrario, si la instantnea ha sido generada previamente:

Recupera la ubicacin de la instantnea de MSmerge_dynamic_snapshots en la base de datos de publicaciones y aplica la instantnea desde esa ubicacin.

De lo contrario, si la publicacin permite a los suscriptores inicializar instantneas:

o o

Si ya se ha generado una instantnea para otro suscriptor con la misma particin, aplica esa instantnea al suscriptor.

De lo contrario, genera y aplica una instantnea al suscriptor.

De lo contrario, inicializa el suscriptor mediante instrucciones SELECT en las tablas de la publicacin. Este sistema es ms lento que el uso de una instantnea de la particin del suscriptor.

Si la transferencia de la instantnea se interrumpe en algn momento, continuar inmediatamente y no se volver a enviar ningn archivo que ya hubiera sido transferido en su totalidad. La unidad de entrega del Agente de instantneas es el archivo bcp de cada artculo de la publicacin, de modo que los archivos entregados parcialmente deben volverse a entregar completamente. No obstante, continuar con la instantnea puede reducir de forma significativa la cantidad de datos transmitidos y garantizar una entrega a tiempo de la instantnea aunque la conexin no sea de confianza.

Ubicacin de la instantnea La ubicacin de la instantnea depende de: la ruta de acceso especificada para la ubicacin predeterminada o alternativa de la instantnea; si la publicacin utiliza una ruta UNC o un recurso compartido FTP para la carpeta de instantneas; y si la publicacin utiliza filtros con parmetros. En estos ejemplos, se supone que la ubicacin de la carpeta de instantneas es: \\<miPC>\<miCarpeta>\:

Si la publicacin utiliza UNC, la primera parte de la ruta de acceso es: \\<miPC>\<miCarpeta>\unc\. Si utiliza FTP, es: \\<miPC>\<miCarpeta>\ftp\. Si la publicacin utiliza UNC y no emplea filtros con parmetros, \\<miPC>\<miCarpeta>\unc\<publicador>_<baseDeDatosDePublicaciones>_<publicacin> la ruta de acceso es:

Si la publicacin utiliza UNC y filtros con parmetros, la ubicacin se basa en la ruta de acceso de la carpeta de instantneas y en el criterio de filtro de fila con parmetros de la publicacin. Por ejemplo, si el artculo se filtra mediante la funcin HOST_NAME() y el valor de HOST_NAME() para la particin es 'SalesLaptop', la ruta de acceso a la instantnea de esa particin es: \\<miPC>\<miCarpeta>\unc\<publicador>_<baseDeDatosDePublicaciones>_<publicacin>\ SalesLaptop_12\, donde 12 es el Id. utilizado internamente para la particin.

Tablas del sistema creadas en las bases de datos de publicaciones y suscripciones En la base de datos de publicaciones y en cada base de datos de suscripciones se crean las siguientes tablas. Tabla Descripcin

MSdynamicsnapshotjobs (Transact-SQL)

Contiene informacin sobre los trabajos de instantneas de las publicaciones con filtros con parmetros.

MSdynamicsnapshotviews (Transact-SQL)

Realiza un seguimiento de todas las vistas de instantneas temporales creadas por el Agente de instantneas. El sistema la utiliza para limpiar vistas en caso de un cierre anmalo del Agente SQL Server o del Agente de instantneas.

MSmerge_altsyncpartners (Transact-SQL)

Realiza un seguimiento de la asociacin de quines son los asociados de sincronizacin actuales de un publicador.

MSmerge_articlehistory (Transact-SQL)

Realiza un seguimiento de los cambios realizados en los artculos durante una sesin de sincronizacin del Agente de mezcla, con una fila por cada artculo en el que se han realizado cambios.

MSmerge_conflicts_info (Transact-SQL)

Realiza un seguimiento de los conflictos que se producen al sincronizar una suscripcin con una publicacin de mezcla.

MSmerge_contents (Transact-SQL)

Contiene una fila por cada fila modificada en la base de datos actual desde que fue publicada. El proceso de mezcla utiliza esta tabla para determinar las filas que han cambiado.

MSmerge_current_partition_mappings

Contiene una fila por cada particin a la que pertenece un fila modificada concreta.

197

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

MSmerge_dynamic_snapshots SQL)

(Transact- Realiza un seguimiento de la instantnea de cada particin definida para una publicacin de mezcla.

MSmerge_errorlineage (Transact-SQL)

Contiene filas eliminadas del suscriptor, pero cuya eliminacin no se ha propagado al publicador.

MSmerge_generation_partition_mappings (Transact-SQL)

Realiza un seguimiento para controlar si una generacin concreta contiene algn cambio importante para una particin especfica.

MSmerge_genhistory (Transact-SQL)

Contiene una fila por cada generacin. Una generacin es una coleccin de cambios que se entregan a un publicador o a un suscriptor. Las generaciones se cierran cada vez que se ejecuta el Agente de mezcla; los cambios posteriores en una base de datos se agregan a una o ms generaciones abiertas.

MSmerge_history (Transact-SQL)

Contiene filas de historial con descripciones detalladas de los resultados de las sesiones de trabajo anteriores del Agente de mezcla.

MSmerge_identity_range (Transact-SQL)

Realiza un seguimiento de los intervalos numricos asignados a las columnas de identidad de las suscripciones a publicaciones en las que la replicacin est administrando automticamente las asignaciones de intervalos.

MSmerge_metadataaction_request (Transact-SQL)

Contiene una fila por cada accin de compensacin necesaria. Una accin de compensacin se utiliza para revertir un cambio en un nodo si se ha producido un error en el cambio en otro nodo.

MSmerge_partition_groups (Transact-SQL)

Contiene una fila por cada particin precalculada de una base de datos concreta.

MSmerge_past_partition_mappings (Transact-SQL)

Contiene una fila por cada particin a la que que perteneca una fila modificada, pero a la que ya no pertenece.

MSmerge_replinfo (Transact-SQL)

Contiene una fila por cada suscripcin. Esta tabla hace un seguimiento de la informacin interna relativa a las generaciones enviadas y recibidas.

MSmerge_sessions (Transact-SQL)

Contiene filas de historial con los resultados de sesiones de trabajo anteriores del Agente de mezcla.

MSmerge_settingshistory (Transact-SQL)

Contiene un historial de los cambios realizados en las propiedades de artculos y publicaciones, con una fila para cada cambio realizado.

MSmerge_tombstone (Transact-SQL)

Contiene informacin sobre las filas eliminadas y permite propagar las eliminaciones a otros suscriptores.

MSrepl_errors (Transact-SQL)

Contiene informacin detallada sobre cualquier error de un agente.

sysmergearticles (Transact-SQL)

Contiene una fila por cada artculo de mezcla.

sysmergepartitioninfo (Transact-SQL)

Contiene informacin sobre las particiones de cada artculo, con una fila por cada artculo.

sysmergepartitioninfoview (Transact-SQL)

Contiene informacin de particiones para los artculos de una tabla.

sysmergepublications (Transact-SQL)

Contiene una fila por cada publicacin de mezcla.

sysmergeschemaarticles (Transact-SQL)

Realiza un seguimiento de los artculos de slo esquema, como los procedimientos almacenados.

sysmergeschemachange (Transact-SQL)

Contiene informacin acerca de los artculos publicados generados por el Agente de

198

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

instantneas.

sysmergesubscriptions (Transact-SQL)

Contiene una fila por cada suscriptor.

sysmergesubsetfilters (Transact-SQL)

Contiene informacin de filtro de combinacin para los artculos con particiones.

Adems, en cada base de datos de suscripciones se crea la tabla MSsnapshotdeliveryprogress; en cada base de datos de suscripciones que utiliza una suscripcin de extraccin se crea la tabla MSsubscription_properties: Tabla Descripcin

MSsnapshotdeliveryprogress (Transact-SQL)

Realiza un seguimiento de los archivos que se han entregado correctamente al suscriptor cuando se aplica una instantnea. Estos datos se utilizan para continuar con la entrega de archivos en caso de que el Agente de mezcla no entregue todos los archivos durante la sesin.

MSsubscription_properties (Transact-SQL)

Contiene la informacin de parmetros necesaria para ejecutar agentes de replicacin en el suscriptor.

Cmo se realiza el seguimiento y la enumeracin de los cambios en la rplica de mezcla Una vez inicializada una publicacin o suscripcin, la rplica de mezcla realiza el seguimiento y la enumeracin de todos los cambios efectuados en los datos de las tablas publicadas. El seguimiento de los cambios se realiza a travs de desencadenadores (que la rplica crea para cada tabla publicada) y tablas del sistema de las bases de datos de suscripciones y publicaciones. Estas tablas del sistema de rplica se llenan con metadatos que indican qu cambios deben propagarse. Cuando el Agente de mezcla se ejecuta durante la sincronizacin, enumera los cambios y stos se aplican al publicador y suscriptor segn sea necesario. Seguimiento de los cambios La rplica de mezcla utiliza los siguientes desencadenadores y tablas del sistema para realizar un seguimiento de los cambios en todas las tablas publicadas:

MSmerge_ins_<GUID>: desencadenador de insercin (el valor GUID para ste y los dems desencadenadores deriva de sysmergearticles) MSmerge_upd_<GUID>: desencadenador de actualizacin

MSmerge_del_<GUID>: desencadenador de eliminacin MSmerge_contents

MSmerge_tombstone MSmerge_genhistory

La rplica de mezcla utiliza las siguientes tablas del sistema adicionales para realizar un seguimiento de los cambios en las tablas filtradas:


Nota:

MSmerge_partition_groups MSmerge_current_partition_mappings

MSmerge_past_partition_mappings

Las tablas del sistema incluidas en la lista se utilizan en todas las publicaciones y suscripciones de mezcla de una base de datos; por ejemplo, si tiene ms de una publicacin en una base de datos de publicaciones, MSmerge_contents contiene filas de los artculos de todas las publicaciones.

Seguimiento de los cambios para tablas sin filtrar

Tablas del sistema Las tablas del sistema utilizadas para tablas filtradas y sin filtrar contienen los siguientes metadatos:

MSmerge_contents contiene una fila por cada fila insertada o actualizada de una tabla publicada en la base de datos.

199

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
MSmerge_tombstone contiene una fila para cada fila eliminada de una tabla publicada en la base de datos. MSmerge_genhistory contiene una fila por cada generacin. Una generacin es un conjunto de cambios que se entregan a un publicador o suscriptor. Las generaciones se cierran cada vez que se ejecuta el Agente de mezcla; los cambios posteriores en una base de datos se agregan a una o varias generaciones abiertas.

Proceso de seguimiento de los cambios Se utiliza el siguiente proceso de seguimiento de los cambios para todas las tablas sin filtrar:

Cuando se produce una insercin o actualizacin en una tabla publicada, el desencadenador MSmerge_ins_<GUID> o MSmerge_upd_<GUID> se activa, y se inserta una fila en la tabla del sistema MSmerge_contents. La columna rowguid de MSmerge_contents contiene el valor GUID para la fila insertada o actualizada, lo que indica que la prxima vez que se produzca la sincronizacin, la correspondiente fila insertada o actualizada en la tabla de usuario deber ser enviada al publicador o los suscriptores. Si se producen actualizaciones posteriores en una fila de una tabla de usuario, la fila de MSmerge_contents se actualiza para reflejar dicha situacin. Cuando se produce una eliminacin en una tabla publicada, el desencadenador MSmerge_del_<GUID> se activa y se inserta una fila en la tabla del sistema MSmerge_tombstone. La columna rowguid de MSmerge_tombstone contiene el valor GUID para la fila eliminada, lo que indica que la prxima vez que se produzca la sincronizacin, deber enviarse al publicador o a los suscriptores una eliminacin para la correspondiente fila eliminada de la tabla de usuario. Si se hace referencia a la fila eliminada en MSmerge_contents (porque haya sido insertada o actualizada desde la ltima sincronizacin), la fila se elimina de MSmerge_contents.

Seguimiento de los cambios para tablas filtradas

Tablas del sistema Tres tablas de la base de datos de publicaciones contienen metadatos para realizar un seguimiento de los cambios en las tablas filtradas:

MSmerge_partition_groups contiene una fila para cada particin definida en una publicacin. Las particiones pueden:

o o

Definirse explcitamente mediante sp_addmergepartition o la pgina Particiones de datos del cuadro de dilogo Propiedades de la publicacin.

Crearse automticamente cuando un suscriptor se sincroniza, si el suscriptor requiere una particin que todava no tenga una entrada en MSmerge_partition_groups.

MSmerge_current_partition_mappings contiene una fila para cada combinacin de filas nica de MSmerge_contents y MSmerge_partition_groups. Por ejemplo, si una fila de una tabla de usuario pertenece a dos particiones y la fila se actualiza, se inserta una fila en MSmerge_contents para reflejar la actualizacin, y se insertan dos filas en MSmerge_current_partition_mappings para indicar que la fila actualizada pertenece a las dos particiones. MSmerge_past_partition_mappings contiene una fila para cada fila que ha dejado de pertenecer a una particin determinada. Una fila sale de una particin si:

o o

La fila se elimina. Si se elimina una fila de una tabla de usuario, se inserta una fila en MSmerge_tombstone y una o varias filas en MSmerge_past_partition_mappings.

El valor de una columna utilizada para filtrar ha cambiado. Por ejemplo, si un filtro con parmetros se basa en el estado en el que una empresa tiene las oficinas centrales y la empresa se traslada, la fila de la empresa (y las filas relacionadas de otras tablas) pueden pasar de la particin de datos de un vendedor a la particin de otro. Si se actualiza una fila que ha dejado de pertenecer a una particin, se inserta o actualiza una fila en MSmerge_contents y se insertan una o varias filas en MSmerge_past_partition_mappings.

Nota: Si se utilizan particiones no superpuestas con una suscripcin por particin (un valor de 3 para el parmetro @partition_options de sp_addmergearticle), las tablas del sistema MSmerge_current_partition_mappings y MSmerge_past_partition_mappings no se utilizan para realizar un seguimiento de las asignaciones de particiones de las filas, ya que cada fila pertenece a una sola particin y se puede cambiar en un solo suscriptor.

Proceso de seguimiento de los cambios El proceso descrito anteriormente (en la seccin "Seguimiento de los cambios para tablas sin filtrar") para las tablas sin filtrar se utiliza tambin para las tablas filtradas, con las siguientes adiciones:

Cuando se produce una insercin en una tabla publicada, adems de la actualizacin o insercin de los datos en MSmerge_contents, se agrega una asignacin de particiones a MSmerge_current_partition_mappings para cada una de las particiones a las que pertenece la fila.

200

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Cuando se produce una actualizacin en una tabla publicada, adems de la actualizacin o insercin de los datos en MSmerge_contents, se agrega una asignacin de particiones para cada una de las particiones a las que pertenece la fila si no existe ninguna asignacin en MSmerge_current_partition_mappings. Si la actualizacin ha provocado que una fila se mueva de una particin a otra, se actualiza una fila en MSmerge_current_partition_mappings y se agrega otra a MSmerge_past_partition_mappings. Cuando se produce una eliminacin en una tabla publicada, adems de insertarse una fila en MSmerge_tombstone, se elimina una fila de MSmerge_current_partition_mappings y se agrega otra a MSmerge_past_partition_mappings.

Enumeracin de los cambios Procedimientos y tablas del sistema Cuando se ejecuta el Agente de mezcla, los cambios se enumeran utilizando una serie de tablas del sistema y procedimientos almacenados:

MSmerge_genhistory contiene una fila por cada generacin. Una generacin es un conjunto de cambios que se entregan a un publicador o suscriptor. Las generaciones se cierran cada vez que se ejecuta el Agente de mezcla; los cambios posteriores en una base de datos se agregan a una o varias generaciones abiertas. sysmergesubscriptions contiene informacin sobre suscripciones, incluido un registro de las ltimas generaciones de cambios que un nodo ha enviado y recibido. En la base de datos de publicaciones, esta tabla contiene una fila para el publicador y otra para el suscriptor. En una base de datos de suscripciones, esta tabla normalmente contiene una fila para el publicador y otra para el suscriptor. MSmerge_generation_partition_mappings se utiliza slo para tablas filtradas y registra si una generacin determinada contiene algn cambio relevante para una particin determinada. Esta tabla de la base de datos de publicaciones contiene una fila para cada combinacin nica de filas de MSmerge_genhistory y MSmerge_partition_groups. sp_MSmakegeneration cierra todas las generaciones abiertas al comienzo del proceso de enumeracin.

sp_MSenumchanges enumera los cambios de las tablas (en este proceso se utilizan tambin una serie de procedimientos relacionados cuyos nombres empiezan por sp_MSenumchanges). sp_MSgetmetadata determina si un cambio de un nodo debe aplicarse a otro como insercin, actualizacin o eliminacin.

Proceso de enumeracin de los cambios Se produce el siguiente proceso durante la enumeracin de cambios:

1.

Se llama al procedimiento del sistema sp_MSmakegeneration:

Para tablas filtradas y sin filtrar, este procedimiento cierra todas las generaciones abiertas a las que se hace referencia en MSmerge_genhistory (las generaciones cerradas tienen un valor de 1 2 en la columna genstatus).

Para

las

tablas

filtradas,

este

procedimiento

llena

la

tabla

del

sistema

MSmerge_generation_partition_mappings. Si una generacin contiene uno o varios cambios relevantes para una particin, se inserta una fila en la tabla del sistema. Si una generacin no contiene ningn cambio relevante para una particin determinada, no se inserta ninguna fila en MSmerge_generation_partition_mappings y los cambios no se enumeran para ningn suscriptor que reciba dicha particin.

2.

Se llama al procedimiento almacenado sp_MSenumchanges y los procedimientos relacionados. Estos procedimientos enumeran los cambios que se han producido desde que tuvo lugar la ltima sincronizacin:

a.Los procedimientos determinan primero la generacin en la que comienza la enumeracin, basndose en las columnas

sentgen (ltima generacin enviada) y recgen (ltima generacin recibida) de la tabla sysmergesubscriptions. Por ejemplo, al determinar los cambios de las generaciones que deben enumerarse para un suscriptor determinado, se comparan sentgen para el suscriptor (almacenado en la base de datos de publicaciones) y recgen para el suscriptor (almacenado en la base de datos de suscripciones). Si los valores son los mismos (lo que indica que la ltima generacin enviada desde el publicador ha sido recibida correctamente por el suscriptor), los cambios se enumeran empezando por la siguiente generacin de MSmerge_genhistory. Si los valores no son los mismos, el menor de los dos se utiliza para garantizar que se envan todos los cambios necesarios.

b.A

continuacin,

los

procedimientos

enumeran

los

cambios:

Para las tablas sin filtrar, se enumeran todos los cambios contenidos en las generaciones tras la generacin en sentgen o recgen: MSmerge_genhistory se combina con MSmerge_contents y MSmerge_tombstone para determinar los cambios que se deben enviar. Para las tablas filtradas, MSmerge_generation_partition_mappings se combina con: MSmerge_current_partition_mappings y MSmerge_contents; y con MSmerge_past_partition_mappings y MSmerge_tombstone para determinar los cambios que son relevantes para la particin que el suscriptor recibe.

2.

Se llama al procedimiento almacenado sp_MSgetmetadata para determinar si un cambio debe aplicarse como una insercin, una actualizacin o una eliminacin. En este momento se lleva a cabo la deteccin y resolucin de conflictos.

201

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Cmo evala la replicacin de mezcla las particiones en publicaciones filtradas Cuando se filtran una o varias tablas de una publicacin de mezcla mediante filtros con parmetros y filtros de combinacin, se crean particiones de las tablas publicadas. Una particin no es ms que un subconjunto de filas de una tabla. Cuando un suscriptor se sincroniza con un publicador, el publicador debe determinar qu filas pertenecen a la particin de un suscriptor basndose en los valores que proporciona el suscriptor para las funciones del sistema SUSER_SNAME() y/o HOST_NAME(). Este proceso de determinar la pertenencia a la particin de los cambios en el publicador para cada suscriptor que recibe un conjunto de datos filtrado se denomina evaluacin de particiones. En funcin de los datos de las tablas publicadas y de los valores elegidos al crear un filtro con parmetros y los filtros de combinacin relacionados, cada fila de una tabla publicada puede:

Pertenecer a una particin y replicarse en un nico suscriptor (el valor 3 en el parmetro sp_addmergearticle de @partition_options). Por ejemplo, en la base de datos AdventureWorks, podra filtrar la tabla Employee con la siguiente clusula de filtro: WHERE Employee.LoginID = SUSER_SNAME(). La fila que coincide con cada Id. de inicio de sesin se enva slo a un suscriptor. Pertenecer a una particin y replicarse en varios suscriptores (el valor 2 en @partition_options). Por ejemplo, en la base de datos AdventureWorks, podra filtrar la tabla Products con la siguiente clusula de filtro: WHERE Products.ProductLine = HOST_NAME(). El valor HOST_NAME() se reemplaza ya que el grupo de vendedores responsables de las ventas de bicicletas de montaa reciben todas las filas con el valor "M" en la columna ProductLine; cada fila con el valor "M" pertenece slo a una particin, pero se enva a ms de un suscriptor. Pertenecer a una particin y replicarse en varios suscriptores (el valor 0 1 en @partition_options). Por ejemplo, en la base de datos AdventureWorks, podra filtrar la tabla Products con la siguiente clusula de filtro: WHERE Products.ProductLine = HOST_NAME() or Products.ListPrice < 100. En este caso, el vendedor responsable de las ventas de bicicletas de montaa tambin vende productos de otras categoras siempre que el precio de venta sea menor de 100 dlares. Puesto que la clusula de filtro contiene OR, la fila puede pertenecer a ms de una particin.

Cmo se evalan las particiones La evaluacin de particiones se puede realizar de dos formas en la replicacin de mezcla, en funcin de si se utiliza la caracterstica de particiones precalculadas. Si se cumplen varios requisitos, de forma predeterminada se crean las nuevas publicaciones de mezcla con la opcin de particiones precalculadas habilitada, y las publicaciones existentes se actualizan automticamente para utilizar esta caracterstica.

Evaluacin de particiones con particiones precalculadas Con las particiones precalculadas, la pertenencia a particiones de los cambios en el publicador se calcula previamente y se mantiene en el momento de realizar cambios en las tablas publicadas. Como resultadoo, cuando un suscriptor se sincroniza con el publicador, puede empezar a descargar inmediatamente los cambios relacionados con su particin sin tener que pasar por el proceso de evaluacin de particiones. Esto puede proporcionar importantes mejoras de rendimiento cuando una publicacin tiene un nmero elevado de cambios, suscriptores o artculos. Las tablas del sistema que intervienen en la evaluacin de particiones precalculadas son:

MSmerge_partition_groups

MSmerge_current_partition_mappings MSmerge_past_partition_mappings

MSmerge_partition_groups contiene una fila por cada particin que se define en una publicacin. Las particiones se pueden:

Definir explcitamente utilizando sp_addmergepartition o la pgina Particiones de datos del cuadro de dilogo Propiedades de la publicacin. Crear automticamente cuando un suscriptor se sincroniza si el suscriptor requiere una particin que an no tenga una entrada en MSmerge_partition_groups.

Las otras dos tablas (MSmerge_current_partition_mappings y MSmerge_past_partition_mappings) se rellenan cuando se realizan cambios en tablas publicadas. Cada vez que se realiza un cambio en una tabla publicada, un desencadenador de mezcla se activa y registra metadatos:

MSmerge_current_partition_mappings contiene una fila por cada combinacin nica de filas en MSmerge_contents y MSmerge_partition_groups. Por ejemplo, si una fila en una tabla de usuario pertenece a dos particiones y la fila se actualiza, se inserta una fila en MSmerge_contents para reflejar la actualizacin y se insertan dos filas en MSmerge_current_partition_mappings para indicar que la fila actualizada pertenece a las dos particiones. MSmerge_partition_groups contiene una fila por cada fila que ya no pertenece a una particin determinada. Una fila sale de una particin si:

La fila se elimina. Si una fila se elimina de una tabla de usuario, se inserta una fila en MSmerge_tombstone y se insertan una o varias filas en MSmerge_past_partition_mappings.

202

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009 o
Ha cambiado el valor en una columna utilizada para filtrar. Por ejemplo, si un filtro con parmetros se basa en el estado donde una compaa tiene su sede y la compaa se muda a otro estado, la fila de la compaa (y las filas relacionadas en otras tablas) puede salir de la particin de datos de un vendedor y entrar en la particin de otro vendedor. Si una fila se actualiza porque ya no pertenece a una particin, se inserta o actualiza una fila en MSmerge_contents y se insertan una o varias filas en MSmerge_past_partition_mappings.

Nota: Si se utilizan particiones que no se superponen con una suscripcin por particin (el valor 3 para el parmetro sp_addmergearticle de @partition_options), no se utilizan las tablas del sistema MSmerge_current_partition_mappings y MSmerge_past_partition_mappings para realizar el seguimiento de las asignaciones de las particiones de las filas, porque cada fila pertenece slo a una particin y slo la puede cambiar un suscriptor.

Evaluacin de particiones con el proceso SetupBelongs Si no se utilizan particiones precalculadas, se utiliza un proceso denominado SetupBelongs. Durante la sincronizacin, la evaluacin de particiones se ejecuta por cada cambio realizado en una tabla filtrada en el publicador, hasta la ltima ejecucin del Agente de mezcla en un suscriptor especfico. Este proceso se repite en cada suscriptor que se sincroniza con el publicador. Para realizar la evaluacin de particiones en un suscriptor, el Agente de mezcla llama al procedimiento almacenado del sistema sp_MSsetupbelongs, que:

1. 2. 3.

Crea dos tablas temporales #notbelongs_<NmeroAleatorio>.

por

cada

artculo

filtrado:

#belongs_<NmeroAleatorio>

Utiliza el valor devuelto por las funciones SUSER_SNAME() y/o HOST_NAME() en el suscriptor para consultar una vista del sistema; la consulta se utiliza para determinar si una fila en MSmerge_contents o MSmerge_tombstone es relevante para la particin del suscriptor.

Si la fila no es relevante para el suscriptor (por ejemplo, una fila insertada en otra particin), los metadatos de esta particin no se almacenan en #belongs o #notbelongs. Si la fila es relevante, existen dos resultados posibles.

o o

Se agrega una fila a #belongs si la fila en MSmerge_contents es una insercin que pertenece a la particin o la fila en MSmerge_contents es una actualizacin que no cambia valores en ninguna columna utilizada para filtrar.

Se agrega una fila a #notbelongs si la fila en MSmerge_contents es una actualizacin que cambia un valor en una columna utilizada para filtrar (es decir, mueve la fila a una particin nueva) o la fila en MSmerge_tombstone representa la eliminacin de una fila en la particin.

Nota: Incluso si las particiones precalculadas estn habilitadas, se utiliza el proceso SetupBelongs la primera vez que se sincroniza una suscripcin si sta se crea despus de que otras suscripciones han empezado a recibir cambios.

Cmo la replicacin de mezcla detecta y resuelve conflictos La replicacin de mezcla permite que varios nodos realicen cambios de datos autnomos, por lo que se producen situaciones en las que un cambio realizado en un nodo puede entrar en conflicto con un cambio realizado en los mismos datos en otro nodo. En otros casos, el Agente de mezcla encuentra un error, como la infraccin de una restriccin, y no puede propagar a otro nodo un cambio realizado en un nodo determinado. En este tema se describen los tipos de conflictos, cmo detectar y resolver los conflictos, as como los factores que influyen en la deteccin y resolucin de los mismos. Detectar y resolver conflictos El Agente de mezcla detecta los conflictos mediante la columna linaje de la tabla del sistema MSmerge_contents; si se habilita el seguimiento por columna para un artculo, se utiliza tambin la columna COLV1. Estas columnas contienen metadatos relativos a cundo se inserta o actualiza una fila o una columna, y acerca de qu nodos de una topologa de replicacin de mezcla han realizado cambios en la fila o la columna. A medida que el Agente de mezcla enumera los cambios que deben aplicarse durante la sincronizacin, compara los metadatos de cada fila del publicador y del suscriptor. El Agente de mezcla utiliza estos metadatos para determinar si una fila o columna ha cambiado en ms de un nodo en la topologa, lo que indica un conflicto en potencia. Una vez detectado un conflicto, el Agente de mezcla inicia la resolucin de conflictos especificada para el artculo y la utiliza para determinar el ganador del conflicto. La fila ganadora se aplica en el publicador y el suscriptor, y los datos de la fila perdedora se escriben en una tabla de conflictos. El Agente de mezcla resuelve los conflictos de forma automtica e inmediata, a menos que se elija la resolucin interactiva de conflictos para el artculo. Si cambia manualmente la fila ganadora de un conflicto mediante el Visor de conflictos de replicacin de mezcla, el Agente de mezcla aplica la versin ganadora de la fila al servidor perdedor durante la siguiente sincronizacin. Registrar conflictos resueltos Una vez que el Agente de mezcla ha resuelto el conflicto conforme a la lgica de la resolucin de conflictos, registra los datos del mismo segn el tipo de conflicto:

203

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Para los conflictos de actualizacin e insercin, escribe la versin perdedora de la fila en la tabla de conflictos del artculo, que recibe un nombre con el formato conflict_<nombreDePublicacin>_<nombreDeArtculo>. La informacin general del conflicto, como el tipo de conflicto, se escribe en la tabla MSmerge_conflicts_info. Para los conflictos de eliminacin, escribe la versin perdedora de la fila en la tabla MSmerge_conflicts_info. Cuando una eliminacin pierde frente a una actualizacin, no existen datos para la fila perdedora (porque se trataba de una eliminacin), por lo que no se escribe nada en conflict_<nombreDePublicacin>_<nombreDeArtculo>.

Las tablas de conflictos de cada artculo se crean en la base de datos de publicaciones, en la base de datos de suscripciones o en ambas (opcin predeterminada), dependiendo del valor especificado para el parmetro @conflict_logging de sp_addmergepublication. Cada tabla de conflictos tiene la misma estructura que el artculo en el que se basa, con la adicin de la columna origin_datasource_id. El Agente de mezcla elimina los datos de la tabla de conflictos si superan el perodo de retencin de conflictos para la publicacin, el cual se especifica mediante el parmetro @conflict_retention de sp_addmergepublication (el valor predeterminado es 14 das). La replicacin proporciona el Visor de conflictos de replicacin y los procedimientos almacenados (sp_helpmergearticleconflicts, sp_helpmergeconflictrows y sp_helpmergedeleteconflictrows) para ver los datos de los conflictos.

Factores que influyen en la resolucin de conflictos Existen dos factores que influyen en la manera en que el Agente de mezcla resuelve un conflicto detectado:

El tipo de suscripcin: cliente o servidor (que la suscripcin sea una suscripcin de extraccin o de insercin no afecta a la solucin del conflicto). El tipo de seguimiento de conflictos utilizado: por filas, columnas o registros lgicos.

Tipos de suscripcin Al crear una suscripcin, adems de especificar si se trata de una suscripcin de extraccin o de insercin, es preciso indicar si es una suscripcin de servidor o de cliente; una vez creada la suscripcin, el tipo no se puede cambiar (en versiones anteriores de Microsoft SQL Server, las suscripciones de cliente y de servidor se denominaban suscripciones locales y globales, respectivamente). Una suscripcin a la que se ha asignado un valor de prioridad (de 0,00 a 99,99) se denomina suscripcin de servidor; las suscripciones que utilizan el valor de prioridad del publicador se denominan suscripciones de cliente. Adems, los suscriptores con suscripciones de servidor pueden republicar datos en otros suscriptores. En la siguiente tabla se resumen las principales diferencias y usos de cada tipo de suscriptor.

Tipo

Valor de prioridad

Uso

Servidor Asignado por el usuario

Cuando

se

desea

que

diferentes

suscriptores

tengan

diferentes

prioridades.

Cliente

0,00, pero los cambios de datos asumen el valor de Cuando se desea que todos los suscriptores tengan la misma prioridad prioridad del publicador despus de la sincronizacin y que el primer suscriptor se mezcle con el publicador para ganar el conflicto.

Si se cambia una fila en una suscripcin de cliente, no se asigna ninguna prioridad al cambio hasta que la suscripcin se sincroniza. Durante la sincronizacin, a los cambios del suscriptor se les asigna la prioridad del publicador y conservan dicha prioridad para sincronizaciones posteriores. En cierto sentido, el publicador asume la propiedad del cambio. Este comportamiento permite que el primer suscriptor se sincronice con el publicador para ganar conflictos posteriores con otros suscriptores para una fila o columna determinadas. Cuando se cambia una fila en una suscripcin de servidor, la prioridad de suscripcin se almacena en los metadatos del cambio. Este valor de prioridad viaja con la fila modificada cuando se mezcla con los cambios de otros suscriptores. Esto garantiza que un cambio realizado por una suscripcin de prioridad superior no pierda frente a un cambio posterior realizado por una suscripcin con prioridad inferior. Una suscripcin no puede tener un valor de prioridad explcito que sea superior al de su publicador. El publicador de nivel superior en una topologa de replicacin de mezcla tiene siempre un valor de prioridad explcito de 100,00. Todas las suscripciones a dicha publicacin deben tener un valor de prioridad inferior a ese valor. En una topologa de republicacin:

Si el suscriptor va a republicar datos, la suscripcin debe ser una suscripcin de servidor con un valor de prioridad inferior al del publicador que se encuentra por encima del suscriptor. Si el suscriptor no va a republicar datos (porque se encuentra en el nivel de hoja del rbol de republicacin), la suscripcin debe ser una suscripcin de cliente.

Notificacin diferida de conflictos La notificacin diferida de conflictos puede producirse con suscripciones de servidor que tienen distintas prioridades de conflicto. Imagnese una situacin en la que el intercambio de cambios no conflictivos entre el publicador y un suscriptor de prioridad inferior provocan cambios conflictivos cuando un suscriptor de prioridad superior se sincroniza con el publicador. 1. El publicador y un suscriptor de prioridad inferior, denominado LowPrioritySub, intercambian sin conflictos cambios en varias sincronizaciones.

204

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
2. Un suscriptor de prioridad superior, denominado HighPrioritySub, no se ha sincronizado con el publicador durante algn tiempo y ha realizado cambios en las mismas filas que el suscriptor LowPrioritySub. El suscriptor HighPrioritySub se sincroniza con el publicador y gana los conflictos entre sus cambios y los del suscriptor LowPrioritySub porque tiene una prioridad superior a la del suscriptor LowPrioritySub. El publicador contiene ahora los cambios realizados por el suscriptor HighPrioritySub. El suscriptor LowPrioritySub se mezcla entonces con el publicador y descarga un gran nmero de cambios debido a los conflictos con el suscriptor HighPrioritySub.

3.

4.

Esta situacin puede ser problemtica si el suscriptor de prioridad inferior ha realizado cambios en las mismas filas que han perdido ahora los conflictos. Esto puede dar lugar a la prdida de todos los cambios realizados por el suscriptor. Una posible solucin a este problema es asegurarse de que todos los suscriptores tienen la misma prioridad, a menos que la lgica de negocios dicte lo contrario.

Nivel de seguimiento El que un cambio de datos se convierta o no en un conflicto depende del tipo de seguimiento de conflictos establecido para el artculo: por filas, columnas o registros lgicos. Cuando se reconocen los conflictos por filas, los cambios que se realizan en las filas correspondientes se consideran un conflicto, se realicen o no los cambios en la misma columna. Por ejemplo, suponga que se realiza un cambio en la columna de direccin de una fila del publicador y que se realiza un segundo cambio en la columna de nmero de telfono de la fila correspondiente del suscriptor (en la misma tabla). Con el seguimiento de nivel de fila se detecta un conflicto porque los cambios se realizaron en la misma fila. Con el seguimiento por columnas no se detecta ningn conflicto porque los cambios se realizaron en columnas diferentes de la misma fila. Para el seguimiento por filas y el seguimiento por columnas, la resolucin del conflicto es la misma: la fila de datos completa se sobrescribe con los datos del ganador del conflicto (para el seguimiento por registros lgicos, la resolucin depende de la propiedad del artculo logical_record_level_conflict_resolution). La semntica de la aplicacin determina normalmente la opcin de seguimiento que se debe utilizar. Por ejemplo, si est actualizando datos de clientes que suelen incluirse al mismo tiempo, como una direccin y un nmero de telfono, es recomendable elegir el seguimiento por filas. Si se eligiera el seguimiento por columnas en esta situacin, los cambios realizados en la direccin del cliente en una ubicacin y en el nmero de telfono del cliente en otra ubicacin no se detectaran como un conflicto: los datos se mezclaran en la sincronizacin y el error pasara desapercibido. En otras situaciones, la actualizacin de columnas individuales en sitios diferentes puede ser la opcin ms lgica. Por ejemplo, dos sitios pueden tener acceso a diferentes tipos de informacin estadstica sobre un cliente, como el nivel de ingresos y la cantidad total en dlares de las compras realizadas con la tarjeta de crdito. Si selecciona el seguimiento por columnas se asegurar de que ambos sitios pueden incluir datos estadsticos para diferentes columnas sin generar conflictos innecesarios. Nota: Si la aplicacin no requiere el seguimiento por columnas, es recomendable que utilice el seguimiento por filas (la opcin predeterminada) porque normalmente da lugar a un mejor rendimiento de sincronizacin. Si se utiliza el seguimiento por filas, la tabla base puede incluir 1.024 columnas como mximo, pero es necesario filtrar las columnas desde el artculo de forma que slo se publiquen 246 columnas como mximo. Si se utiliza el seguimiento por columnas, la tabla base puede incluir 246 columnas como mximo.

Tipos de conflictos Aunque la mayora de los conflictos estn relacionados con actualizaciones (una actualizacin en un nodo entra en conflicto con una actualizacin o eliminacin en otro nodo), existen otros tipos de conflictos. Todos los tipos de conflictos que se analizan en esta seccin pueden producirse durante la fase de actualizacin o descarga del procesamiento de mezcla. El procesamiento de carga es la primera reconciliacin de los cambios realizados en una sesin de mezcla determinada, y es la fase durante la cual el Agente de mezcla replica los cambios del suscriptor en el publicador. Los conflictos detectados durante este procesamiento se denominan conflictos de carga. El procesamiento de descarga implica mover cambios del publicador al suscriptor, y se produce despus del procesamiento de carga. Los conflictos que se producen durante esta fase del procesamiento se denominan conflictos de descarga.

Conflictos de actualizacin-actualizacin El Agente de mezcla detecta conflictos de actualizacin-actualizacin cuando una actualizacin en una fila (o columna, o registro lgico) de un nodo entra en conflicto con otra actualizacin en la misma fila de otro nodo. El comportamiento de la resolucin predeterminada en este caso es enviar la versin ganadora de la fila al nodo perdedor y registrar la versin de la fila perdedora en la tabla de conflictos del artculo.

Conflictos de eliminacin-actualizacin El Agente de mezcla detecta los conflictos de eliminacin-actualizacin cuando una actualizacin de los datos de un nodo entra en conflicto con una eliminacin en otro. En este caso, el Agente de mezcla actualiza una fila; no obstante, cuando el Agente de mezcla busca esa fila en el destino, no la encuentra porque ha sido eliminada. Si el ganador es el nodo que actualiz la fila, la eliminacin en el nodo perdedor se descarta y el Agente de mezcla enva la fila recin actualizada al perdedor del conflicto. El Agente de mezcla registra informacin acerca de la versin perdedora de la fila en la tabla MSmerge_conflicts_info.

Conflictos de cambio con error El Agente de mezcla produce estos conflictos cuando no puede aplicar un cambio determinado. Esto normalmente sucede debido a una diferencia en las definiciones de restricciones entre el publicador y el suscriptor, y al uso de la propiedad NOT FOR REPLICATION (NFR) en la restriccin. Los ejemplos incluyen:

Un conflicto de clave externa en el suscriptor, que puede producirse cuando la restriccin del suscriptor no est marcada como NFR.

205

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Diferencias en las restricciones entre el publicador y los suscriptores, y las mismas no estn marcadas como NFR. Falta de disponibilidad de objetos dependientes en el suscriptor. Por ejemplo, si publica una vista pero no la tabla de la que depende, se producir un error al intentar realizar una insercin en el suscriptor a travs de dicha vista. La lgica del filtro de combinacin de una publicacin que no se corresponde con las restricciones de clave principal y clave externa. Los conflictos pueden producirse cuando el motor relacional de SQL Server intenta respetar una restriccin pero el Agente de mezcla est respetando la definicin del filtro de combinacin entre los artculos. El Agente de mezcla no puede aplicar el cambio en el nodo de destino debido a las restricciones de nivel de tabla, lo que da lugar a un conflicto. Pueden surgir conflictos debido a infracciones de ndice nico o de restriccin nica si se definen columnas de identidad para el artculo y no se utiliza la administracin automatizada de identidades. Esto puede representar un problema si dos suscriptores utilizaran el mismo valor de identidad para una fila recin insertada. Conflictos debidos a que la lgica del desencadenador impide que el Agente de mezcla inserte una fila en la tabla de destino. Piense en un desencadenador de actualizacin definido en el suscriptor; el desencadenador no est marcado como NFR e incluye la instruccin ROLLBACK en su lgica. Si se produce un error, el desencadenador emite una instruccin ROLLBACK para revertir la transaccin, lo que provoca que el Agente de mezcla detecte un conflicto de cambio con error.

Cmo se administra la caducidad de la suscripcin y la limpieza de los metadatos en la replicacin de mezcla

Una suscripcin a una publicacin de mezcla caduca si no se ha sincronizado con el publicador dentro del perodo de retencin de la publicacin. El perodo de retencin predeterminado es de 14 das; se establece mediante los parmetros @retention y @retention_period_unit de sp_addmergepublication (Transact-SQL). El parmetro @retention_period_unit requiere que el nivel de compatibilidad de la publicacin sea 90RTM o superior. Para los suscriptores que ejecutan versiones anteriores de Microsoft SQL Server, @retention_period_unit se establece siempre en 'da'. Cuando una suscripcin caduca, debe reinicializarse, ya que los metadatos de la misma se quitan. El trabajo de limpieza de suscripciones caducadas que se ejecuta en el publicador elimina las suscripciones que no se han reinicializado. Este trabajo se ejecuta diariamente de forma predeterminada; quita todas las suscripciones de insercin que no se han sincronizado durante el doble del perodo de retencin de la publicacin. Por ejemplo:

Si una publicacin tiene un perodo de retencin de 14 das, una suscripcin puede caducar si no se ha sincronizado en 14 das. Si el publicador est ejecutando SQL Server 2005 o una versin posterior y el agente de la suscripcin es de SQL Server 2005 o una versin posterior, una suscripcin caduca nicamente si se han producido cambios en los datos de la particin de esa suscripcin. Por ejemplo, imagine que un suscriptor recibe datos nicamente de clientes de Alemania. Si el perodo de retencin se establece en 14 das, la suscripcin caducar en el da 14 slo si se han producido cambios en los datos del cliente alemn en los ltimos 14 das. Entre los das 14 a 27 tras la ltima sincronizacin, la suscripcin se puede reinicializar. 28 das despus de la ltima sincronizacin, la suscripcin es eliminada por el trabajo de limpieza de suscripciones caducadas. Si una suscripcin de insercin caduca, se puede quitar por completo, a diferencia de lo que ocurre con las suscripciones de extraccin. Las suscripciones de extraccin deben limpiarse en el suscriptor.

Consideraciones para configurar el perodo de retencin de la publicacin Tenga en cuenta lo siguiente al configurar el perodo de retencin para las publicaciones de mezcla:

La limpieza de los metadatos de replicacin de mezcla depende del perodo de retencin de la publicacin:

La replicacin no puede limpiar metadatos en las bases de datos de suscripciones y publicaciones hasta que se haya alcanzado el perodo de retencin. Tenga cuidado al especificar un valor elevado para el perodo de retencin, ya que puede afectar negativamente al rendimiento de la replicacin. Se recomienda utilizar un valor bajo si puede prever con exactitud que todos los suscriptores se sincronizarn con regularidad dentro del perodo establecido.

Es posible especificar que las suscripciones no caduquen nunca, (valor de 0 para @retention), pero se recomienda encarecidamente no utilizar ese valor, ya que los metadatos no se podran limpiar.

El perodo de retencin de cualquier republicador debe establecerse en un valor igual o menor que el perodo de retencin establecido en el publicador original. Si utiliza asociados de sincronizacin alternativos, debe usar los mismos valores de retencin de la publicacin para los publicadores y para todos los asociados de sincronizacin alternativos. El uso de valores distintos podra conducir a la no convergencia. Si necesita cambiar el valor de retencin de la publicacin, vuelva a inicializar el suscriptor a fin de evitar la no convergencia de los datos. Si despus de realizar una limpieza aumenta el perodo de retencin y una suscripcin intenta mezclarse con el publicador (que ya ha eliminado los metadatos), la suscripcin no caducar debido al aumento del valor de retencin. No obstante, el publicador no tendr suficientes metadatos para descargar los cambios al suscriptor, lo que dara lugar a una no convergencia.

Limpieza de metadatos

206

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
La limpieza de los metadatos en la replicacin de mezcla se lleva a cabo mediante el procedimiento almacenado sp_mergemetadataretentioncleanup (Transact-SQL); el momento de la limpieza se basa en el perodo de retencin de la publicacin. Cada vez que el Agente de mezcla se ejecuta para una suscripcin, llama al procedimiento de limpieza. El procedimiento quita los metadatos que sean ms antiguos que el perodo de retencin de la publicacin de las siguientes tablas del sistema:

MSmerge_contents (Transact-SQL) MSmerge_tombstone (Transact-SQL)

MSmerge_genhistory (Transact-SQL) MSmerge_current_partition_mappings

MSmerge_past_partition_mappings (Transact-SQL) MSmerge_generation_partition_mappings (Transact-SQL)

Estas tablas las utilizan todas las publicaciones de una base de datos de publicaciones: si existe ms de una publicacin, se utiliza siempre el perodo de retencin ms largo para determinar cundo pueden quitarse los metadatos

Replicacin de instantneas.

La rplica de instantneas distribuye los datos exactamente como aparecen en un momento especfico en el tiempo y no supervisa las actualizaciones de los datos. Cuando se produce la sincronizacin, se genera la instantnea completa y se enva a los suscriptores. Nota: La rplica de instantneas se puede utilizar por s sola, pero el proceso de instantneas (que crea una copia de todos los objetos y datos especificados por una publicacin) se utiliza habitualmente para proporcionar el conjunto inicial de datos y objetos de base de datos para las publicaciones transaccionales y de mezcla. Utilizar la rplica de instantneas por s sola es lo ms adecuado si se cumplen una o varias de las siguientes circunstancias:

Los datos cambian con poca frecuencia Es aceptable disponer de copias de datos que estn anticuadas con respecto al publicador durante un perodo de tiempo.

Se replican pequeas cantidades de datos. Se produce un gran nmero de cambios a lo largo de un corto perodo de tiempo.

La rplica de instantneas es lo ms adecuado cuando los cambios en los datos son sustanciales pero poco frecuentes. Por ejemplo, si una organizacin de ventas mantiene una lista de precios de productos y todos los precios se actualizan al mismo tiempo una o dos veces al ao, es recomendable replicar la instantnea completa de los datos una vez que han cambiado. Para determinados tipos de datos pueden ser adecuadas tambin instantneas ms frecuentes. Por ejemplo, si una tabla relativamente pequea se actualiza en el publicador durante el da pero es aceptable cierta latencia, los cambios se pueden entregar por la noche como una instantnea. La rplica de instantneas tiene una carga continua ms reducida en el publicador que la rplica transaccional, ya que no se realiza ningn seguimiento de los cambios incrementales. No obstante, si el conjunto de datos que se est replicando es muy grande, ser necesaria una cantidad importante de recursos para generar y aplicar la instantnea. Tenga en cuenta el tamao del conjunto de datos entero y la frecuencia de los cambios en los datos al evaluar si utiliza o no la rplica de instantneas.

De forma predeterminada, los tres tipos de replicacin utilizan una instantnea para inicializar suscriptores. El Agente de instantneas de SQL Server siempre genera los archivos de instantneas, pero el agente que entrega los archivos vara segn el tipo de replicacin que se utilice. La replicacin de instantneas y la replicacin transaccional utilizan el Agente de distribucin para entregar los archivos, mientras que la replicacin de mezcla utiliza el Agente de mezcla de SQL Server. El Agente de instantneas se ejecuta en el distribuidor. El Agente de distribucin y el Agente de mezcla se ejecutan en el distribuidor para las suscripciones de insercin o en los suscriptores para las suscripciones de extraccin. Las instantneas se pueden generar y aplicar inmediatamente tras la creacin de la suscripcin o de acuerdo con una programacin establecida en el momento de crear la publicacin. El Agente de instantneas prepara archivos de instantneas que contienen el esquema y los datos de las tablas y objetos de base de datos publicados, almacena los archivos en la carpeta de instantneas del publicador y registra la informacin de seguimiento en la base de datos de distribucin del distribuidor. Al configurar un distribuidor se especifica la carpeta de instantneas predeterminada, pero puede especificar una ubicacin alternativa para una publicacin en lugar de, o adems de, la predeterminada. Nota: Adems del proceso de instantneas estndar descrito en este tema, se utiliza un proceso de dos partes para las publicaciones de mezcla con filtros con parmetros.

207

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
En la ilustracin siguiente se muestran los componentes principales de la replicacin de instantneas.

Agente de instantneas En la replicacin de mezcla se genera una instantnea cada vez que se ejecuta el Agente de instantneas. En la replicacin transaccional, la generacin de instantneas depende de la configuracin de la propiedad immediate_sync de la publicacin. Si la propiedad est establecida en TRUE (el valor predeterminado con el Asistente para nueva publicacin), se genera una instantnea cada vez que se ejecuta el Agente de instantneas. sta se puede aplicar al suscriptor en cualquier momento. Si est establecida en FALSE (el valor predeterminado con sp_addpublication), la instantnea slo se genera si se ha agregado una nueva suscripcin desde la ltima vez que se ejecut el Agente de instantneas; los suscriptores deben esperar a que el Agente de instantneas termine antes de poder sincronizarse. El Agente de instantneas ejecuta los pasos siguientes: 1. Establece una conexin del distribuidor al publicador y, a continuacin, si fuera necesario, adopta bloqueos en las tablas publicadas:

o o o

Para las publicaciones de mezcla, el Agente de instantneas no adopta ningn bloqueo.

Para las publicaciones transaccionales, el Agente de instantneas adopta bloqueos de manera predeterminada nicamente durante la fase inicial de la generacin de instantneas.

Para las publicaciones de instantneas, adopta bloqueos durante todo el proceso de generacin de instantneas.

208

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
2. Escribe una copia del esquema de la tabla para cada artculo en un archivo .sch. Si se publican otros objetos de base de datos, como ndices, restricciones, procedimientos almacenados, vistas, funciones definidas por el usuario, etc., se generan archivos de scripts adicionales. Copia los datos de la tabla publicada en el publicador y escribe los datos en la carpeta de instantneas. La instantnea se genera como un conjunto de archivos de programa de copia masiva (BCP).

3.

4.

En las publicaciones de instantneas y transaccionales, el Agente de instantneas anexa filas a las tablas MSrepl_commands y MSrepl_transactions de la base de datos de distribucin. Las entradas de la tabla MSrepl_commands son comandos que indican la ubicacin de los archivos .sch y .bcp, de cualquier otro archivo de instantneas y de las referencias a cualquier script anterior o posterior a la instantnea. Las entradas de la tabla MSrepl_transactions son comandos importantes para sincronizar el suscriptor. En las publicaciones de mezcla, el Agente de instantneas realiza pasos adicionales. Libera los bloqueos de las tablas publicadas.

5.

Durante la generacin de instantneas, no es posible realizar cambios en el esquema de las tablas publicadas. Despus de generar los archivos de instantneas, podr verlos en la carpeta de instantneas mediante el Explorador de Windows.

Informacin general sobre los agentes de replicacin

La replicacin utiliza varios programas independientes, llamados agentes, para realizar las tareas asociadas con el seguimiento de los cambios y la distribucin de los datos. De forma predeterminada, los agentes de replicacin se ejecutan como trabajos programados en el Agente SQL Server y es necesario que se est ejecutando el Agente SQL Server para que puedan ejecutarse los trabajos. Los agentes de replicacin tambin se pueden ejecutar desde la lnea de comandos y en aplicaciones que utilizan Objetos de administracin de replicacin (RMO). Los agentes de replicacin se pueden administrar desde el Monitor de replicacin de SQL Server y SQL Server Management Studio.

Agente SQL Server

El Agente SQL Server aloja y programa los agentes utilizados en la replicacin, y proporciona una manera sencilla de ejecutar los agentes de replicacin. El Agente SQL Server tambin controla y supervisa las operaciones fuera de la replicacin. Importante: De manera predeterminada, el servicio del Agente SQL Server est deshabilitado cuando se instala SQL Server, a menos que se elija explcitamente iniciar el servicio automticamente durante la instalacin. Agente de instantneas Por lo general, el Agente de instantneas se utiliza con todos los tipos de replicacin. Prepara esquemas y archivos de datos iniciales de tablas publicadas y otros objetos, almacena los archivos de instantneas y registra la informacin acerca del estado de sincronizacin en la base de datos de distribucin. El Agente de instantneas se ejecuta en el distribuidor.

Agente de registro del LOG El Agente de registro del LOG se utiliza en la replicacin transaccional. Mueve las transacciones marcadas para replicacin desde el registro de transacciones del publicador a la base de datos de distribucin. Cada base de datos publicada con la replicacin transaccional tiene su propio Agente de registro del LOG, que se ejecuta en el distribuidor y se conecta al publicador (el distribuidor puede estar en el mismo equipo que el publicador).

Agente de distribucin El Agente de distribucin se utiliza en la replicacin de instantneas y transaccional. Aplica la instantnea inicial al suscriptor y mueve las transacciones contenidas en la base de datos de distribucin a los suscriptores. El Agente de distribucin se ejecuta en el distribuidor, para las suscripciones de insercin, o en el suscriptor, para las suscripciones de extraccin.

Agente de mezcla El Agente de mezcla se utiliza con la replicacin de mezcla. Aplica la instantnea inicial al suscriptor, y transfiere y reconcilia los cambios incrementales de datos que se producen. Cada suscripcin de mezcla tiene su propio Agente de mezcla, que se conecta con el publicador y con el suscriptor, y los actualiza. El Agente de mezcla se ejecuta en el distribuidor, para las suscripciones de insercin, o en el suscriptor, para las suscripciones de extraccin. De forma predeterminada, el Agente de mezcla carga los cambios del suscriptor al publicador y, a continuacin, descarga los cambios del publicador al suscriptor. Agente de lectura de cola El Agente de lectura de cola se utiliza con la replicacin transaccional y la opcin de actualizacin en cola. El agente se ejecuta en el distribuidor y transfiere los cambios realizados en el suscriptor de vuelta al publicador. A diferencia del Agente de distribucin y del Agente de mezcla, slo existe una instancia del Agente de lectura de cola para todos los publicadores y las publicaciones de una determinada base de datos. Trabajos de mantenimiento de la replicacin

209

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
La replicacin incluye varios trabajos de mantenimiento que realizan operaciones de mantenimiento programadas y a peticin.

13 Disear una solucin de alta disponibilidad basada en log shipping. Considerar : controlar a nivel de instancia de objetos, cambiar roles, reportes de segunda instancia, monitorear servidor, reinicializar, chequeo de consistencia en una instancia secundaria NOTA: log shipping, puede traducirse como trasvase de registros. El trasvase de registros incluye dos copias de una sola base de datos que suelen residir en diferentes equipos. En cada momento, slo una copia de la base de datos est disponible para los clientes. Esta copia se conoce como la base de datos principal. Las actualizaciones realizadas por los clientes en la base de datos principal se propagan mediante el trasvase de registros a la otra copia de la base de datos, conocida como la base de datos secundaria. El trasvase de registros incluye la aplicacin a la base de datos secundaria del registro de transacciones con todas las inserciones, actualizaciones o eliminaciones efectuadas en la base de datos principal. El trasvase de registros se puede usar conjuntamente con la replicacin, con el siguiente comportamiento:

La replicacin no contina despus de producirse una conmutacin por error de trasvase de registros. Si se produce una conmutacin por error, los agentes de replicacin no se conectan a la base de datos secundaria, de modo que no se replican transacciones en los suscriptores. Si se produce una conmutacin por recuperacin en la base de datos principal, se reanuda la replicacin. Todas las transacciones que el trasvase de registros vuelve a copiar desde la base de datos secundaria a la base de datos principal se replican en los suscriptores. Si la base de datos principal se pierde de forma permanente, se puede cambiar el nombre de la base de datos secundaria de manera que se pueda continuar con la replicacin. En el resto de este tema, se describen los requisitos y procedimientos necesarios para abordar este caso. El ejemplo presentado corresponde a la base de datos de publicaciones, que es la base de datos a la que se aplica el trasvase de registros con mayor frecuencia, aunque tambin se puede aplicar un proceso similar a las bases de datos de suscripciones y de distribucin.

Nota: Se recomienda utilizar la creacin de reflejo de la base de datos, en lugar del trasvase de registros, para proporcionar disponibilidad a la base de datos de publicaciones.

Requisitos y procedimientos para replicar desde la base de datos secundaria si se pierde la base de datos principal Se deben tener en cuenta los siguientes requisitos y consideraciones:

Si la base de datos principal contiene ms de una base de datos de publicaciones, trasvase los registros de todas las bases de datos de publicaciones a la misma base de datos secundaria. La ruta de instalacin de la instancia del servidor secundario debe ser la misma que la del primario. Las ubicaciones de las bases de datos de usuario en el servidor secundario deben ser las mismas que las del primario. Haga una copia de seguridad de la clave maestra de servicio en la base de datos principal. Esta clave se restaurar en la base de datos secundaria. El trasvase de registros no garantiza que no se produzca una prdida de datos. Un error en la base de datos principal puede originar la prdida de los datos que an no tienen una copia de seguridad o la prdida de copias de seguridad durante la ejecucin del error.

Trasvase de registros con la replicacin transaccional En la replicacin transaccional, el comportamiento del trasvase de registros depende de la opcin sync with backup. Esta opcin se puede establecer en la base de datos de publicaciones y en la base de datos de distribucin. En lo que respecta al trasvase de registros para el publicador, slo tiene relevancia la configuracin de la base de datos de publicaciones. La configuracin de esta opcin en la base de datos de publicaciones garantiza que las transacciones no se entreguen a la base de datos de distribucin hasta que se haya hecho una copia de seguridad de ellas en la base de datos de publicaciones. La ltima copia de seguridad de la base de datos de publicaciones se puede restaurar posteriormente en el servidor secundario sin que exista ninguna posibilidad de que la base de datos de distribucin contenga transacciones que no existan en la base de datos de publicaciones restaurada. Esta opcin garantiza que si el publicador genera un error en el servidor secundario, se mantendr la coherencia entre el publicador, el distribuidor y los suscriptores. La latencia y el rendimiento se vern afectados porque no ser posible entregar transacciones a la base de datos de distribucin hasta que se haya hecho una copia de seguridad de ellas en el publicador. Si la aplicacin puede tolerar esta latencia, se recomienda establecer esta opcin en la base de datos de publicaciones. Si no se establece la opcin sync with backup, los suscriptores podran recibir cambios que ya no estn incluidos en la base de datos recuperada en el servidor secundario. Para configurar la replicacin transaccional y el trasvase de registros con la opcin sync with backup:

1.
2.

Si la opcin sync with backup no est establecida en la base de datos de publicaciones, ejecute sp_replicationdboption '<publicationdatabasename>', 'sync with backup', 'true'. Configure el trasvase de registros para la base de datos de publicaciones.

210

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
3. Si se produce un error en el publicador, restaure el ltimo registro de la base de datos en el servidor secundario mediante la opcin KEEP_REPLICATION de RESTORE LOG. De esta manera se conservar toda la configuracin de la replicacin correspondiente a la base de datos.

4.

Restaure la base de datos msdb y las bases de datos master del servidor principal al secundario. Si la base de datos principal tambin era un distribuidor, restaure la base de datos de distribucin del servidor principal al secundario. Las bases de datos deben ser coherentes con la base de datos de publicaciones del servidor principal en lo que respecta a las opciones de configuracin de la replicacin. En el servidor secundario, cambie el nombre del equipo y, a continuacin, cambie el nombre de la instancia de Microsoft SQL Server de manera que coincida con el nombre del servidor principal. En el servidor secundario, restaure la clave maestra de servicio que se copi desde el servidor principal..

5.

6.

Para configurar la replicacin transaccional y el trasvase de registros sin la opcin sync with backup 1. 2. Configure el trasvase de registros para la base de datos de publicaciones. Si se produce un error en el publicador, restaure el ltimo registro de la base de datos en el servidor secundario mediante la opcin KEEP_REPLICATION de RESTORE LOG. De esta manera se conservar toda la configuracin de la replicacin correspondiente a la base de datos.

3.

Restaure la base de datos msdb y las bases de datos master del servidor principal al secundario. Si la base de datos principal tambin era un distribuidor, restaure la base de datos de distribucin del servidor principal al secundario. Las bases de datos deben ser coherentes con la base de datos de publicaciones del servidor principal en lo que respecta a las opciones de configuracin de la replicacin. En el servidor secundario, cambie el nombre del equipo y, a continuacin, cambie el nombre de la instancia de SQL Server de manera que coincida con el nombre del servidor principal. Es probable que reciba un mensaje de error del Agente de registro del LOG comunicndole que la base de datos de publicaciones y la base de datos de distribucin no estn sincronizadas. En el servidor secundario, restaure la clave maestra de servicio que se copi desde el servidor principal.

4.

5.

6.
7.

Ejecute sp_replrestart. Este procedimiento almacenado se puede utilizar para forzar que el Agente de registro del LOG omita todas las transacciones replicadas anteriormente en el registro de la base de datos de publicaciones. Las transacciones aplicadas tras la finalizacin del procedimiento almacenado se procesan mediante el Agente de registro del LOG. Reinicie el Agente de registro del LOG despus de que el procedimiento almacenado se haya ejecutado correctamente.

8.

Las transacciones que ya se distribuyeron al suscriptor podran aplicarse al publicador. Para asegurarse de que el Agente de distribucin no genere un error cuando intente volver a aplicar estas transacciones en el suscriptor, especifique el perfil de agente llamado Continuar despus de errores de coherencia de datos.

Trasvase de registros con la replicacin de mezcla Realice los pasos del siguiente procedimiento para configurar la replicacin de mezcla y el trasvase de registros. Para configurar la replicacin de mezcla y el trasvase de registros 1. 2. Configure el trasvase de registros para la base de datos de publicaciones.. Si se produce un error en el publicador, restaure el ltimo registro de la base de datos en el servidor secundario mediante la opcin KEEP_REPLICATION de RESTORE LOG. De esta manera se conservar toda la configuracin de la replicacin correspondiente a la base de datos.

3.

Restaure la base de datos msdb y las bases de datos master del servidor principal al secundario. Si la base de datos principal tambin era un distribuidor, restaure la base de datos de distribucin del servidor principal al secundario. Las bases de datos deben ser coherentes con la base de datos de publicaciones del servidor principal en lo que respecta a las opciones de configuracin de la replicacin. En el servidor secundario, cambie el nombre del equipo y, a continuacin, cambie el nombre de la instancia de SQL Server de manera que coincida con el nombre del servidor principal. En el servidor secundario, restaure la clave maestra de servicio que se copi desde el servidor principal. Sincronice la base de datos de publicaciones con una o ms bases de datos de suscripciones. Esto permite cargar los cambios realizados anteriormente en la base de datos de publicaciones, pero que no se muestran en la copia de seguridad restaurada. Los datos que se pueden cargar dependen de la manera en que se filtre una publicacin:

4.

5. 6.

o o

Si la publicacin no est filtrada, se podr actualizar la base de datos de publicaciones sincronizndola con el suscriptor ms actualizado.

Si la publicacin est filtrada, probablemente no se pueda actualizar la base de datos de publicaciones. Considere una tabla dividida de forma que cada suscripcin reciba nicamente datos de clientes de una regin: norte, este, sur y oeste. Si hay al menos un suscriptor para cada particin de datos, al sincronizar cada particin con un

211

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
suscriptor se debera actualizar la base de datos de publicaciones. Sin embargo, si los datos de la particin norte, por ejemplo, no se replicaron en ningn suscriptor, no se podrn actualizar estos datos en el publicador. En este caso, se recomienda reinicializar todas las suscripciones de manera que los datos del publicador y de los suscriptores converjan. Si se sincroniza con un suscriptor que ejecute una versin de SQL Server anterior a SQL Server 2005, la suscripcin no puede ser annima, sino que debe ser una suscripcin de cliente o de servidor (llamadas suscripciones locales y suscripciones globales en versiones anteriores).

Implementar el trasvase de registros

El trasvase de registros puede habilitarse utilizando SQL Server Management Studio o ejecutando manualmente una serie de procedimientos almacenados. Pasos bsicos Para habilitar el trasvase de registros es necesario realizar los siguientes pasos bsicos: 1. Elegir el servidor principal, el servidor secundario y un servidor de supervisin opcional. Nota: El formato de almacenamiento en disco de SQL Server es el mismo en los entornos de 64 bits y 32 bits. Por lo tanto, una configuracin de trasvase de registros puede combinar instancias del servidor que se ejecuten en entornos de 32 bits e instancias del servidor que se ejecuten en entornos de 64 bits. 2. SQL Server 2008 Enterprise y versiones posteriores admiten la compresin de copia de seguridad. Al crear una configuracin de trasvase de registros, puede controlar el comportamiento de la compresin de copia de seguridad de las copias de seguridad de registros. Crear un recurso compartido de archivos para las copias de seguridad del registro de transacciones, preferiblemente en un servidor tolerante a errores que no forme parte de la configuracin del trasvase de registros. Para maximizar la disponibilidad del servidor principal, Microsoft recomienda ubicar el recurso compartido de copia de seguridad en un equipo host separado. Elegir una programacin de copia de seguridad para la base de datos principal. Crear una carpeta para cada servidor secundario en la que se copiarn los archivos de la copia de seguridad del registro de transacciones. Estas carpetas suelen residir en los servidores secundarios. Configurar una o ms bases de datos secundarias. Opcionalmente, configurar un servidor de supervisin.

3.

4. 5.

6. 7.

Al habilitar un servidor secundario para el trasvase de registros, puede elegir las siguientes opciones en el cuadro de dilogo Configuracin de base de datos secundaria del trasvase de registros de Management Studio para configurar la base de datos secundaria:

Crear automticamente una copia de seguridad en la base de datos principal y restaurarla en el servidor secundario y, si es necesario, crear una base de datos secundaria. Restaurar una copia de seguridad existente de la base de datos principal en el servidor secundario y, si es necesario, crear la base de datos secundaria.

Tambin puede inicializar la base de datos secundaria restaurando manualmente una copia de seguridad de la base de datos. Importante: La herramienta de trasvase de registros de Management Studio est diseada slo para hacer frente a casos simples de copias de seguridad y restauracin. Para los casos ms complejos, como las bases de datos que utilizan muchos archivos u opciones que no son las predeterminadas, debe realizar una copia de seguridad y restaurar toda la base de datos manualmente. Por lo general, utilice la copia de seguridad y restauracin manuales para los casos que requieran un comando BACKUP o RESTORE complejo. Una vez que la base de datos secundaria se ha restaurado, utilice la herramienta de trasvase de registros de Management Studio para finalizar la configuracin del trasvase de registros.

Cuando habilita el servidor principal para el trasvase de registros, puede especificar la frecuencia con la que se crean las copias de seguridad de registros de transacciones en el servidor principal. Si el volumen de transacciones es alto, puede ser til hacer una copia de seguridad frecuente del registro de transacciones para minimizar la prdida potencial de datos.

Requisitos

Para realizar el trasvase de registros es preciso que se cumplan los siguientes requisitos:

212

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Debe estar instalado SQL Server 2005 Standard, SQL Server 2005 Workgroup, SQL Server 2005 Enterprise Edition o una versin posterior en todas las instancias de servidor implicadas en el trasvase de registros. Los servidores implicados en el trasvase de registros deben tener la misma configuracin de distincin entre maysculas y minsculas. Las bases de datos de la configuracin del trasvase de registros deben utilizar el modelo de recuperacin completa o el modelo de recuperacin optimizado para cargas masivas de registros.

Usar el trasvase de registros con otras caractersticas o componentes

El trasvase de registros se puede utilizar con las siguientes caractersticas o componentes de SQL Server:

Creacin de reflejo de la base de datos Si el trasvase de registros se utiliza conjuntamente con el reflejo de base de datos, la base de datos principal de la configuracin del trasvase de registros debe ser la misma base de datos que la base de datos de la entidad de seguridad del reflejo de base de datos. Replicacin

Ver el estado del trasvase de registros de transacciones (SQL Server Management Studio) Para cualquier instancia de servidor implicada en el trasvase de registros (ya sea un servidor de supervisin, principal o secundario), SQL Server Management Studio ofrece un informe acerca de la actividad del trasvase de registros de la instancia de servidor actual.

Permisos Para habilitar el trasvase de registros, el usuario debe ser un sysadmin en cada instancia del servidor. Los directorios de copias de seguridad y restauracin de la configuracin del trasvase de registros deben cumplir los siguientes requisitos.

Para el trabajo de copia de seguridad, se requieren permisos de lectura/escritura en el directorio de copia de seguridad para los siguientes elementos:

o o

La cuenta de servicio de SQL Server en la instancia del servidor principal.

La cuenta de proxy del trabajo de copia de seguridad. De forma predeterminada, sta es la cuenta del agente de SQL Server en la instancia del servidor principal.

Para el trabajo de copia, la cuenta de proxy del trabajo de copia requiere permisos de lectura para el directorio de copia de seguridad y permisos de escritura para el directorio de copia. De forma predeterminada, sta es la cuenta del agente de SQL Server en la instancia del servidor secundario. Los siguientes elementos requieren permisos de lectura/escritura en el directorio de copia para el trabajo de restauracin:

o o

La cuenta de servicio de SQL Server en la instancia del servidor secundario.

La cuenta de proxy del trabajo de restauracin. De forma predeterminada, sta es la cuenta del agente de SQL Server en la instancia del servidor secundario.

14 Seleccionar tecnologa de alta disponibilidad Base de Datos espejos, log shipping, replicacin

basadas en requerimientos del negocio. Considerar : failover clustering,

En esta seccin se presentan varias soluciones de alta disponibilidad de SQL Server que mejoran la disponibilidad de los servidores o las bases de datos. Una solucin de alta disponibilidad enmascara los efectos de un error de hardware o software y mantiene la disponibilidad de las aplicaciones a fin de minimizar el tiempo de inactividad que perciben los usuarios. SQL Server ofrece varias opciones para crear una alta disponibilidad para un servidor o una base de datos. Entre las opciones de alta disponibilidad figuran las siguientes:

Agrupacin en clsteres de conmutacin por error: Una agrupacin en clsteres de conmutacin proporciona alta disponibilidad a una instancia completa de SQL Server. Un clster de conmutacin por error es una combinacin de uno o varios nodos, o servidores, con dos o ms discos compartidos. Las aplicaciones se instalan cada una en un grupo de clsteres de Servicios de Cluster Server de Microsoft (MSCS), conocido como grupo de recursos. En todo momento, cada grupo de recursos es propiedad de un nico nodo del clster. El servicio de aplicacin tiene un nombre virtual que es independiente de los nombres del nodo y al que nos referimos como nombre de instancia de clster de conmutacin por error. Una aplicacin puede conectarse con la instancia de clster de conmutacin por error si hace referencia al nombre de la misma. La aplicacin no necesita saber qu nodo aloja a la instancia de clster de

213

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
conmutacin por error. Una instancia de clster de conmutacin por error de SQL Server aparece en la red como un equipo individual, pero ofrece funciones para la conmutacin por error entre nodos si el nodo actual deja de estar disponible. Por ejemplo, durante un error de hardware no relacionado con el disco, un error del sistema operativo o una actualizacin planeada del mismo, puede configurar una instancia de SQL Server en un nodo de un clster de conmutacin por error para que conmute a cualquier otro nodo del grupo de discos. Un clster de conmutacin por error no implica proteccin ante errores de disco. Puede utilizar la agrupacin en clsteres de conmutacin por error para reducir el tiempo de inactividad del sistema y proporcionar mayor disponibilidad de aplicaciones. La agrupacin en clsteres de conmutacin por error es compatible con SQL Server Enterprise y SQL Server Developer y, con algunas restricciones, con SQL Server Standard..

Creacin de reflejo de la base de datos La creacin de reflejo de la base de datos es bsicamente una solucin de software para aumentar la disponibilidad de la base de datos mediante una conmutacin por error casi inmediata. La creacin de reflejo de la base de datos puede utilizarse para mantener una sola base de datos en estado de espera, o base de datos reflejada, para una base de datos de produccin correspondiente a la que se conoce como base de datos principal. La base de datos reflejada se crea mediante la restauracin (sin recuperacin) de una copia de seguridad de la base de datos principal. Eso hace que los clientes no dispongan de acceso a la base de datos reflejada. Sin embargo, es posible utilizarla de forma indirecta para generar informes creando una instantnea de base de datos en la base de datos reflejada. La instantnea de la base de datos proporciona a los clientes acceso de slo lectura a la informacin de la base de datos tal como exista al crearse la instantnea. Cada configuracin de creacin de reflejo de la base de datos incluye un servidor principal que contiene la base de datos principal y un servidor reflejado que contiene la base de datos reflejada. El servidor reflejado actualiza de forma constante la base de datos reflejada con relacin a la base de datos principal. La creacin de reflejo de la base de datos se ejecuta con una operacin sincrnica en modo de alta seguridad o con una operacin asincrnica en modo de alto rendimiento. En modo de alto rendimiento, las transacciones se confirman sin esperar a que el servidor reflejado escriba el registro en el disco, lo que maximiza el rendimiento. En modo de alta seguridad, una transaccin confirmada se confirma en ambos asociados, pero a riesgo de aumentar la latencia de las transacciones. En la configuracin ms sencilla, la creacin de reflejo de la base de datos slo implica a los servidores principal y reflejado. En esta configuracin, si se pierde el servidor principal, el reflejado se puede utilizar como servidor en estado de espera activa, con posible prdida de datos. El modo de alta seguridad admite una configuracin alternativa: modo de alta seguridad con conmutacin automtica por error. Esta configuracin implica a una tercera instancia de servidor, denominada testigo, que permite al servidor reflejado actuar como servidor en espera activa. La conmutacin por error de la base de datos principal a la base de datos reflejada suele tardar varios segundos. A partir de SQL Server 2005 Service Pack 1 (SP1), SQL Server Standard y SQL Server Enterprise han admitido los testigos y asociados de creacin de reflejo de la base de datos. Pero los asociados deben usar la misma edicin y solamente SQL Server Enterprise admite la creacin de reflejo de la base de datos asincrnica (modo de alto rendimiento). SQL Server Workgroup y SQL Server Express tambin admiten testigos.

Trasvase de registros Al igual que la creacin de reflejo de la base de datos, el trasvase de registros se aplica en la base de datos. Puede usar el trasvase de registros para mantener una o varias bases de datos en estado de espera activa para una base de datos de produccin correspondiente que se conoce como base de datos principal. Las bases de datos en estado de espera tambin se conocen como bases de datos secundarias. Cada una de las bases de datos secundarias se crea al restaurar una copia de seguridad (sin recuperacin) de la base de datos principal, o en espera. La restauracin con estado de espera permite usar la base de datos secundaria resultante para la generacin limitada de informes. La configuracin del trasvase de registros incluye un nico servidor principal que contiene la base de datos principal, uno o varios servidores secundarios, cada uno con una base de datos secundaria, y un servidor de supervisin. Cada servidor secundario actualiza su base de datos secundaria a intervalos regulares a partir de las copias de seguridad del registro de la base de datos principal. El trasvase de registros implica un retraso modificable por el usuario entre el momento en que el servidor principal crea una copia de seguridad del registro de la base de datos principal y el momento en que el servidor secundario restaura la copia de seguridad del registro. Antes de que se pueda producir una conmutacin por error, debe actualizarse totalmente una base de datos secundaria al aplicar manualmente las copias de seguridad del registro no restauradas. El trasvase de registros ofrece la flexibilidad de admitir varias bases de datos en espera. Si necesita varias bases de datos en espera, utilice el trasvase de registros por s solo o como complemento a la creacin de reflejo de la base de datos. Al combinar estas soluciones, la base de datos primaria actual de la configuracin de la creacin de reflejo de la base de datos es tambin la base de datos principal actual de la configuracin del trasvase de registros. El trasvase de registros se admite en las ediciones Enterprise, Standard y Workgroup de SQL Server. Replicacin La replicacin utiliza un modelo de publicacin y suscripcin. Esto permite que un servidor principal, conocido como publicador, distribuya datos a uno o varios servidores secundarios, o suscriptores. Gracias a la replicacin, se puede obtener una disponibilidad y escalabilidad en tiempo real entre tales servidores. Esta solucin es compartible con el filtrado para obtener un subconjunto de datos de los suscriptores, as como las actualizaciones con particiones. Los suscriptores estn en lnea y disponibles para la generacin de informes y otras funciones, sin recuperacin de consultas. SQL Server ofrece tres tipos de replicacin: replicacin de instantneas, replicacin transaccional y replicacin de mezcla. La replicacin transaccional proporciona la latencia ms baja y es la que ms se suele utilizar por su alta disponibilidad. La replicacin se admite en todas las ediciones de SQL Server. La publicacin de replicaciones no est disponible en SQL Server Express ni en SQL Server Compact 3.5 SP1. Importante: Disponer de una estrategia de copias de seguridad y restauracin bien diseada e implementada es importante para utilizar una solucin de alta disponibilidad.

Bases de datos compartidas escalables La caracterstica de base de datos compartida y escalable permite escalar una base de datos de slo lectura construida exclusivamente para informes. La base de datos de informes debe residir en un conjunto de volmenes dedicados de slo lectura, cuyo fin principal es hospedar la base de datos. Mediante el uso de hardware estndar para servidores y volmenes, puede escalar una base de datos de informes para que proporcione la misma vista de los datos de los informes en varios servidores de informes. Esta caracterstica tambin proporciona una forma de actualizacin sencilla para la base de datos de informes.

214

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
15 Disear una estrategia de respaldo. Considerar: modelo de recuperacin, compresin, seleccionando los tipos de respaldo, programacin, medios de respaldo, respaldo de archivos y grupos de archivos, verificando los respaldos, control de claves, respaldos espejos, consideraciones de cluster Introduccin al modelo de recuperacin Los modelos de recuperacin se han diseado para controlar el mantenimiento del registro de transacciones. Existen tres modelos de recuperacin: simple, completa y por medio de registros de operaciones masivas. Normalmente, en las bases de datos se usa el modelo de recuperacin completa o el modelo de recuperacin simple. En la tabla siguiente se resumen estos modelos de recuperacin. Modelo recuperacin de Descripcin Riesgo de prdida de trabajo Recuperacin momento dado? hasta un

Simple

Sin copias de seguridad de registros.

Los cambios realizados despus de la Slo se puede recuperar hasta el copia de seguridad ms reciente no final de una copia de seguridad. protegidos. es En caso volver de a

Recupera automticamente el espacio de estn requisitos de espacio, eliminando,

registro para mantener al mnimo los desastre, esencia, la necesidad de administrar el espacio del registro de transacciones.

necesario

en realizar dichos cambios.

Completa

Requiere copias de seguridad de registros. Normalmente ninguno.

Se

puede

recuperar

hasta

determinado momento, siempre No se pierde trabajo si un archivo de Si el final del registro resulta daado, que las copias de seguridad se datos se pierde o resulta daado. Se puede recuperar hasta se deben repetir los cambios hayan completado hasta ese realizados desde la ltima copia de momento. cualquier seguridad de registros. momento, por ejemplo, antes del error de aplicacin o usuario.

Por

medio

de Requiere copias de seguridad de registros. Si el registro resulta daado o se han Se puede recuperar hasta el final de realizado operaciones masivas desde de cualquier copia de seguridad. Complemento del modelo de recuperacin la copia masiva de alto rendimiento. Reduce el uso del espacio de registro mediante el registro mnimo de la mayora En caso contrario, no se pierde el de las operaciones masivas. trabajo. ltima copia se de seguridad repetir de No admite recuperaciones a un los momento dado. completa que permite operaciones de registros, seguridad. pueden

registros operaciones masivas

cambios desde esa ltima copia de

Nota: El modelo de recuperacin adecuado para una base de datos depende de los requisitos de disponibilidad y recuperacin de la base de datos

Modelo de recuperacin simple El modelo de recuperacin simple minimiza la sobrecarga administrativa del registro de transacciones, ya que no se realiza una copia de seguridad de este registro. El modelo de recuperacin simple tiene un alto riesgo de prdida de trabajo si la base de datos sufre daos. Slo se pueden recuperar los datos de la copia de seguridad ms reciente de los datos perdidos. Por lo tanto, en el modelo de recuperacin simple, los intervalos de copia de seguridad deben ser lo bastante cortos como para evitar la prdida de cantidades importantes de datos. No obstante, los intervalos deben ser lo bastante largos como para evitar que la sobrecarga de copias de seguridad afecte al trabajo de produccin. La inclusin de copias de seguridad diferenciales en la estrategia de copias de seguridad puede ayudar a reducir la sobrecarga. Por lo general, para una base de datos de usuario, el modelo de recuperacin simple es til para bases de datos de prueba y desarrollo, o bien para bases de datos que contienen sobre todo datos de slo lectura, como puede ser un almacn de datos. El modelo de recuperacin simple no es apropiado para sistemas de produccin en los que la prdida de cambios recientes es inadmisible. En estos casos, se recomienda el modelo de recuperacin completa.

Modelo de recuperacin completa y modelo de recuperacin optimizado para cargas masivas de registros El modelo de recuperacin completa y el modelo de recuperacin optimizado para cargas masivas de registros ofrecen mayor proteccin de los datos que el modelo de recuperacin simple. Estos modelos de recuperacin se basan en hacer copias de seguridad de registros de transacciones para ofrecer una recuperacin completa y evitar la prdida de trabajo en una amplia variedad de casos de error.

Modelo de recuperacin completa Ofrece el modelo de mantenimiento normal de base de datos para bases de datos en las que es necesario garantizar la durabilidad de las transacciones.

215

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Se requieren copias de seguridad de registros. Este modelo registra completamente todas las transacciones y conserva las entradas del registro de transacciones hasta que se realiza una copia de seguridad de las mismas. El modelo de recuperacin completa permite recuperar una base de datos hasta el punto en que se produjo el error, suponiendo que se pueda hacer una copia de seguridad del final del registro despus del error. El modelo de recuperacin completa admite tambin la restauracin de pginas de datos individuales.

Modelo de recuperacin optimizado para cargas masivas de registros Este modelo de recuperacin registra la mayora de las operaciones masivas. Se ha creado exclusivamente como complemento del modelo de recuperacin completa. Para determinadas operaciones masivas a gran escala, como la importacin masiva o la creacin de ndices, el cambio temporal al modelo de recuperacin optimizado para cargas masivas de registros aumenta el rendimiento y reduce el uso de espacio de registro. Sigue siendo necesario realizar copias de seguridad de registros. Al igual que el modelo de recuperacin completa, el modelo de recuperacin optimizado para cargas masivas de registros conserva todas las entradas del registro de transacciones hasta que se realiza una copia de seguridad de las mismas. Los inconvenientes son mayores copias de seguridad de registros y mayor riesgo de prdida de trabajo, porque el modelo de recuperacin optimizado para cargas masivas de registros no admite la recuperacin a un momento dado.

Importante: Con el modelo de recuperacin completa y el modelo de recuperacin optimizado para cargas masivas de registros, las copias de seguridad de registros son fundamentales. Si no desea hacer copias de seguridad de registros, use el modelo de recuperacin simple.

Elegir el modelo de recuperacin de una base de datos El modelo de recuperacin simple es, por lo general, apropiado para una base de datos de prueba o de desarrollo. Sin embargo, para una base de datos de produccin, la mejor opcin es normalmente el modelo de recuperacin completa complementado, opcionalmente, con el modelo de recuperacin optimizado para cargas masivas de registros. Sin embargo, a veces el modelo de recuperacin simple es apropiado para bases de datos de produccin pequeas, en especial si son de slo lectura en su mayora o por completo, o bien para un almacenamiento de datos. Para elegir el modelo de recuperacin ptimo para una base de datos concreta, debe tener en cuenta los objetivos y requisitos de recuperacin de la base de datos y si est capacitado para administrar las copias de seguridad de registros. Nota: Una base de datos nueva hereda su modelo de recuperacin de la base de datos model. Identificar objetivos y requisitos de recuperacin Para seleccionar el modelo de recuperacin ms adecuado para una base de datos, tenga en cuenta los objetivos y requisitos de la recuperacin de esa base de datos. Responda a las siguientes preguntas para determinar los requisitos de disponibilidad de datos y cmo afectara la prdida de datos. Requisitos de recuperacin

Qu importancia tiene no perder nunca cambios?

Con qu facilidad podran volverse a crear los datos perdidos? Dispone de dos o ms bases de datos que deben ser lgicamente coherentes? De ser as, considere la posibilidad de utilizar transacciones de Microsoft DTC (Coordinador de transacciones distribuidas). Nota: Con el modelo de recuperacin completa, si se han marcado las transacciones en cada una de las bases de datos relacionadas, puede recuperar la base de datos a un punto coherente. Para ello, debe restaurar cada base de datos con la misma marca de transaccin que el punto de recuperacin de cada una. Sin embargo, al utilizar una marca para un punto de recuperacin se pierden las transacciones confirmadas tras ese punto.

Consideraciones acerca del personal Su organizacin usa administradores de sistema o de bases de datos? Si no es as, quines sern los encargados de realizar las operaciones de copia de seguridad y recuperacin, y cmo se les formar? Patrones de utilizacin de datos Para cada base de datos, considere las siguientes preguntas:

Con qu frecuencia se modifican los datos de la base de datos? Se modifican algunas tablas bastante ms a menudo que otras?

Existen perodos de produccin crticos? Si existen, cules son los patrones de utilizacin durante estos perodos? Experimenta la base de datos perodos de mxima actividad para inserciones y otras operaciones de actualizacin? Puede que desee programar copias de seguridad de datos para que se realicen durante las horas de mxima actividad. Normalmente, cuando el sistema de E/S se ve sometido a un uso intensivo, slo se deben utilizar copias de seguridad de registros.

216

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
La base de datos est sujeta a errores de aplicacin o actualizaciones arriesgadas que podran no detectarse inmediatamente? De ser as, considere la posibilidad de utilizar el modelo de recuperacin completa. ste permite utilizar las copias de seguridad de registros para recuperar la base de datos a un momento determinado.

Casos en los que se debe utilizar el modelo de recuperacin simple Utilcelo si se dan todas las condiciones siguientes:

La recuperacin al momento del error no es necesaria. Si se pierde o se daa la base de datos, no le importa perder todas las actualizaciones realizadas entre el error y la copia de seguridad anterior. No le importa perder algunos datos del registro. No desea realizar copias de seguridad del registro de transacciones ni restaurarlo, y prefiere confiar exclusivamente en las copias de seguridad completas y diferenciales.

Casos en los que se debe utilizar el modelo de recuperacin completa

Utilice este modelo y, opcionalmente, tambin el modelo de recuperacin optimizado para cargas masivas de registros, si se da cualquiera de las condiciones siguientes:

Desea poder recuperar todos los datos. Si la base de datos incluye varios grupos de archivos y desea realizar una restauracin por etapas de los grupos de archivos secundarios de lectura/escritura, y opcionalmente, de los de slo lectura. Debe poder realizar una recuperacin hasta el momento del error. Desea poder restaurar pginas individuales.

Le resulta aceptable incurrir en los costes administrativos de las copias de seguridad del registro de transacciones

Casos en los que se debe utilizar el modelo de recuperacin optimizado para cargas masivas de registros

El modelo de recuperacin optimizado para cargas masivas de registros est pensado estrictamente como un suplemento del modelo de recuperacin completa. Se recomienda que lo utilice nicamente durante los perodos en los que est ejecutando operaciones masivas a gran escala y en los que no necesite la recuperacin a un momento dado de la base de datos.

La base de datos se somete peridicamente a operaciones masivas? En este modelo, la mayora de las operaciones masivas se registran de forma mnima. Si utiliza el modelo de recuperacin completa, puede cambiar temporalmente al modelo de recuperacin optimizado para cargas masivas de registros antes de realizar este tipo de operaciones masivas. En general, el modelo de recuperacin optimizado para cargas masivas de registros es similar al modelo de recuperacin completa. Slo se diferencian en que aqul registra de forma mnima la mayora de las operaciones masivas. Una copia de seguridad del registro de transacciones captura el registro y, adems, los resultados de cualquier operacin registrada mnimamente que se hayan completado desde la ltima copia de seguridad. Esto puede hacer que el tamao de las copias de seguridad de registros sea muy grande. Por tanto, el modelo de recuperacin optimizado para cargas masivas de registros est pensado para su uso en las operaciones masivas que permiten un registro mnimo. Se recomienda que en el resto de los casos utilice el modelo de recuperacin completa. En cuanto se complete un conjunto de operaciones masivas, es recomendable que vuelva inmediatamente al modelo de recuperacin completa.

Ver y cambiar el modelo de recuperacin de una base de datos Una base de datos nueva hereda su modelo de recuperacin de la base de datos model. El modelo de recuperacin predeterminado de la base de datos model depende de la edicin de SQL Server. Pero esto lo puede modificar cualquiera que tenga el permiso ALTER en la base de datos.. Planear la recuperacin de un desastre Al administrar una base de datos de SQL Server, es importante estar preparado para la recuperacin de desastres potenciales. Es necesario un plan de copias de seguridad y restauracin correctamente diseado y probado para poder recuperar las copias de seguridad de SQL Server de las bases de datos despus de un desastre. Adems, para garantizar que todos los sistemas y datos puedan recuperar rpidamente su funcionamiento normal en caso de un desastre natural, es necesario crear un plan de recuperacin de desastres. Durante la elaboracin de este plan es preciso tener en cuenta los escenarios de distintos tipos de desastres que pueden afectar a su negocio, incluidos los desastres naturales, como un incendio, y los desastres tcnicos, como los errores en dos discos de una matriz RAID-5. Cuando cree un plan de recuperacin de desastres, identifique y prepare todos los pasos necesarios para hacer frente a cada tipo de desastre. Debe realizar la comprobacin prctica de los pasos de recuperacin de cada escenario. Se recomienda que compruebe el plan de recuperacin de desastres mediante la simulacin de un desastre natural.

217

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Durante el diseo del plan de copias de seguridad y restauracin, es necesario realizar el diseo del plan de recuperacin de desastres segn el entorno y las necesidades del negocio. Por ejemplo, supongamos que se produce un incendio y destruye el centro de datos disponibles 24 horas al da. Est seguro de que es posible la recuperacin? Cunto tiempo se puede tardar en llevar a cabo la recuperacin y tener disponible el sistema? Cul es la cantidad de datos perdidos que pueden tolerar los usuarios? Lo ideal es que el plan de recuperacin de desastres indique el tiempo que durar la recuperacin y el estado final de las bases de datos que los usuarios pueden esperar. Por ejemplo, puede determinar que, tras la adquisicin del hardware especificado, la recuperacin debe completarse en 48 horas y slo se garantizarn los datos hasta finales de la semana previa al incidente. Un plan de recuperacin de desastres se puede estructurar de diferentes maneras y puede contener muchos tipos de informacin. Entre los tipos de planes de recuperacin de desastres se incluyen los siguientes:

Un plan para adquirir el hardware. Un plan de comunicacin.

Una lista de las personas con las que ponerse en contacto si se produce un desastre. Instrucciones para ponerse en contacto con las personas implicadas en la respuesta al desastre.

Informacin acerca del propietario de la administracin del plan. Una lista de comprobacin de las tareas necesarias para cada escenario de recuperacin. Para facilitar la revisin de la evolucin de la recuperacin de desastres, ponga a cada tarea una inicial a medida que se vayan completando y anote la hora de finalizacin en la lista de comprobacin.

Administrar medios de copia de seguridad Se recomienda que el plan de copias de seguridad estipule cmo se han de administrar los medios de copia de seguridad, por ejemplo:

Un plan de seguimiento y administracin para almacenar y reciclar conjuntos de copias de seguridad. Una programacin para sobrescribir el medio de copia de seguridad.

En un entorno multiservidor, la decisin de utilizar copias de seguridad centralizadas o distribuidas. Un modo de realizar un seguimiento de la vida til del medio.

Un procedimiento para minimizar los efectos de la prdida de un conjunto o medio de copia de seguridad, por ejemplo, la prdida de una cinta. La decisin de guardar los conjuntos de copia de seguridad dentro o fuera del sitio, y un anlisis de cmo afectara esta decisin al tiempo de recuperacin.

Trabajar con medios de copia de seguridad en SQL Server

Para asegurarse de que puede restaurar el sistema cuando sea necesario, debe administrar cuidadosamente las copias de seguridad. Cada copia de seguridad contiene cualquier texto descriptivo proporcionado al crearla, adems de la informacin de caducidad de la copia de seguridad Esta informacin se puede utilizar para:

Identificar una copia de seguridad. Determinar cundo puede sobrescribir la copia de seguridad de manera segura.

Identificar todas las copias de seguridad en un medio de copia de seguridad, cinta o disco, para determinar qu copia de seguridad debe restaurar.

Al trabajar con copias de seguridad, se recomienda realizar lo siguiente:

Guarde las copias de seguridad en un lugar seguro, preferiblemente en un sitio seguro diferente de aqul donde residen los datos. Guarde las copias de seguridad ms antiguas durante un perodo designado, para utilizarlas en caso de que la copia de seguridad ms actualizada se dae, se destruya o se pierda. Etiquete el medio de copia de seguridad para no sobrescribir copias de seguridad decisivas por descuido. Esto permite identificar fcilmente los datos almacenados en el medio de copia de seguridad o el conjunto de copia de seguridad especfico.

218

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Utilice fechas de caducidad en las copias de seguridad, para evitar tambin sobrescribirlas por descuido. Establezca un sistema para sobrescribir las copias de seguridad, mediante la utilizacin, primero, de las copias de seguridad ms antiguas.

Dispositivos de copia de seguridad En una operacin de copia de seguridad, los datos que se van a copiar, la copia de seguridad, se escriben en un dispositivo fsico de copia de seguridad. Un dispositivo fsico de copia de seguridad es una unidad de cinta o un archivo de disco proporcionado por el sistema operativo. Una copia de seguridad puede utilizar entre 1 y 64 dispositivos de copia de seguridad. Si una copia de seguridad requiere varios dispositivos de copia de seguridad, stos deben ser de un mismo tipo (disco o cinta). Nota: Un dispositivo fsico de copia de seguridad se inicializa cuando se escribe en l la primera copia de seguridad de un conjunto de medios. Las copias de seguridad de uno o varios dispositivos de copia de seguridad constituyen un solo conjunto de medios. Un conjunto de medios es una coleccin ordenada de medios de copia de seguridad, ya sean cintas o archivos de disco, que utilizan un tipo y un nmero fijo de dispositivos de copia de seguridad.

Usar dispositivos de copia de seguridad en disco Un dispositivo de copia de seguridad en disco es un disco duro u otro medio de almacenamiento en disco que contiene uno o varios archivos de copia de seguridad. Un archivo de copia de seguridad es un archivo normal del sistema operativo. Si un archivo de disco se llena mientras una operacin de copia de seguridad est anexando una copia de seguridad al conjunto de medios, la operacin producir un error. El tamao mximo de un archivo de copia de seguridad se determina de acuerdo con el espacio disponible en el dispositivo de disco, de modo que el tamao apropiado para un dispositivo de copia de seguridad en disco depender del tamao de las copias de seguridad. Un dispositivo de copia de seguridad en disco puede ser un simple dispositivo de disco; por ejemplo, una unidad ATA. Como alternativa, se puede utilizar una unidad de disco de intercambio en actividad que permita sustituir de forma transparente un disco lleno por uno vaco. Un disco de copia de seguridad puede ser un disco local en el servidor o un disco remoto que sea un recurso de red compartido. Las herramientas de administracin de SQL Server son muy flexibles para el control de los dispositivos de copia de seguridad en disco, ya que generan de forma automtica un nombre con marca de tiempo en el archivo de disco. Importante: Se recomienda que el disco de copia de seguridad no sea el disco de datos o del registro de la base de datos. Esto es necesario para garantizar el acceso a las copias de seguridad si el disco de datos o del registro presenta errores.

Especificar un archivo de copia de seguridad mediante su nombre fsico La sintaxis bsica BACKUP para especificar un archivo de copia de seguridad mediante su nombre de dispositivo fsico es: BACKUP DATABASE database_name TO DISK = { 'physical_backup_device_name' | @physical_backup_device_name_var } Por ejemplo: BACKUP DATABASE AdventureWorks TO DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'; GO Para especificar un dispositivo de disco fsico en una instruccin RESTORE, la sintaxis bsica es: RESTORE { DATABASE | LOG } database_name FROM DISK = { 'physical_backup_device_name' | @physical_backup_device_name_var } Por ejemplo, RESTORE DATABASE AdventureWorks FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'; Especificar la ruta de acceso de una archivo de copia de seguridad en disco Cuando se especifica un archivo de copia de seguridad, se debe especificar ruta de acceso completa y el nombre de archivo. Si especifica slo el nombre de archivo o la ruta de acceso relativa al realizar la copia de seguridad de un archivo, el archivo de copia de seguridad se sita en el directorio predeterminado de copias de seguridad. El directorio predeterminado de copias de seguridad es C:\Archivos de programa\Microsoft SQL Server\MSSQL.n\MSSQL\Backup, donde n es el nmero de instancia de servidor. Por lo tanto, para la instancia de servidor predeterminada, el directorio predeterminado de copias de seguridad es C:\Archivos de programa\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup. Para evitar ambigedades, particularmente en los scripts, recomendamos especificar de forma explcita la ruta de acceso del directorio de copias de seguridad en cada clusula DISK. Sin embargo, esto es menos importante cuando se utiliza el Editor de consultas. En ese caso, si est seguro de que el archivo de copia de seguridad reside en el directorio predeterminado de copias de seguridad, puede omitir la ruta de acceso de una clusula DISK. Por ejemplo, la siguiente instruccin BACKUP realiza una copia de seguridad de la base de datos AdventureWorks en el archivo de copia de seguridad AdventureWorks.bak en el directorio predeterminado de copias de seguridad.

219

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
BACKUP DATABASE AdventureWorks TO DISK = AdventureWorks.bak; GO Nota: La ubicacin predeterminada se almacena en la clave del Registro BackupDirectory bajo

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.n\MSSQLServer.

Realizar una copia de seguridad en un archivo de un recurso compartido de red Para que SQL Server pueda tener acceso a un archivo de disco remoto, la cuenta de servicio de SQL Server debe tener acceso al recurso compartido de red. Esto incluye disponer de los permisos necesarios para realizar operaciones de copia de seguridad y restauracin, escribiendo y leyendo en el recurso compartido de red. La disponibilidad de las unidades de red y los permisos depende del contexto en el que se ejecuta SQL Server:

Para realizar una copia de seguridad en una unidad de red cuando SQL Server est en ejecucin en una cuenta de usuario de dominio, se debe asignar la unidad compartida como una unidad de red en la sesin donde se ejecuta SQL Server. Si inicia Sqlservr.exe desde la lnea de comandos, SQL Server detecta todas las unidades de red que ha asignado en la sesin que ha iniciado. Sin embargo, cuando ejecuta Sqlservr.exe como un servicio, SQL Server se ejecuta en una sesin independiente que no tiene relacin con la sesin que ha iniciado. La sesin en la que se ejecuta un servicio puede tener sus propias unidades asignadas, aunque normalmente no lo estn. Puede conectarse a la cuenta de servicio de red mediante la cuenta del equipo en lugar de un usuario de dominio. Para permitir copias de seguridad desde equipos especficos en una unidad compartida, se debe conceder acceso a las cuentas del equipo. El usuario que enva el comando BACKUP puede o no tener acceso; esto resulta irrelevante siempre que el proceso Sqlservr.exe que est realizando la copia de seguridad disponga de acceso. Importante: Debido a que la realizacin de copias de seguridad de datos a travs de una red est expuesta a errores, se recomienda que, cuando se utiliza un disco remoto, compruebe la operacin de copia de seguridad una vez finalizada.

Especificar un nombre UNC (Convencin de nomenclatura universal) Para especificar un recurso compartido de red en un comando de copia de seguridad o restauracin, se debe usar el nombre UNC (convencin de nomenclatura universal) completo del archivo para el dispositivo de copia de seguridad. Un nombre UNC toma el formato \\nombreDeSistema\nombreDeRecursoCompartido\rutaDeAcceso\nombreDeArchivo. Por ejemplo: BACKUP DATABASE AdventureWorks TO DISK = '\\BackupSystem\BackupDisk1\AW_backups\AdventureWorksData.Bak'; GO

Usar dispositivos de cinta

Nota: La compatibilidad con dispositivos de cinta de copia de seguridad se quitar en una versin futura de SQL Server. Evite utilizar esta caracterstica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. Realizar copias de seguridad de datos de SQL Server en una cinta requiere que las unidades de cinta sean compatibles con el sistema operativo Microsoft Windows. Adems, es recomendable utilizar slo las cintas que el fabricante recomienda para una unidad de cinta determinada. Cuando se utiliza una unidad de cinta, una operacin de copia de seguridad puede llenar una cinta y continuar en otra. Cada cinta contiene un encabezado de medios. El primer medio que se utiliza se denomina cinta inicial. Cada cinta sucesiva se denomina cinta de continuacin y tiene un nmero de secuencia de medio superior en una unidad a la cinta anterior. Por ejemplo, un conjunto de medios asociado con cuatro dispositivos de cinta contiene al menos cuatro cintas iniciales (y, si no hay capacidad para la base de datos, cuatro series de cintas de continuacin). Cuando adjunte un conjunto de copia de seguridad, debe montar la ltima cinta de la serie. Si no monta la ltima cinta, Database Engine (Motor de base de datos) busca hacia adelante hasta el final de la cinta montada y le solicita que cambie la cinta. En ese punto, monte la ltima cinta. Los dispositivos de copia de seguridad en cinta se utilizan como los dispositivos de disco, con las excepciones siguientes:

El dispositivo de cinta debe estar conectado fsicamente al equipo donde se ejecuta una instancia de SQL Server. No se admite la creacin de copias de seguridad en dispositivos de cinta remotos. Si un dispositivo de copia de seguridad en cinta se llena durante la operacin de copia de seguridad, pero todava falta por escribir la mayor parte de los datos, SQL Server le pedir una nueva cinta y continuar con la operacin de copia de seguridad una vez que la cinta se haya cargado.

220

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Administrar cintas abiertas Para ver una lista de los dispositivos de cinta abiertos y el estado de las solicitudes de montaje, consulte la vista de administracin dinmica sys.dm_io_backup_tapes. En esta vista se muestran todas las cintas abiertas. Se incluyen las cintas en uso que se encuentran temporalmente inactivas mientras esperan a la siguiente operacin BACKUP o RESTORE. Si deja abierta la cinta accidentalmente, la manera ms rpida de liberarla es utilizar el siguiente comando: RESTORE REWINDONLY FROM TAPE = nombreDeDispositivoDeCopiaDeSeguridad.

Especificar una cinta de copia de seguridad mediante su nombre fsico La sintaxis bsica BACKUP para especificar una cinta de copia de seguridad mediante el nombre de dispositivo fsico de la unidad de cinta es: BACKUP { DATABASE | LOG } database_name TO TAPE = { 'physical_backup_device_name' | @physical_backup_device_name_var } Por ejemplo: BACKUP LOG AdventureWorks TO TAPE = '\\.\tape0'; GO Para especificar un dispositivo de cinta fsico en una instruccin RESTORE, la sintaxis bsica es: RESTORE { DATABASE | LOG } database_name FROM TAPE = { 'physical_backup_device_name' | @physical_backup_device_name_var }

Opciones BACKUP y RESTORE especficas de cinta Para facilitar la administracin de cintas, la instruccin BACKUP proporciona las siguientes opciones especficas:

{ NOUNLOAD | UNLOAD } Se puede controlar si una cinta de copia de seguridad se descargar automticamente de la unidad de cinta despus de una operacin de copia de seguridad o restauracin. UNLOAD/NOUNLOAD es una configuracin de sesin que persiste durante la sesin o hasta que se restablece especificando la alternativa. { REWIND | NOREWIND } Se puede controlar si SQL Server mantiene abierto el resto de la cinta despus de la operacin de copia de seguridad o restauracin, o si libera y rebobina la cinta una vez se llena. El comportamiento predeterminado es rebobinar la cinta (REWIND).

Usar un dispositivo lgico de copia de seguridad

Un dispositivo lgico de copia de seguridad es un nombre opcional y definido por el usuario que apunta a un dispositivo fsico de copia de seguridad (un archivo de disco o unidad de cinta). Un dispositivo lgico de copia de seguridad permite usar el direccionamiento indirecto cuando se hace referencia al dispositivo fsico de copia de seguridad correspondiente. Definir un dispositivo lgico de copia de seguridad requiere la asignacin de un nombre lgico a un dispositivo fsico. Por ejemplo, puede definirse un dispositivo lgico, AdventureWorksBackups, para que seale al archivo Z:\SQLServerBackups\AdventureWorks.bak o a la unidad de cinta \\.\tape0. De esta forma, los comandos de copias de seguridad y restauracin pueden especificar AdventureWorksBackups como dispositivo de copia de seguridad, en lugar de DISK = 'Z:\SQLServerBackups\AdventureWorks.bak' o TAPE = '\\.\tape0'. El nombre de dispositivo lgico debe ser nico entre todos los dispositivos lgicos de copia de seguridad de la instancia de servidor. Para ver los nombres de los dispositivos lgicos existentes, consulte la vista de catlogo sys.backup_devices. Esta vista muestra el nombre de cada dispositivo lgico de copia de seguridad y describe el tipo y la ruta de acceso o el nombre de archivo fsico del dispositivo de copia de seguridad fsico correspondiente. Una vez definido el dispositivo lgico de copia de seguridad, en un comando BACKUP o RESTORE, puede especificar el dispositivo lgico de copia de seguridad en lugar del nombre fsico del dispositivo. Por ejemplo, la siguiente instruccin realiza una copia de seguridad de la base de datos AdventureWorks en el dispositivo lgico de copia de seguridad AdventureWorksBackups. BACKUP DATABASE AdventureWorks TO AdventureWorksBackups; GO Nota: En una determinada instruccin BACKUP o RESTORE, el nombre de dispositivo lgico de copia de seguridad y el nombre del dispositivo fsico correspondiente son intercambiables. Una ventaja de usar un dispositivo lgico de copia de seguridad es que resulta ms sencillo de usar que una larga ruta de acceso. Utilizar un dispositivo lgico de copia de seguridad puede ser til si tiene previsto escribir una serie de copias de seguridad en la misma ruta de acceso o en un dispositivo de cinta. Los dispositivos lgicos de copia de seguridad resultan muy tiles para identificar los dispositivos de copia de seguridad en cinta. Se puede escribir un script de copia de seguridad para usar un dispositivo lgico especfico. Esto permite cambiar a un nuevo dispositivo de copia de seguridad fsico sin actualizar el script. El cambio implica el siguiente proceso:

221

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
1. 2. Quitar el dispositivo lgico de copia de seguridad original. Definir un nuevo dispositivo lgico de copia de seguridad que utilice el nombre de dispositivo lgico original pero que se asigne a un dispositivo de copia de seguridad fsico distinto. Los dispositivos lgicos de copia de seguridad resultan muy tiles para identificar los dispositivos de copia de seguridad en cinta.

Conjuntos de medios de copia de seguridad reflejados La creacin de reflejos de los conjuntos de medios de copia de seguridad reduce el efecto de los errores de funcionamiento de los dispositivos de copia de seguridad. Los errores de funcionamiento son especialmente graves porque las copias de seguridad son el ltimo recurso para evitar la prdida de datos. A medida que aumenta el tamao de una base de datos, aumentan las posibilidades de que un error de un dispositivo o medio de copia de seguridad provoque que no se pueda restaurar una copia de seguridad. La creacin de reflejo de los medios de copia de seguridad aumenta la confiabilidad de las copias de seguridad al proporcionar redundancia para el dispositivo fsico. Nota: Los conjuntos de medios de copia de seguridad reflejados slo se admiten en SQL Server 2005 Enterprise Edition y en versiones posteriores.

Archivar copias de seguridad de SQL Server Se recomienda que use una utilidad de copia de seguridad del sistema de archivos para archivar las copias de seguridad en disco y que guarde los archivos fuera de las instalaciones. El uso de discos tiene la ventaja de poder utilizar la red para escribir las copias de seguridad archivadas en un disco fuera de las instalaciones. El uso de cintas tiene la ventaja de permitir la acumulacin de una serie de copias de seguridad archivadas hasta que se tiene la seguridad de que no se necesitarn ms. Un mtodo comn de archivo es escribir copias de seguridad de SQL Server en un disco local de copia de seguridad, archivarlas en cinta y guardar estas cintas fuera de las instalaciones.

Usar medios de copia de seguridad Conjuntos de medios, familias de medios y conjuntos de copias de seguridad Las copias de seguridad de uno o varios medios de copia de seguridad constituyen un conjunto de medios. Un conjunto de medios es una coleccin ordenada de medios de copia de seguridad, cintas o archivos de disco en la que se han escrito una o ms operaciones de copia de seguridad mediante un tipo y nmero fijo de dispositivos de copia de seguridad. Un conjunto de medios utiliza unidades de cinta o unidades de disco, pero no ambas. Por ejemplo, los dispositivos de copia de seguridad asociados con un conjunto de medios pueden ser tres unidades de cinta denominadas \\.\TAPE0, \\.\TAPE1 y \\.\TAPE2. Este conjunto de medios est formado solamente por cintas, empezando con un mnimo de tres (una por unidad). El tipo y nmero de los dispositivos de copia de seguridad se establece cuando se crea un conjunto de medios y ya no se pueden cambiar. Sin embargo, si es necesario, entre las operaciones de las copias de seguridad y restauracin un dispositivo determinado puede sustituirse por un dispositivo del mismo tipo. Un conjunto de medios se crea en el medio de copia de seguridad durante una operacin de copia de seguridad al dar formato a un medio de copia de seguridad. Despus de dar formato, cada archivo o cinta contiene un encabezado de medios para el conjunto de medios y est listo para recibir el contenido de la copia de seguridad. Con el encabezado adecuado, la operacin de copia de seguridad empieza a realizar la copia de seguridad de los datos especificados en los medios de copia de seguridad en todos los dispositivos de copia de seguridad especificados para la operacin. Nota: Los conjuntos de medios pueden reflejarse como medida de proteccin ante posibles daos en el volumen de medios (una cinta o un archivo de disco). SQL Server 2008 Enterprise y versiones posteriores admiten la compresin de copia de seguridad. En un mismo conjunto de medios no pueden almacenarse copias de seguridad comprimidas y sin comprimir al mismo tiempo. Cualquier edicin de SQL Server 2008 o versiones posteriores puede leer copias de seguridad comprimidas.

Familias de medios Las copias de seguridad creadas en un nico dispositivo no reflejado o en un conjunto de dispositivos reflejados en un conjunto de medios conforman una familia de medios. El nmero de dispositivos de copia de seguridad utilizados para el conjunto de medios determina el nmero de familias de medios del conjunto de medios. Por ejemplo, si un conjunto de medios utiliza dos dispositivos de copia de seguridad no reflejados, el conjunto de medios contiene dos familias de medios. Nota: En un conjunto de medios reflejados, cada familia de medios est reflejada. Por ejemplo, si se utilizan seis dispositivos de copia de seguridad para dar formato a un conjunto de medios en el que se usan dos reflejos, habr tres familias de medios, cada una de ellas formada por dos copias equivalentes de los datos de la copia de seguridad. Cada cinta o disco en una familia de medios tiene asignado un nmero de secuencia de medios. El nmero de secuencia del medio de un disco siempre es 1. En una familia de medios de cinta, el nmero de secuencia de la cinta inicial es 1, el nmero de secuencia de la segunda cinta es 2 y as sucesivamente.

222

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Encabezado de medios Cada volumen de un medio de copia de seguridad (archivo de disco o cinta) contiene un encabezado de medios creado por la primera operacin de copia de seguridad que utiliza la cinta (o disco). Este encabezado permanece intacto hasta que se vuelve a dar formato a los medios. El encabezado de medios contiene toda la informacin necesaria para identificar los medios (archivo de disco o cinta) y reside en la familia de medios a la que pertenece. Esta informacin incluye:

El nombre del medio. El nombre del medio es opcional, aunque se recomienda utilizar de forma coherente nombres de medios que identifiquen con claridad los medios. El responsable de dar formato a los medios asigna el nombre a los medios. Nmero de identificacin exclusivo del conjunto de medios.

Nmero de familias de medios en el conjunto de medios. Nmero de secuencia de la familia de medios que contiene este medio.

Nmero de identificacin exclusivo de la familia de medios. Nmero de secuencia de este medio en la familia de medios. Para un archivo de disco, este valor es siempre 1.

Si la descripcin del medio contiene una etiqueta de medios MTF o una descripcin del medio. Nota: Todos los medios que se utilizan en una operacin de copia de seguridad o de restauracin utilizan un formato estndar denominado formato de cinta de Microsoft (MTF). MTF permite que los usuarios especifiquen una etiqueta de cinta que incluya una descripcin especfica de MTF. SQL Server conserva cualquier etiqueta de medios MTF escrita por otra aplicacin pero no escribe etiquetas de medios MTF.

Etiqueta de medios en formato de cinta de Microsoft o descripcin del medio (en texto sin formato).

Nombre del software de copia de seguridad con que se escribi la etiqueta. Nmero exclusivo de identificacin del proveedor del software que ha dado formato al medio.

Fecha y hora en que se escribi la etiqueta. Nmero de reflejos en cada conjunto (1-4); 1 indica un dispositivo no reflejado.

SQL Server 2008 puede procesar medios a los que se ha dado formato mediante versiones anteriores de SQL Server. Importante: SQL Server 7.0 y las versiones de SQL Server 2000 anteriores a SP4 no pueden interpretar los medios a los que se ha dado formato con SQL Server 2008 debido a los cambios en el encabezado de los medios. Sin embargo, SP4 SQL Server 2000 admite los cambios en los encabezados de los medios.

Conjuntos de copia de seguridad Una operacin de copia de seguridad correcta agrega un solo conjunto de copia de seguridad al conjunto de medios. El conjunto de copia de seguridad se describe como el conjunto de medios al que pertenece la copia de seguridad. Si el medio de copia de seguridad est compuesto slo por una familia de medios, esa familia contiene todo el conjunto de copia de seguridad. Si el medio de copia de seguridad est compuesto por varias familias de medios, el conjunto de copia de seguridad est distribuido entre ellas. En cada medio, el conjunto de copia de seguridad contiene un encabezado que describe el conjunto de copia de seguridad. El siguiente ejemplo muestra una instruccin Transact-SQL que crea un conjunto de medios denominado MyAdvWorks_MediaSet_1 para la base de datos AdventureWorks utilizando tres unidades de cinta como dispositivos de copia de seguridad: BACKUP DATABASE AdventureWorks TO TAPE = '\\.\tape0', TAPE = '\\.\tape1', TAPE = '\\.\tape2' WITH FORMAT, MEDIANAME = 'MyAdvWorks_MediaSet_1' Si es correcta, esta operacin de copia de seguridad genera un conjunto de medios nuevo que contiene un nuevo encabezado de medios y un conjunto de copia de seguridad distribuido en tres cintas. En la siguiente ilustracin se muestran estos resultados:

223

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Normalmente, despus de la creacin de un conjunto de medios, las operaciones de copia de seguridad posteriores adjuntan, una detrs de la otra, sus conjuntos de copia de seguridad al conjunto de medios. Todos los medios utilizados por un conjunto de copia de seguridad constituyen el conjunto de medios, independientemente del nmero de medios o dispositivos de copia de seguridad utilizados. Los conjuntos de copia de seguridad se enumeran secuencialmente segn las posiciones que ocupan en el conjunto de medios, lo que le permite especificar la copia de seguridad que desea restaurar. Cada operacin de copia de seguridad realizada en un conjunto de medios debe escribirse en el mismo nmero y tipo de dispositivo de copia de seguridad. Si se utilizan varios dispositivos, como en el primer conjunto de copia de seguridad, el contenido de cada conjunto de copia de seguridad posterior se distribuye entre los medios de copia de seguridad en todos los dispositivos. Para continuar con el ejemplo anterior, una segunda operacin de copia de seguridad (una copia de seguridad diferencial) anexa informacin al mismo conjunto de medios: BACKUP DATABASE AdventureWorks TO TAPE = '\\.\tape0', TAPE = '\\.\tape1', TAPE = '\\.\tape2' WITH NOINIT, MEDIANAME = 'AdventureWorksMediaSet1', DIFFERENTIAL Nota: La opcin NOINIT es el valor predeterminado, pero se incluye para evitar confusiones. Si la segunda operacin de copia de seguridad es correcta, se escribe un segundo conjunto de copia de seguridad en el conjunto de medios distribuyendo el contenido de la copia de seguridad de la siguiente manera:

Al restaurar las copias de seguridad, puede utilizar la opcin FILE para especificar las copias de seguridad que desea utilizar. El siguiente ejemplo muestra el uso de clusulas FILE = backup_set_file_number al restaurar una copia de seguridad de base de datos completa de la base de datos AdventureWorks seguida de una copia de seguridad diferencial de los mismos datos. El conjunto de medios utiliza tres cintas de copia de seguridad, que se encuentran en las unidades de cinta \\.\tape0, tape1 y tape2. RESTORE DATABASE AdventureWorks FROM TAPE = '\\.\tape0', TAPE = '\\.\tape1', TAPE = '\\.\tape2' WITH MEDIANAME = 'AdventureWorksMediaSet1', FILE=1, NORECOVERY; RESTORE DATABASE AdventureWorks FROM TAPE = '\\.\tape0', TAPE = '\\.\tape1', TAPE = '\\.\tape2' WITH MEDIANAME = 'AdventureWorksMediaSet1', FILE=2,

224

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
RECOVERY; GO

El nmero de medios de copia de seguridad en un conjunto de medios depende de varios factores:

Nmero de dispositivos de copia de seguridad Tipo de dispositivos de copia de seguridad

Nmero de conjuntos de copia de seguridad

Usar conjuntos y familias de medios Nmeros de secuencia El orden correcto es importante para varias familias de medios de un conjunto de medios o varios medios de copia de seguridad de una familia de medios. Por tanto, la copia de seguridad asigna nmeros de secuencia de las maneras siguientes:

Familias de medios secuenciales de un conjunto de medios En un conjunto de medios, las familias de medios se numeran de forma secuencial segn su posicin en el conjunto. El nmero de familia de medios se registra en la columna family_sequence_number de la tabla backupmediafamily. Medios fsicos de una familia de medios Un nmero de secuencia de medios indica el orden de los medios fsicos de una familia de medios. El nmero de secuencia 1 se utiliza para el medio inicial de copia de seguridad. ste se etiqueta con 1, el segundo (la primera cinta de continuacin) se etiqueta con 2, y as sucesivamente. Cuando restaure el conjunto de copia de seguridad, los nmeros de secuencia de medios garantizan que el operador que restaura la copia de seguridad monta los medios correctos en el orden correcto.

Consideraciones sobre la utilizacin de varios dispositivos

Cuando utilice varias unidades de cinta o archivos de disco, tenga en cuenta las consideraciones siguientes:

Para las copias de seguridad: En todas las operaciones de copia de seguridad siguientes se debe utilizar el conjunto de medios completo creado por una operacin de copia de seguridad. Por ejemplo, si se cre un conjunto de medios con dos dispositivos de copia de seguridad en cinta, las siguientes operaciones de copia de seguridad que utilicen el mismo conjunto de medios deben utilizar dos dispositivos de copia de seguridad. Para las restauraciones: Para cualquier restauracin desde copias de seguridad en disco y para cualquier restauracin en lnea, deben montarse todas las familias de medios simultneamente. Para una restauracin sin conexin desde copias de seguridad en cinta, puede procesar las familias de medios desde menos dispositivos de copia de seguridad. Cada familia de medios debe procesarse completamente antes de iniciar el procesamiento de la siguiente familia. Las familias de medios siempre se procesan en paralelo, a menos que se realice una restauracin con un solo dispositivo.

Crear un conjunto de medios Para crear un conjunto de medios es necesario formatear el medio de copia de seguridad (una o varias cintas o archivos de disco). El proceso de formato cambia el medio de copia de seguridad de la siguiente manera: 1. Elimina el antiguo encabezado (si existe), eliminando adecuadamente el contenido anterior de los medios de copia de seguridad. Al formatear un dispositivo de cinta se elimina todo el contenido anterior de la cinta actualmente montada. Formatear un disco afecta slo al archivo que especifique para la operacin de copia de seguridad. Escribe un nuevo encabezado de medios en el medio de copia de seguridad (cinta o archivo de disco) en cada uno de los dispositivos de copia de seguridad.

2.

Hacer copias de seguridad en un conjunto de medios existente Al hacer una copia de seguridad en un conjunto de medios existente, las opciones son las siguientes:

Anexarlo al conjunto de copia de seguridad existente. Para utilizar mejor el espacio disponible, se pueden agregar nuevos conjuntos de copia de seguridad al conjunto de medios existente. Agregar estos conjuntos a la copia de seguridad preserva las copias de seguridad anteriores. Nota: Agregarlo, que es el comportamiento predeterminado de la copia de seguridad (BACKUP), puede especificarse explcitamente mediante la opcin NOINIT.

225

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Sobrescribir todos los conjuntos de copia de seguridad con la copia de seguridad actual, dejando el encabezado de medios actual en su sitio. La copia de seguridad de SQL Server tiene medidas de seguridad para evitar que se sobrescriban los medios accidentalmente. Sin embargo, la copia de seguridad puede sobrescribir automticamente los conjuntos de copia de seguridad que hayan alcanzado una fecha de caducidad predefinida. Para los encabezados de cinta, dejar el encabezado en su sitio puede tener sentido. Nota: Sobrescribir los conjuntos de copia de seguridad existentes se especifica mediante la opcin INIT de la instruccin BACKUP.

Ver informacin acerca de las copias de seguridad En la base de datos msdb se almacena un historial completo de todas las operaciones de copia de seguridad y restauracin de SQL Server de una instancia de servidor. En este tema se describen las tablas del historial de copias de seguridad y restauracin, as como las instrucciones de Transact-SQL que se usan para tener acceso al historial de copias de seguridad. En este tema tambin se describe cmo llevar a cabo lo siguiente:

Enumerar los archivos de base de datos y del registro de transacciones. Ver la informacin de encabezado de medios.

Ver la informacin de encabezado de copias de seguridad.

Importante: Para administrar el riesgo de perder actualizaciones recientes, es importante realizar frecuentes copias de seguridad de msdb.

Informacin general sobre las tablas del historial de copias de seguridad y restauracin

En esta seccin se presentan las tablas del historial que almacenan metadatos de copias de seguridad y restauracin en la base de datos del sistema msdb. Tabla historial del Descripcin

backupfile

Contiene una fila por cada archivo de datos o de registro del que se hace una copia de seguridad.

backupfilegroup

Contiene una fila por cada grupo de archivos de un conjunto de copia de seguridad.

backupmediafamily Contiene una fila por cada familia de medios. Si una familia de medios reside en un conjunto de medios reflejado, la familia tiene una fila independiente para cada reflejo del conjunto de medios.

backupmediaset

Contiene una fila por cada conjunto de medios de copia de seguridad.

backupset

Contiene una fila por cada conjunto de copia de seguridad.

restorefile

Contiene una fila por cada archivo restaurado. Se incluyen los archivos restaurados indirectamente por nombre de grupo de archivos.

restorefilegroup

Contiene una fila por cada grupo de archivos restaurado.

restorehistory

Contiene una fila por cada operacin de restauracin.

Nota: Cuando se realiza una restauracin, se modifican las tablas del historial de copias de seguridad y las del historial de restauraciones.

Instrucciones Transact-SQL para tener acceso al historial de copias de seguridad

226

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Las instrucciones de informacin de la restauracin corresponden a informacin almacenada en ciertas tablas del historial de copias de seguridad: Nota de seguridad: En versiones anteriores de SQL Server, cualquier usuario poda obtener informacin sobre los conjuntos de copia de seguridad y los dispositivos de copia de seguridad mediante las instrucciones Transact-SQL RESTORE FILELISTONLY, RESTORE HEADERONLY, RESTORE LABELONLY y RESTORE VERIFYONLY. Dado que estas instrucciones revelan informacin sobre el contenido de los archivos de copia de seguridad, en SQL Server 2008 y versiones posteriores requieren el permiso CREATE DATABASE. Este requisito proporciona una proteccin ms completa que en las versiones anteriores para los archivos de copia de seguridad y la informacin que contienen. Instruccin informacin de Tabla del historial copias de seguridad de Descripcin

RESTORE FILELISTONLY

backupfile

Devuelve un conjunto de resultados que contiene la lista de los archivos de base de datos y de registro del conjunto de copia de seguridad especificado.

RESTORE HEADERONLY

backupset

Obtiene la informacin del encabezado sobre todos los conjuntos de copias de seguridad de un dispositivo determinado. El resultado de la ejecucin de RESTORE HEADERONLY es un conjunto de resultados.

RESTORE LABELONLY backupmediaset

Devuelve un conjunto de resultados que contiene informacin acerca del medio de copia de seguridad de un dispositivo de copia de seguridad especificado.

Convenciones de asignacin de nombres a columnas Por motivos histricos, hay dos convenciones de asignacin de nombres. Las columnas antiguas mantienen sus nombres originales. No obstante, las columnas de SQL Server 2005 o versiones posteriores siguen las convenciones de nomenclatura que se muestran en la siguiente tabla. Contexto Descripcin

Columnas devueltas por comandos de informacin

WordWordWord Ejemplo: DifferentialBaseLSN

Columnas de msdb y en las vistas de catlogo

word_word_word Ejemplo: differential_base_lsn

Enumerar los archivos de base de datos y del registro de transacciones La informacin que se muestra al enumerar los archivos de base de datos y del registro de transacciones de una copia de seguridad incluye el nombre lgico, nombre fsico, tipo de archivo (base de datos o registro), pertenencia a grupos de archivos, tamao del archivo (en bytes), mximo tamao de archivo permitido y tamao de crecimiento de archivos predefinido (en bytes). Esta informacin es til, en las situaciones siguientes, para determinar los nombres de los archivos de una copia de seguridad de base de datos antes de restaurarla cuando:

Ha perdido una unidad de disco que contiene uno o ms archivos de una base de datos. Puede enumerar los archivos de la copia de seguridad de la base de datos para determinar los archivos afectados y, a continuacin, restaurar dichos archivos en una unidad diferente, al restaurar la base de datos completa, o restaurar solamente estos archivos y aplicar las copias del registro de transacciones creadas desde que se realiz la copia de seguridad de la base de datos. Va a restaurar una base de datos de un servidor en otro servidor pero la estructura de directorios y asignacin de unidades no existen en el servidor. Enumerar los archivos de la copia de seguridad le permite determinar los archivos afectados. Por ejemplo, la copia de seguridad contiene un archivo que es necesario restaurar en la unidad E, pero el servidor de destino no tiene una unidad E. Es necesario cambiar el archivo a otra ubicacin, por ejemplo, la unidad Z, cuando se restaure.

Ver la informacin de encabezado de medios La informacin de encabezado del medio muestra informacin acerca del propio medio y no de las copias de seguridad del medio. La informacin de encabezado del medio mostrada incluye el nombre del medio, la descripcin, el nombre del software que lo cre y la fecha en que se escribi. Ver la informacin de encabezado de copia de seguridad La informacin del encabezado de copia de seguridad muestra informacin acerca de todos los conjuntos de copia de seguridad de SQL Server y on SQL Server en el medio. La informacin mostrada incluye los tipos de dispositivos de copia de seguridad utilizados, los tipos de copia de seguridad (por ejemplo, base de datos, transaccin, archivo o diferencial de la base de datos) as como informacin acerca de la

227

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
fecha y hora inicial y final de la copia de seguridad. Esta informacin es til cuando se necesita determinar el conjunto de copia de seguridad que se va a restaurar en la cinta o las copias de seguridad que contiene el medio. Nota: Se puede tardar mucho en ver la informacin de encabezado de la copia de seguridad de las cintas de alta capacidad debido a que se debe examinar el medio completo para mostrar informacin acerca de cada copia de seguridad del mismo. Para ver la informacin de encabezado de la copia de seguridad

RESTORE HEADERONLY (Transact-SQL) SQL Server Management Studio

ReadBackupHeader (SMO)

Identificar el conjunto de copia de seguridad que se restaurar Puede usar informacin en el encabezado de copia de seguridad para identificar qu conjunto de copia de seguridad se va a restaurar. El Motor de base de datos numera cada conjunto de copia de seguridad en los medios de copia de seguridad. Esto permite identificar el conjunto de copia de seguridad que desea restaurar mediante su posicin en los medios. Por ejemplo, el siguiente medio contiene tres conjuntos de copia de seguridad.

Para restaurar un conjunto de copia de seguridad especfico, especifique el nmero de posicin de ese conjunto. Por ejemplo, para restaurar el segundo conjunto de copia de seguridad, especifique 2 como el conjunto de copia de seguridad para restaurar.

Comparacin de la informacin del encabezado de medios y del encabezado de copias de seguridad En la siguiente ilustracin se muestra un ejemplo de las diferencias entre ver la informacin del encabezado de la copia de seguridad y del encabezado del medio. Obtener el encabezado de medios requiere que se recupere slo la informacin del principio de la cinta. Obtener el encabezado de copia de seguridad requiere examinar la cinta completa para ver el encabezado de cada conjunto de copia de seguridad.

Nota: Si se utilizan conjuntos de medios con varias familias de medios, el encabezado de medios y el conjunto de copia de seguridad se escriben en todas las familias de medios. Por tanto, slo es necesario proporcionar una sola familia de medios para estas operaciones de generacin de informes.

Comprobar copias de seguridad Aunque no es obligatoria, la prctica de comprobar una copia de seguridad resulta til. La comprobacin de una copia de seguridad verifica que est intacta fsicamente, para asegurar que todos los archivos de la copia de seguridad se puedan leer y restaurar, y que se pueda restaurar la copia de seguridad en caso de necesidad. Es importante entender que la comprobacin de una copia de seguridad no verifica la estructura de los datos en la copia de seguridad. Sin embargo, si la copia de seguridad se cre usando WITH CHECKSUMS, la comprobacin de la copia de seguridad usando WITH CHECKSUMS puede proporcionar un buen indicativo de la confiabilidad de los datos de la copia de seguridad.

Comprobaciones de RESTORE VERIFYONLY

En SQL Server 2005 y las versiones posteriores, las comprobaciones realizadas por RESTORE VERIFYONLY incluyen:

Que el conjunto de copia de seguridad ha finalizado y todos los volmenes pueden leerse

Id. de pgina (como si se tratara de escribir los datos) Suma de comprobacin (si est presente en el medio)

228

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Comprobar que existe espacio suficiente en los dispositivos de destino

Restaurar una base de datos no garantiza que se pueda recuperar. Adems, una base de datos recuperada a partir de una copia de seguridad verificada podra tener un problema con sus datos. Esto sucede porque en la comprobacin de una copia de seguridad no se verifica que la estructura de los datos que contiene el conjunto de copia de seguridad sea correcta. Por ejemplo, aunque el conjunto de copia de seguridad se haya escrito correctamente, podra haber un problema de integridad de la base de datos en los archivos de base de datos que componen el conjunto. Sin embargo, si se cre una copia de seguridad con sumas de comprobacin de copia de seguridad, una copia de seguridad que se comprueba correctamente tiene muchas posibilidades de ser confiable. Nota: Transact-SQL tiene un conjunto de instrucciones DBCC que se utilizan para comprobar la integridad de una base de datos.

Detectar y copiar con errores de medios durante las copias de seguridad y restauracin Microsoft SQL Server 2005 y las versiones posteriores proporcionan la opcin de recuperar una base de datos a pesar de los errores detectados. Un importante mecanismo de deteccin de errores nuevo es la creacin opcional de una suma de comprobacin de copia de seguridad que se puede crear mediante una operacin de copia de seguridad y validar mediante una operacin de restauracin. Puede controlar si una operacin comprueba si hay errores y si la operacin se detiene o contina al encontrar un error. Si una copia de seguridad contiene una suma de comprobacin de copia de seguridad, las instrucciones RESTORE y RESTORE VERIFYONLY pueden comprobar si hay errores. Nota: Las copias de seguridad reflejadas proporcionan hasta cuatro copias (reflejos) de un conjunto de medios, ofreciendo copias alternativas para recuperar el sistema de los errores provocados por los medios daados.. Sumas de comprobacin durante la ejecucin de una sentencia BACKUP SQL Server admite tres tipos de sumas de comprobacin: una suma de comprobacin de pginas, una de bloques de registro y una de copia de seguridad. Al generar una suma de comprobacin de copia de seguridad, BACKUP comprueba que los datos que se leen de la base de datos son coherentes con cualquier suma de comprobacin o indicacin de pgina rasgada de la base de datos. La instruccin BACKUP calcula opcionalmente una suma de comprobacin de copia de seguridad en la secuencia de copia de seguridad; si hay una suma de comprobacin de pgina o informacin de pgina rasgada en determinada pgina, al hacer la copia de seguridad de la pgina, BACKUP comprueba tambin el estado de pgina rasgada, la suma de comprobacin y el Id. de la pgina. Al crear una suma de comprobacin de copia de seguridad, una operacin de copia de seguridad no agrega sumas de comprobacin a las pginas. Las pginas se copian tal y como estn en la base de datos y la copia de seguridad no las modifica. Debido a la carga que supone comprobar y generar sumas de comprobacin de seguridad, su utilizacin puede tener consecuencias negativas sobre el rendimiento. Pueden quedar afectados tanto la carga de trabajo como el rendimiento de la copia de seguridad. Por consiguiente, el uso de la suma de comprobacin de copia de seguridad es opcional. Cuando decida si va a generar sumas de comprobacin durante una copia de seguridad, supervise cuidadosamente la sobrecarga de CPU en la que se incurrir, as como el impacto sobre las posibles cargas de trabajo simultneas del sistema. Nota: BACKUP no modifica nunca la pgina de origen del disco ni el contenido de una pgina. Las opciones siguientes de BACKUP controlan el comportamiento de la suma de comprobacin de copia de seguridad:

CHECKSUM Solicita a la operacin de copia de seguridad que compruebe en cada pgina si hay suma de comprobacin y pgina rasgada (si est habilitada y disponible) y, tambin, que genere una suma de comprobacin para toda la copia de seguridad. Si se solicita que se compruebe la suma de comprobacin durante una operacin de copia de seguridad:

Antes de escribir una pgina en los medios de copia de seguridad, BACKUP comprueba la informacin a nivel de pgina (suma de comprobacin de pgina o deteccin de pgina rasgada), si existe. Si no existe esta informacin, la operacin de copia de seguridad no puede comprobar la pgina; la pgina se incluye tal cual y el contenido se agrega a la suma de comprobacin de copia de seguridad general.

Para un uso opcional en el momento de la restauracin, la copia de seguridad genera una suma de comprobacin de copia de seguridad independiente (una suma de comprobacin de copia de seguridad) y la registra en el medio de copia de seguridad, independientemente de si hay sumas de comprobacin de copia de seguridad o no.

o
Nota:

El conjunto de copia de seguridad se marca para indicar que contiene sumas de comprobacin de copia de seguridad (en la columna has_backup_checksums de msdb.backupset).

Para las copias de seguridad de registros, se generan y comprueban las sumas de comprobacin de copia de seguridad.

NO_CHECKSUM Deshabilita de forma explcita la validacin de pgina y la generacin de sumas de comprobacin de copia de seguridad. ste es el comportamiento predeterminado.

229

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Controlar la respuesta a un error Cuando se especifica CHECKSUMS, la copia de seguridad da error si BACKUP encuentra un error de pgina durante la comprobacin. Las opciones siguientes de BACKUP controlan este comportamiento:

CONTINUE_AFTER_ERROR Indica a BACKUP que contine aunque encuentre una suma de comprobacin de copia de seguridad no vlida. En ese caso, BACKUP: Indica en el conjunto de copia de seguridad de los medios de copia de seguridad que hay errores y realiza el seguimiento de la pgina en la tabla suspect_pages de la base de datos msdb.

o o o

Registra el error en el registro de errores de SQL Server.

Marca el conjunto de copia de seguridad como conjunto que contiene este tipo de error (en la columna is_damaged de msdb.backupset).

Emite un mensaje que indica que la copia de seguridad se gener correctamente, pero contiene errores de pgina.

STOP_ON_ERROR Indica a BACKUP que d error si no se comprueba una suma de comprobacin. ste es el comportamiento predeterminado.

Sumas de comprobacin durante RESTORE y RESTORE VERIFYONLY Si hay sumas de comprobacin de copia de seguridad en los medios de copia de seguridad, de forma predeterminada, las operaciones RESTORE y RESTORE VERIFYONLY comprueban las sumas de comprobacin de copia de seguridad y las sumas de comprobacin de pgina. Si no hay ninguna suma de comprobacin de copia de seguridad, cualquiera de las dos operaciones de restauracin contina sin realizar ninguna comprobacin; esto se debe a que, sin una suma de comprobacin de copia de seguridad, la restauracin no puede comprobar de forma confiable las sumas de comprobacin de pgina. Hay dos opciones, CHECKSUM y NO_CHECKSUM, que le permiten modificar cmo RESTORE y RESTORE VERIFYONLY controlan la forma de comprobar las sumas de comprobacin. Vea a continuacin:

CHECKSUM Si solicita de forma explcita a CHECKSUM para una operacin de restauracin y la copia de seguridad contiene sumas de comprobacin de copia de seguridad, se comprueban estas sumas y las sumas de comprobacin de pgina, como en el caso predeterminado. No obstante, si el conjunto de copia de seguridad no tiene sumas de comprobacin de copia de seguridad, la operacin de restauracin da error con un mensaje que indica que no hay sumas de comprobacin. NO_CHECKSUM Deshabilita de forma explcita la validacin predeterminada de las sumas de comprobacin por parte de la operacin de restauracin.

Controlar la respuesta a un error Para especificar el comportamiento de una operacin de restauracin al encontrar un error, use las siguientes opciones de RESTORE y RESTORE VERIFYONLY:

CONTINUE_AFTER_ERROR Especifica que la operacin de restauracin debe continuar despus de encontrar un error. ste es el comportamiento predeterminado de RESTORE VERIFYONLY, que le permite informar de errores de validacin y continuar, proporcionando la mxima informacin posible acerca del conjunto de copia de seguridad. CONTINUE_AFTER_ERROR indica a RESTORE que contine lo mejor que pueda. Esto hace que entre otras cosas, RESTORE omita la suma de comprobacin no vlida. STOP_ON_ERROR Especifica que la operacin de restauracin debe detenerse y dar error despus de encontrar el primer error. ste es el comportamiento predeterminado de RESTORE.

Usar conjuntos de medios de copia de seguridad reflejados

Los conjuntos de medios de copia de seguridad reflejados slo se admiten en SQL Server 2005 Enterprise Edition y en versiones posteriores. El hecho de crear un reflejo de un medio de copia de seguridad aumenta la confiabilidad de las copias de seguridad al reducir el impacto de los errores de funcionamiento de los dispositivos de copia de seguridad. Los errores de funcionamiento son muy graves porque las copias de seguridad son el ltimo recurso para evitar la prdida de datos. A medida que crecen las bases de datos, aumentan las posibilidades de que un error de un dispositivo o medio de copia de seguridad provoque que no se pueda restaurar una copia de seguridad. El hecho de crear un reflejo de los medios de copia de seguridad aumenta la confiabilidad de las copias de seguridad al proporcionar redundancia. Introduccin a los conjuntos de medios reflejados La creacin de reflejos de medios es una propiedad del conjunto de medios. Un conjunto de medios reflejado consta de varias copias (reflejos) de los conjuntos de medios. Un conjunto de medios incluye una o varias familias de medios, cada una de las cuales se corresponde con un dispositivo de copia de seguridad. Por ejemplo, si la clusula TO de una instruccin BACKUP DATABASE incluye tres dispositivos, BACKUP reparte los datos entre las tres familias de medios, una por dispositivo. El nmero de familias de medios y reflejos se define al crear el conjunto de medios (mediante una instruccin BACKUP DATABASE que especifica WITH FORMAT).

230

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Un conjunto de medios reflejado contiene entre dos y cuatro reflejos. Cada reflejo incluye todas las familias de medios del conjunto de medios. Los reflejos requieren el mismo nmero de dispositivos, uno por familia de medios. Cada reflejo requiere un dispositivo de copia de seguridad diferente por cada familia de medios. Por ejemplo, un conjunto de medios reflejado que consta de cuatro familias de medios con tres reflejos requiere doce dispositivos de copia de seguridad. Todos estos dispositivos deben ser equivalentes. Por ejemplo, unidades de cinta que tienen el mismo nmero de modelo del mismo fabricante. En la siguiente ilustracin se muestra un ejemplo de un conjunto de medios reflejado que incluye dos familias de medios con dos reflejos. Cada familia de medios incluye tres volmenes de medios, de los cuales se realiza una copia de seguridad por reflejo cada vez.

Los volmenes correspondientes en los reflejos tienen un contenido idntico. De este modo, sern intercambiables en el momento de la restauracin. Por ejemplo, en la ilustracin anterior, el tercer volumen de tape2 es intercambiable con el tercer volumen de tape0.

Especificar un conjunto de medios reflejado

Para especificar un conjunto de medios reflejado en una instruccin BACKUP, especifique el primer reflejo en la clusula TO. A continuacin, especifique cada reflejo en su propia clusula MIRROR TO. Las clusulas TO y MIRROR TO deben especificar el mismo nmero y tipo de dispositivo de copia de seguridad. En el siguiente ejemplo se crea el conjunto de medios reflejado de la ilustracin anterior y se realiza una copia de seguridad de la base de datos AdventureWorks en ambos reflejos. BACKUP DATABASE AdventureWorks TO TAPE = '\\.\tape0', TAPE = '\\.\tape1' MIRROR TO TAPE = '\\.\tape2', TAPE = '\\.\tape3' WITH FORMAT, MEDIANAME = 'AdventureWorksSet1'; GO

Requisitos de hardware para reflejos de copia de seguridad La creacin de reflejos se aplica tanto a los discos como a las cintas (los discos no admiten cintas de continuacin). Al igual que en las versiones anteriores de SQL Server, todos los dispositivos de copia de seguridad de una sola operacin de copia de seguridad o restauracin deben ser del mismo tipo, disco o cinta. Dentro de estas clases generales, se deben utilizar dispositivos similares con las mismas propiedades. Si los dispositivos no son lo suficientemente parecidos, aparecer el mensaje de error 3212. Para evitar problemas de disparidad, utilice dispositivos equivalentes, como unidades con el mismo nmero de modelo del mismo fabricante.

Funcionamiento de la creacin de reflejo de medios

Las operaciones de copias de seguridad y restauracin imponen distintos requisitos sobre la presencia de todos los reflejos. Para que una operacin de copia de seguridad escriba (es decir, cree o extienda) un conjunto de medios reflejado, todos los reflejos deben estar presentes. En cambio, una operacin de restauracin puede leer los medios de un solo reflejo por familia de medios cada vez. No obstante, si hay errores, el hecho de tener otros reflejos permite resolver algunos problemas de restauracin rpidamente. Esto se debe a que RESTORE y RESTORE VERIFYONLY admiten la sustitucin de medios daados por el volumen de medios de copia de seguridad correspondiente de otro reflejo. Tenga en cuenta que puede realizar restauraciones a partir de menos dispositivos que familias, pero cada familia de medios se procesar una sola vez. SQL Server Database Engine (Motor de base de datos de SQL Server) garantiza que el contenido de los medios reflejados es idntico mediante la sincronizacin de las escrituras en los dispositivos. Cuando se llena uno de los reflejos, se extienden todos los reflejos al mismo tiempo. Nota: Un conjunto de medios reflejado no se puede dividir implcitamente eliminando un reflejo. Si una cinta o un disco resulta daado o cambia de formato, no se podr utilizar el reflejo para nuevas copias de seguridad. Si al menos un reflejo permanece intacto, se podr leer el conjunto de medios. Si cada reflejo pierde una familia de medios determinada, no se podr utilizar el conjunto de medios.

231

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Ejecutar un script con la funcionalidad bsica

Normalmente, los scripts con la funcionalidad bsica se incluyen en los planes de recuperacin de desastres para confirmar que todo funciona como se espera. Un script con la funcionalidad bsica proporciona una herramienta confiable para que los administradores de sistemas o de bases de datos puedan comprobar que se ha recuperado la base de datos con un estado viable, sin tener que depender de los usuarios finales para llevar a cabo la comprobacin. Un script con la funcionalidad bsica es especfica de la aplicacin y puede adoptar muchas formas diferentes. Por ejemplo, en un sistema de informes o ayuda a la toma de decisiones, el script puede ser simplemente una copia de varias de las consultas para informes ms importantes. Para una aplicacin de procesamiento de transacciones en lnea (OLTP), el script puede ejecutar un lote de procedimientos almacenados que contengan instrucciones INSERT, UPDATE y DELETE. Por ejemplo, un script con la funcionalidad bsica puede ser tan simple como un archivo .sql que enva instrucciones SQL por lotes al servidor desde la utilidad sqlcmd. Otro ejemplo es usar un archivo .bat que contenga los comandos bcp y sqlcmd.

Garantizar la disposicin para afrontar desastres Para asegurarse de que est preparado para hacer frente a desastres, se recomienda que realice las siguientes tareas de forma peridica:

Compruebe los procedimientos de copia de seguridad y recuperacin antes de que se produzca un error real. Las comprobaciones le ayudan a asegurarse de que cuenta con las copias de seguridad necesarias para recuperarse de diversos errores, que sus procedimientos estn perfectamente definidos y documentados y que cualquier operario cualificado puede ejecutarlos rpidamente y sin problemas. Para que la cantidad de datos perdidos sea mnima, realice peridicamente copias de seguridad de las bases de datos y los registros de transacciones. Se recomienda realizar copias de seguridad del sistema y de las bases de datos de los usuarios. Mantenga los registros del sistema de manera segura. Conserve registros de todos los Service Pack instalados en Microsoft Windows y SQL Server. Conserve registros de las bibliotecas de red usadas y del modo de seguridad. Asimismo, si SQL Server se ejecuta en autenticacin de modo mixto (modo de autenticacin de SQL Server y de Windows), guarde la contrasea de sa en un lugar seguro. Importante: La autenticacin de Windows es mucho ms segura que la de SQL Server. Siempre que sea posible, utilice la autenticacin de Windows.

En otro servidor, evale por anticipado los pasos que debe seguir para la recuperacin de un desastre, modifquelos segn sea necesario para ajustarlos a su entorno de servidor local y compruebe los pasos modificados. Conserve un script con la funcionalidad bsica a fin de evaluar rpidamente la capacidad mnima.

Revisar y reducir los posibles errores desastrosos del usuario

Uno de los escenarios de recuperacin ms difciles es recuperarse de un error de usuario importante, como quitar objetos de la base de datos de forma accidental. En esta seccin se enumeran herramientas que le pueden ayudar a revisar y en algunos casos a regular los cambios efectuados a las bases de datos.

Desencadenadores del lenguaje de definicin de datos (DDL) Estos desencadenadores se pueden crear para revisar y regular algunos cambios del esquema de base de datos. Los desencadenadores DDL activan procedimientos almacenados en respuesta a una variedad de instrucciones DDL. Estas instrucciones son bsicamente las que empiezan por CREATE, ALTER y DROP. El mbito de un desencadenador DDL puede ser una base de datos determinada o una instancia de servidor completa. Notificaciones de eventos Las notificaciones de eventos se ejecutan en respuesta a una variedad de instrucciones DDL de Transact-SQL y eventos de la traza de SQL, y envan informacin acerca de esos eventos a un servicio de Service Broker. Se pueden programar notificaciones de eventos para muchos de los eventos capturados por Traza de SQL, Pero, en lugar de usarlas para crear trazas, puede usar dichas notificaciones para realizar una accin en una instancia de SQL Server como respuesta a eventos. Dado que las notificaciones de eventos se ejecutan de forma asincrnica, estas acciones no consumen recursos definidos por la transaccin inmediata. Nota: No todos los eventos DDL se pueden utilizar en desencadenadores DDL. Algunos eventos estn diseados nicamente para instrucciones asincrnicas, no transaccionales. Por ejemplo, en un desencadenador DDL no se puede utilizar un evento CREATE DATABASE. Para estos eventos debe utilizar notificaciones de eventos.

Agente SQL Server Se trata de un servicio de Windows que ejecuta tareas administrativas programadas, denominadas trabajos. El Agente SQL Server utiliza SQL Server para almacenar informacin de los trabajos. Entre otras cosas, el Agente SQL Server puede ejecutar un trabajo en respuesta a un evento concreto; por ejemplo, errores que tienen un nivel de gravedad o un nmero de mensaje especficos.

232

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Traza de SQL La traza de SQL proporciona procedimientos almacenados del sistema Transact-SQL para crear trazas sobre clases de eventos seleccionadas por el usuario en una instancia de SQL Server Database Engine (Motor de base de datos de SQL Server). Puede utilizar estos procedimientos almacenados del sistema desde sus propias aplicaciones para crear trazas manualmente. Nota: El Analizador de SQL Server es una interfaz grfica de usuario de la traza de SQL que se usa para supervisar una instancia de Database Engine (Motor de base de datos) o Analysis Services.

16 Disear una estrategia de recuperacin. Considerar: pginas, archivos, grupos de archivos, restauraciones parciales y en lnea, usuarios hurfanos, reconstruccin de instancias, consideraciones de encriptacin, controlando las fallas del medio, logs de transacciones, puntos en tiempo y marcas de recuperacin, streams Informacin general sobre restauracin y recuperacin (SQL Server) SQL Server admite la restauracin de datos en los siguientes niveles:

La base de datos (una restauracin completa de la base de datos) Se restaura y recupera toda la base de datos, que permanece sin conexin durante las operaciones de restauracin y recuperacin. El archivo de datos (una restauracin de archivos) Se restaura y recupera un archivo de datos o conjunto de archivos. Durante la restauracin de un archivo, los grupos de archivo que incluyen los archivos se desconectan de forma automtica mientras dure el proceso de restauracin. Cualquier intento de obtener acceso a un grupo de archivos sin conexin genera un error. Nota: No se pueden realizar copias de seguridad de tablas individuales, ni restaurarlas.

La pgina de datos (una restauracin de pginas) Con el modelo de recuperacin completa o el modelo de recuperacin optimizado para cargas masivas de registros, puede restaurar bases de datos individuales. Las restauraciones de pginas pueden utilizarse con cualquier base de datos, independientemente del nmero de grupos de archivos.

Nota: En SQL Server 2008, puede restaurar una copia de seguridad de base de datos creada con SQL Server 2000, SQL Server 2005 o SQL Server 2008. Sin embargo, las copias de seguridad las bases de datos maestra, de modelo y msdb creadas mediante SQL Server 2000 o SQL Server 2005 no pueden restaurarse con SQL Server 2008. Asimismo, las copias de seguridad de SQL Server 2008 no se pueden restaurar con versiones anteriores de SQL Server. Las copias de seguridad y restauracin de SQL Server funcionan en todos los sistemas operativos admitidos, tanto si se trata de sistemas de 64 o de 32 bits.

Escenarios de restauracin Un escenario de restauracin en SQL Server es el proceso de restaurar datos de una o ms copias de seguridad y, a continuacin, recuperar la base de datos. Los escenarios de restauracin admitidos dependen del modelo de recuperacin de la base de datos y de la edicin de SQL Server. La siguiente tabla presenta los posibles escenarios de restauracin compatibles para diferentes modelos de recuperacin. Escenario de Modelo de recuperacin simple restauracin Modelo de recuperacin completa o modelo de recuperacin optimizado para cargas masivas de registros

Restauracin completa de la base de datos

Restauracin archivos*

de Restauracin de uno o ms archivos de slo Restaura uno o ms archivos, sin restaurar la base de datos lectura daados, sin restaurar la base de datos completa. La restauracin de archivos puede realizarse mientras la completa. La restauracin de archivos est base de datos est sin conexin o, en algunas ediciones de SQL disponible slo si la base de datos tiene como Server 2005 y posteriores, cuando est en lnea. Durante la mnimo un grupo de archivos de slo lectura. restauracin de archivos, los grupos de archivos en los que se incluyen los archivos en cuestin permanecen siempre sin conexin.

233

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Restauracin pginas

de No aplicable

Restaura una o ms pginas daadas. La restauracin de pginas puede realizarse mientras la base de datos est sin conexin o, en algunas ediciones de SQL Server 2005 y posteriores, cuando est en lnea. Durante la restauracin de pginas, las pginas que se estn restaurando permanecen siempre sin conexin. Es preciso que haya disponible una cadena intacta de copias de seguridad de registros, hasta el archivo de registro actual, y deben aplicarse todas a fin de actualizar la pgina segn el archivo de registro actual.

Restauracin por Restauracin y recuperacin de la base de Restauracin y recuperacin de la base de datos por etapas a nivel etapas * datos por etapas a nivel de grupo de archivos, del grupo de archivos, empezando por el grupo de archivos empezando por el grupo de archivos principal y principal. todos los grupos de archivos secundarios de lectura/escritura. * La restauracin en lnea slo se admite en SQL Server 2005 Enterprise Edition y versiones posteriores. Independientemente de la forma de restauracin de datos, antes de que una base de datos se pueda recuperar, SQL Server Database Engine (Motor de base de datos de SQL Server) garantiza la coherencia lgica de toda la base de datos. Por ejemplo, si restaura un archivo, no puede recuperarlo y conectarlo hasta que se haya puesto al da hasta un punto lo bastante avanzado de forma que sea coherente con la base de datos.

Ventajas de la restauracin de archivos o pginas La restauracin y recuperacin de archivos o pginas, en lugar de toda la base de datos, ofrece las siguientes ventajas:

La restauracin de menos datos reduce el tiempo necesario para copiarlos y recuperarlos. En SQL Server 2005 Enterprise Edition y versiones posteriores, es posible que la restauracin de archivos o pginas permita que otros datos de la base de datos permanezcan en lnea durante la operacin de restauracin.

Modelos de recuperacin y operaciones de restauracin admitidas Las operaciones de restauracin disponibles para una base de datos dependen de su modelo de recuperacin. En la tabla siguiente se resumen todos los modelos de recuperacin y las diferentes situaciones de restauracin en las que funcionaran. Operacin restauracin de Modelo de completa recuperacin Modelo de recuperacin optimizado Modelo de recuperacin simple para cargas masivas de registros

Recuperacin de datos

Recuperacin completa (si el Existe el riesgo de perder algunos datos. registro est disponible).

Se perdern los datos desde la ltima copia de seguridad completa o diferencial.

Restauracin momento dado

un Cualquier registros.

momento

cubierto No est permitida si la copia de seguridad No compatible. registros contiene algn cambio registrado de forma masiva.

por las copias de seguridad de de

Restauracin archivos*

de Totalmente compatible.

A veces.

Slo est disponible para archivos secundarios de slo lectura.

Restauracin pginas*

de Totalmente compatible.

A veces.

Ninguna.

Restauracin archivos)*

por Totalmente compatible.

A veces.

Slo est disponible para archivos secundarios de slo lectura.

etapas (de grupos de

* Slo est disponible en SQL Server 2005 Enterprise Edition y versiones posteriores.

Implementar escenarios de restauracin para bases de datos de SQL Server

234

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Un escenario de restauracin es un proceso en el que se restauran datos de una o varias copias de seguridad y se recupera la base de datos cuando se restaura la copia de seguridad ms reciente. Planear y llevar a cabo secuencias de restauracin (modelo de recuperacin completa) Este tema es relevante para las bases de datos de SQL Server que utilizan habitualmente el modelo de recuperacin completa. Una secuencia de restauracin es una secuencia formada por una o varias instrucciones RESTORE. Por lo general, una secuencia de restauracin inicializa el contenido de la base de datos, archivos y/o pginas que se van a restaurar (la fase de copia de datos), pone al da las transacciones registradas (fase de rehacer) y revierte las transacciones no confirmadas (fase de deshacer). En los casos ms sencillos, la secuencia de restauracin slo requiere una copia de seguridad completa de la base de datos, una copia de seguridad diferencial de la base de datos y las copias de seguridad de registros subsiguientes. En estos casos, la creacin de una secuencia de restauracin correcta es fcil. Por ejemplo, para restaurar una base de datos completa al punto de error, empiece por hacer una copia de seguridad del registro de transacciones activo (el final del registro). A continuacin, restaure la copia de seguridad ms reciente de la base de datos completa, la copia de seguridad diferencial ms reciente (si la hay) y todas las copias de seguridad de registros subsiguientes en el orden en que se realizaron. En casos ms complejos, la creacin de una secuencia de restauracin correcta puede ser un proceso complejo. Por ejemplo, una secuencia de restauracin podra requerir varias copias de seguridad de archivos o la restauracin de los datos a un momento dado. En casos muy complejos, podra ser necesario recorrer una ruta de recuperacin bifurcada que abarque una o varias bifurcaciones de recuperacin. Planear una secuencia de restauracin Antes de iniciar una secuencia de restauracin, siga estos pasos: 1. 2. Cree una copia del final del registro de la base de datos, si puede. Determine el punto de recuperacin de destino. El punto de recuperacin de destino puede ser cualquier momento dado o cualquier marca de la copia de seguridad de un registro de transacciones. Determine el tipo de restauracin que desee realizar:

3.

o o o o
4.

Realizar una restauracin completa de la base de datos (modelo de recuperacin completa)

Realizar restauraciones de archivos (modelo de recuperacin completa)

Realizar restauraciones de pginas

Realizar restauraciones por etapas

Identifique qu copias de seguridad son necesarias y asegrese de que estn disponibles los conjuntos de medios y los dispositivos de copia de seguridad necesarios.

Realizar una secuencia de restauracin Para llevar a cabo una secuencia de restauracin, siga estos pasos: 1. Para empezar la secuencia, restaure una o varias copias de seguridad de los datos, como una copia de seguridad de la base de datos, una copia de seguridad parcial, o una o varias copias de seguridad de archivos. Si lo desea, restaure las copias de seguridad diferenciales ms recientes que se basan en estas copias de seguridad completas. Para cada copia de seguridad completa que piense restaurar, determine si es la base de alguna copia de seguridad diferencial. Si es as, restaure la copia de seguridad diferencial ms reciente, si se puede. Ponga al da la base de datos mediante la restauracin de las copias de seguridad de registros en secuencia, terminando con la copia de seguridad que contenga el punto de recuperacin. Que tenga que aplicar todas las copias de seguridad de registros depende de la copia de seguridad de registros que contenga el punto de recuperacin de destino, como se indica a continuacin:

2.

3.

o o

Si el punto de recuperacin es el punto de un error, debe restaurar todas las copias de seguridad de registros creadas desde la ltima copia de seguridad (completa o diferencial) de datos restaurada.

Para las restauraciones a un momento dado, podra no necesitar las copias de seguridad de registros ms recientes.

Reiniciar una secuencia de restauracin Si encuentra algn problema con el resultado de una secuencia de restauracin, puede salir de ella y reiniciarla desde el principio. Por ejemplo, si accidentalmente restaura demasiadas copias de seguridad de registros y se supera el punto de recuperacin deseado, debe reiniciar la secuencia de restauracin hasta la copia de seguridad de registros que contenga el punto de recuperacin de destino. Realizar una restauracin de base de datos completa (modelo de recuperacin simple)

235

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
El objetivo de una restauracin completa de la base de datos es restaurar la base de datos completa. Durante el proceso de restauracin, la base de datos completa se encuentra sin conexin. Antes de que ninguna parte de la base de datos est en lnea, se recuperan todos los datos a un punto coherente en el que todas las partes de la base de datos se encuentran en el mismo momento y en el que no existe ninguna transaccin sin confirmar. En el modelo de recuperacin simple, no se puede restaurar la base de datos a un momento concreto de una copia de seguridad especfica. Restaurar una base de datos completa 1. Una restauracin completa de base de datos con el modelo de recuperacin simple implica una o dos instrucciones RESTORE, en funcin de si se debe restaurar o no una copia de seguridad diferencial de la base de datos.

Si slo usa copias de seguridad completas de la base de datos, restaure slo la copia de seguridad ms reciente, como se muestra en la siguiente ilustracin.

Si tambin usa una copia de seguridad diferencial de la base de datos, restaure la copia de seguridad completa ms reciente de la base de datos sin recuperar la base de datos y, a continuacin, restaure la copia de seguridad diferencial ms reciente de la base de datos y recupere la base de datos. En la siguiente ilustracin se muestra este proceso.

Al restaurar completamente una base de datos, debe utilizar una nica secuencia de restauracin. En el siguiente ejemplo se muestran las opciones crticas de una secuencia de restauracin en un escenario de restauracin de base de datos completa. Una secuencia de restauracin est formada por una o ms operaciones de restauracin que mueven los datos mediante una o varias fases de restauracin. La sintaxis y los detalles no relevantes para este propsito se omiten.

236

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
La base de datos se restaura a su estado de copia de seguridad completa de base de datos. Al recuperar una base de datos, se recomienda especificar explcitamente la opcin RECOVERY por motivos de claridad, aunque es la opcin predeterminada.

Ejemplo En el siguiente ejemplo se muestra primero cmo usar la instruccin BACKUP para crear una copia de seguridad completa y diferencial de la base de datos AdventureWorks. A continuacin, se restauran estas copias de seguridad una despus de la otra. Nota: En el ejemplo se comienza con una instruccin ALTER DATABASE que establece el modelo de recuperacin como SIMPLE. USE master; --Make sure the database is using the simple recovery model. ALTER DATABASE AdventureWorks SET RECOVERY SIMPLE; GO -- Back up the full AdventureWorks database. BACKUP DATABASE AdventureWorks TO DISK = 'Z:\SQLServerBackups\AdventureWorks.bak' WITH FORMAT; GO --Create a differential database backup. BACKUP DATABASE AdventureWorks TO DISK = 'Z:\SQLServerBackups\AdventureWorks.bak' WITH DIFFERENTIAL; GO --Restore the full database backup (from backup set 1). RESTORE DATABASE AdventureWorks FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak' WITH FILE=1, NORECOVERY; --Restore the differential backup (from backup set 2). RESTORE DATABASE AdventureWorks FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak' WITH FILE=2, RECOVERY; GO

Para restaurar una copia de seguridad completa de la base de datos La sintaxis RESTORE bsica para restaurar una copia de seguridad de la base de datos es: RESTORE DATABASE database_name FROM backup_device [ WITH NORECOVERY ] Nota: Use WITH NORECOVERY si tambin desea restaurar una copia de seguridad diferencial de la base de datos.

Restaurar una copia de seguridad de la base de datos (Transact-SQL) Restaurar una copia de seguridad de base de datos (SQL Server Management Studio)

Crear una nueva base de datos a partir de una copia de seguridad de base de datos existente (SQL Server Management Studio)

Para restaurar una copia de seguridad diferencial de la base de datos La sintaxis RESTORE bsica para restaurar una copia de seguridad diferencial de la base de datos es: RESTORE DATABASE database_name FROM backup_device WITH RECOVERY

Restaurar una copia de seguridad diferencial de la base de datos (Transact-SQL)

Restaurar una copia de seguridad diferencial de base de datos (SQL Server Management Studio)

Para restaurar una copia de seguridad mediante los objetos de administracin de SQL Server (SMO)

SqlRestore

Compatibilidad con copias de seguridad de versiones anteriores de SQL Server En SQL Server 2008, puede restaurar una copia de seguridad de base de datos creada con SQL Server 2000, SQL Server 2005 o SQL Server 2008. Sin embargo, las copias de seguridad las bases de datos maestra, de modelo y msdb creadas mediante SQL Server 2000 o SQL Server 2005 no pueden restaurarse con SQL Server 2008. Asimismo, las copias de seguridad de SQL Server 2008 no se pueden restaurar con versiones anteriores de SQL Server. SQL Server 2008 utiliza una ruta de acceso predeterminada distinta a la de las versiones anteriores. Por lo tanto, para restaurar una base de datos creada en la ubicacin predeterminada de las copias de seguridad de SQL Server 2000 o SQL Server 2005, es preciso utilizar la opcin MOVE. Nota:

237

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Realizar una restauracin completa de la base de datos (modelo de recuperacin completa)

El objetivo de una restauracin completa de la base de datos es restaurar toda la base de datos. Durante el proceso de restauracin, la base de datos completa se encuentra sin conexin. Antes de que ninguna parte de la base de datos est en lnea, se recuperan todos los datos a un punto coherente en el que todas las partes de la base de datos se encuentran en el mismo momento y en el que no existe ninguna transaccin sin confirmar. Con el modelo de recuperacin completa, la base de datos se puede restaurar a un momento concreto. Dicho momento puede ser la copia de seguridad disponible ms reciente, una fecha y hora especficas, o una transaccin marcada. Nota de seguridad: Se recomienda no adjuntar ni restaurar bases de datos de orgenes desconocidos o que no sean de confianza. Estas bases de datos pueden contener cdigo malintencionado que podra ejecutar cdigo Transact-SQL inesperado o provocar errores debido a la modificacin del esquema o de la estructura de la base de datos fsica. Para utilizar una base de datos procedente de un origen desconocido o que no sea de confianza, ejecute DBCC CHECKDB en la base de datos de un servidor que no sea de produccin y examine tambin el cdigo, como procedimientos almacenados u otro cdigo definido por el usuario, en la base de datos. Restaurar una base de datos completa En general, la recuperacin de una base de datos hasta el momento del error incluye los siguientes pasos bsicos: 1. Realizar una copia de seguridad del registro de transacciones activo (denominado el final del registro). De esta forma se crea una copia del final del registro. Si el registro de transacciones activo no est disponible, todas las transacciones de esa parte del registro se pierden. Importante: En el modelo de recuperacin optimizado para cargas masivas de registros, realizar la copia de seguridad de un registro que contiene operaciones de registro masivo requiere acceso a todos los archivos de datos de la base de datos. Si no se puede tener acceso a los archivos de datos, no se puede realizar una copia de seguridad del registro de transacciones. En ese caso, debe repetir manualmente todos los cambios realizados desde la copia de seguridad de registros ms reciente.

2. 3.
4.

Restaurar la copia de seguridad completa ms reciente sin recuperar la base de datos (RESTORE DATABASE database_name WITH NORECOVERY).

Si existen copias de seguridad diferenciales, restaurar la ms reciente sin recuperar la base de datos (RESTORE DATABASE database_name FROM differential_backup_device WITH NORECOVERY). Restaurar los registros secuencialmente con la opcin NORECOVERY, comenzando por la primera copia de seguridad de registros de transacciones creada despus de la copia de seguridad que se acaba de restaurar.

5.
6.

Recuperar la base de datos (RESTORE DATABASE database_name WITH RECOVERY). Como alternativa, este paso se puede combinar con la restauracin de la ltima copia de seguridad de registros. Una restauracin completa de la base de datos normalmente se puede recuperar hasta un punto o transaccin marcada en una copia de seguridad de registros. Sin embargo, en el modelo de recuperacin optimizado para cargas masivas de registros, si la copia de seguridad de registros contiene cambios de registros de operaciones masivas, no es posible la recuperacin a un momento dado.

En la siguiente ilustracin se muestra este proceso. Despus de que se produzca un error (1), se crea una copia del final del registro (2). A continuacin, la base de datos se restaura al punto del error. Esto implica la restauracin de una copia de seguridad de la base de datos, de una copia de seguridad diferencial subsiguiente, y de cada copia de seguridad del registro realizada despus de la copia de seguridad diferencial, incluida la copia del final del registro.

238

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Al restaurar completamente una base de datos, debe utilizar una nica secuencia de restauracin. En el siguiente ejemplo se muestran las opciones ms importantes de una secuencia de restauracin para el caso de una restauracin completa en que la base de datos se restaura al momento del error. Una secuencia de restauracin consta de dos o ms operaciones de restauracin que mueven datos en una o varias fases de restauracin. La sintaxis y los detalles no relevantes para este propsito se omiten. La base de datos se restaura y se pone al da. Para reducir el tiempo de puesta al da se utiliza una copia diferencial de la base de datos. Esta secuencia de restauracin est orientada a eliminar la prdida de trabajo; la ltima copia de seguridad que se restaura es una copia del final del registro. La sintaxis bsica de RESTORE para la secuencia de restauracin es:

1. 2. 3. 4.
Ejemplo

RESTORE DATABASE database FROM full database backup WITH NORECOVERY;

RESTORE DATABASE database FROM full_differential_backup WITH NORECOVERY;

RESTORE LOG database FROM log_backup WITH Repita este paso de restauracin del registro para cada copia de seguridad de registros adicional.

NORECOVERY;

RESTORE DATABASE database WITH RECOVERY;

En el ejemplo siguiente, la base de datos de ejemplo AdventureWorks se configur de forma que utilice el modelo de recuperacin completa antes de que se realice la copia de seguridad. En el ejemplo, se crea una copia del final del registro de la base de datos AdventureWorks. A continuacin, en el ejemplo se restaura una copia de seguridad completa anterior de la base de datos y una copia de seguridad de registros; por ltimo, en el ejemplo se restaura la copia del final del registro. En el ejemplo, se recupera la base de datos en un ltimo paso independiente. Nota: En este ejemplo se usa una copia de seguridad de base de datos y una copia de seguridad de registros. En el ejemplo se comienza con una instruccin ALTER DATABASE que establece el modelo de recuperacin como FULL. USE master; --Create tail-log backup. BACKUP LOG AdventureWorks TO DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak' WITH NORECOVERY; GO --Restore the full database backup (from backup set 1). RESTORE DATABASE AdventureWorks

239

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak' WITH FILE=1, NORECOVERY; --Restore the regular log backup (from backup set 2). RESTORE LOG AdventureWorks FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak' WITH FILE=2, NORECOVERY; --Restore the tail-log backup (from backup set 3). RESTORE LOG AdventureWorks FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak' WITH FILE=3, NORECOVERY; GO --recover the database: RESTORE DATABASE AdventureWorks WITH RECOVERY; GO Recuperar al momento del error Para restaurar una copia de seguridad completa de la base de datos

Restaurar una copia de seguridad de la base de datos (Transact-SQL) Restaurar una copia de seguridad de base de datos (SQL Server Management Studio)

Crear una nueva base de datos a partir de una copia de seguridad de base de datos existente (SQL Server Management Studio)

Importante: Para restaurar una copia de seguridad de la base de datos en una instancia de servidor distinta. Para restaurar una copia de seguridad diferencial de la base de datos

Restaurar una copia de seguridad diferencial de la base de datos (Transact-SQL)

Restaurar una copia de seguridad diferencial de base de datos (SQL Server Management Studio)

Para restaurar una copia de seguridad del registro de transacciones Despus de restaurar la copia o copias de seguridad de los datos, debe restaurar todas las copias de seguridad de registros de transacciones posteriores y, a continuacin, recuperar la base de datos.

Aplicar una copia de seguridad del registro de transacciones (Transact-SQL)

Restaurar copias de seguridad del registro de transacciones (SQL Server Management Studio)

Para restaurar una copia de seguridad mediante los objetos de administracin de SQL Server (SMO)

SqlRestore

Recuperar base de datos a un momento concreto En el modelo de recuperacin completa, una base de datos se puede restaurar a un momento concreto de una copia de seguridad de registros. El momento concreto puede ser una fecha y hora especficas, una transaccin marcada o un nmero de secuencia de registro (LSN).

Compatibilidad con copias de seguridad de versiones anteriores de SQL Server En SQL Server 2008, puede restaurar una copia de seguridad de base de datos creada con SQL Server 2000, SQL Server 2005 o SQL Server 2008. Sin embargo, las copias de seguridad las bases de datos maestra, de modelo y msdb creadas mediante SQL Server 2000 o SQL Server 2005 no pueden restaurarse con SQL Server 2008. Asimismo, las copias de seguridad de SQL Server 2008 no se pueden restaurar con versiones anteriores de SQL Server. SQL Server 2008 utiliza una ruta de acceso predeterminada distinta a la de las versiones anteriores. Por lo tanto, para restaurar una base de datos creada en la ubicacin predeterminada de las copias de seguridad de SQL Server 2000 o SQL Server 2005, es preciso utilizar la opcin MOVE. Realizar restauraciones en lnea La restauracin en lnea slo se admite en SQL Server 2005 Enterprise Edition y versiones posteriores. En esta versin, la restauracin de un archivo, una pgina o por etapas es en lnea de manera predeterminada. Este tema es relevante para las bases de datos que incluyen varios archivos o grupos de archivos y, en el modelo de recuperacin simple, slo para grupos de archivos de slo lectura.

240

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
La restauracin de datos mientras la base de datos est en lnea se denomina restauracin en lnea. Se considera que una base de datos est en lnea siempre que el grupo de archivos principal est en lnea, aunque alguno de los grupos de archivos secundarios est sin conexin. En todos los modelos de recuperacin se puede restaurar un archivo sin conexin mientras la base de datos est en lnea. En el modelo de recuperacin completa, tambin se pueden restaurar pginas mientras la base de datos est en lnea. Nota: La restauracin en lnea tiene lugar automticamente en SQL Server 2005 Enterprise Edition y las versiones posteriores y no requiere ninguna accin por parte del usuario. Si no desea utilizar la restauracin en lnea, puede desconectar una base de datos antes de iniciar la restauracin. Durante una operacin de restauracin de archivos en lnea, los archivos que se estn restaurando y su grupo de archivos estn sin conexin. Si algunos de dichos archivos est en lnea cuando se inicia una restauracin en lnea, la primera instruccin de la restauracin desconecta el grupo de archivos al que pertenece el archivo. Por el contrario, durante una restauracin en lnea de una pgina, slo esa pgina est sin conexin. El escenario de restauracin en lnea implica los siguientes pasos bsicos: 1. 2. Restaure los datos. Restaure el registro utilizando WITH RECOVERY para la ltima restauracin del registro. As, se ponen en lnea los datos restaurados.

A veces, una transaccin sin confirmar no se puede revertir porque los datos necesarios para la operacin de reversin estn sin conexin durante el inicio. En ese caso, la transaccin se difiere. Nota: Si la base de datos est usando en ese momento el modelo de recuperacin optimizado para cargas masivas de registros, es recomendable cambiar al modelo de recuperacin completa antes de iniciar la restauracin en lnea. Importante: Si las copias de seguridad se realizaron con varios dispositivos conectados al servidor, ser necesario que los mismos dispositivos estn disponibles durante una restauracin en lnea. Copias de seguridad de registros para una restauracin en lnea En el caso de una restauracin en lnea, el punto de recuperacin es el punto donde se dejaron sin conexin los datos que se van a restaurar o se convirtieron en datos de slo lectura por ltima vez. Las copias de seguridad del registro de transacciones que llevan a este punto de recuperacin y lo incluyen deben estar todas disponibles. Normalmente, es necesario hacer una copia de seguridad de registros despus de ese punto para cubrir el punto de recuperacin del archivo. La nica excepcin tiene lugar durante una restauracin en lnea de datos de slo lectura a partir de una copia de seguridad de datos que se realiz despus de que los datos pasaran a ser de slo lectura. En ese caso, no es necesario disponer de una copia de seguridad de registros. En general, puede realizar copias de seguridad del registro de transacciones mientras la base de datos est en lnea, incluso despus de iniciar la secuencia de restauracin. El momento oportuno para la realizacin de la ltima copia de seguridad de registros depende de las propiedades del archivo que se va a restaurar:

En el caso de un archivo en lnea de slo lectura, puede realizar la ltima copia de seguridad de registros necesaria para la recuperacin antes o durante la primera secuencia de restauracin. Un grupo de archivos de slo lectura no necesita copias de seguridad de registros si se realiz una copia de seguridad de datos o diferencial despus de haber configurado el grupo de archivos como de slo lectura. Nota: La informacin anterior se puede aplicar tambin a todos los archivos sin conexin.

Un caso especial es un archivo de lectura/escritura que estaba en lnea cuando se emiti la primera instruccin de restauracin y que, a continuacin, dicha instruccin dej sin conexin automticamente. En este caso, debe realizar una copia de seguridad de registros durante la primera secuencia de restauracin (secuencia de una o varias instrucciones RESTORE que restauran, ponen al da y recuperan los datos). Por lo general, esta copia de seguridad de registros debe tener lugar despus de que se hayan restaurado todas las copias de seguridad completas y antes de recuperar los datos. No obstante, si hay varias copias de seguridad de archivos para un grupo de archivos concreto, el punto mnimo de copia de seguridad de registros es despus de que el grupo de archivos quede sin conexin. Esta copia de seguridad de registros posterior a la restauracin de datos capta el punto en el que se dej el archivo sin conexin y es necesaria porque SQL Server Database Engine (Motor de base de datos de SQL Server) no puede utilizar un registro en lnea para una restauracin en lnea. Nota: Como alternativa, puede dejar el archivo sin conexin manualmente antes de la secuencia de restauracin.

Desconectar una base de datos o un archivo Si no desea utilizar la restauracin en lnea, puede desconectar la base de datos antes de iniciar la secuencia de restauracin; para ello, puede usar uno de los mtodos siguientes:

241

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
En todos los modelos de recuperacin puede desconectar la base de datos utilizando la siguiente instruccin ALTER DATABASE: ALTER DATABASE database_name SET OFFLINE Si lo desea, en el modelo de recuperacin completa, puede forzar que la restauracin de un archivo o una pgina sea sin conexin; para ello, utilizando la siguiente instruccin BACKUP LOG la base de datos se pone en el estado de restauracin: BACKUP LOG database_name WITH NORECOVERY.

Siempre que la base de datos permanezca sin conexin, todas las restauraciones sern sin conexin.

Realizar restauraciones de archivos (modelo de recuperacin simple) Este tema solo es relevante para las bases de datos de modelo simple que incluyen como mnimo un grupo de archivos secundario de slo lectura. El objetivo de una restauracin de archivos consiste en restaurar uno o varios archivos daados sin necesidad de restaurar la totalidad de la base de datos. En el modelo de recuperacin simple, las copias de seguridad de archivos se admiten nicamente para los archivos de slo lectura. El grupo de archivos primario y los grupos de archivos secundarios de lectura/escritura se restauran siempre juntos, mediante la restauracin de una base de datos o de una copia de seguridad parcial. Todas las ediciones de SQL Server admiten la restauracin de archivos cuando la base de datos est sin conexin (restauraciones de pginas sin conexin). SQL Server 2005 Standard, SQL Server 2005 Express Edition, SQL Server 2005 Workgroup y las versiones posteriores solo admiten la restauracin sin conexin, y restaurar un archivo al grupo de archivos principal requiere siempre que la base de datos est sin conexin. SQL Server 2005 Enterprise Edition y las versiones posteriores utilizan la restauracin sin conexin si la base de datos ya est sin conexin. En SQL Server 2005 Enterprise Edition y versiones posteriores, si la base de datos est en lnea durante una restauracin de archivos, permanecer en lnea. La restauracin y recuperacin de un archivo mientras la base de datos est en lnea se denomina restauracin de archivos con conexin. Estos escenarios de restauracin de archivos son los siguientes:

Restauracin de archivos sin conexin En una restauracin de archivos sin conexin, la base de datos permanece desconectada mientras se restauran los archivos o grupos de archivos daados. Al final de la secuencia de restauracin, la base de datos pasar a estar conectada. Restauracin de archivos con conexin En SQL Server 2005 Enterprise Edition y versiones posteriores, las restauraciones de archivos se realizan automticamente en lnea cuando la base de datos est en lnea. Sin embargo, cualquier grupo de archivos en el que se restaura un archivo estar sin conexin. Una vez recuperados todos los archivos de un grupo de archivos sin conexin, ste se conecta automticamente. Nota: Cuando la base de datos est en lnea, su grupo de archivos primario y todos los de lectura/escritura estarn en lnea. Slo se pueden consultar o actualizar los grupos de archivos conectados. Si se intenta tener acceso a un grupo de archivos sin conexin, incluidos los que contienen un archivo que se est restaurando o recuperando, se producir un error.

Restauracin de archivos o grupos de archivos Un escenario de restauracin de archivos est formado por una nica secuencia de restauracin que copia, pone al da y recupera los datos apropiados de la siguiente manera: Para restaurar uno o varios archivos daados a partir de copias de seguridad de archivos y de copias de seguridad diferenciales de archivos 1. 2. Restaure cada archivo daado a partir de su copia de seguridad de archivo ms reciente. Restaure la copia de seguridad diferencial de archivos ms reciente para cada archivo restaurado y recupere la base de datos.

Para restaurar archivos y grupos de archivos

Restaurar archivos y grupos de archivos (Transact-SQL) Restaurar archivos y grupos de archivos sobre archivos existentes (Transact-SQL)

Restaurar archivos y grupos de archivos (SQL Server Management Studio) SqlRestore (SMO)

Secuencia de restauracin de Transact-SQL para la restauracin de archivos (modelo de recuperacin simple) El cdigo Transact-SQL siguiente muestra las opciones bsicas de RESTORE en una secuencia de restauracin para el escenario de restauracin de archivos. La sintaxis y los detalles no relevantes para este propsito se omiten.

242

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Esta secuencia de restauracin contiene dos operaciones. La primera restaura un archivo secundario, el archivo A, que se restaura mediante with NORECOVERY. La segunda operacin restaura otros dos archivos, B y C, que se restauran mediante with RECOVERY desde un dispositivo de copia de seguridad diferencial. La secuencia de restauracin de archivos es la siguiente: RESTORE DATABASE <database> FILE = <name_of_file_A> FROM <file_backup_of_file_A> WITH NORECOVERY RESTORE DATABASE <database> FILE=<name_of_file_B>, <name_of_file_C> FROM <file_backup_of_files_B_and_C> WITH RECOVERY Nota: Si utiliza SQL Server 2005 Enterprise Edition y desea que la base de datos est sin conexin durante una restauracin de archivos, desconecte la base de datos antes de iniciar la secuencia de restauracin ejecutando la instruccin ALTER DATABASE siguiente: ALTER DATABASE <database_name> SET OFFLINE.

Realizar restauraciones de archivos (modelo de recuperacin completa) Este tema slo es pertinente para las bases de datos que contienen varios archivos o grupos de archivos con el modelo de recuperacin completa o de carga masiva. El objetivo de una restauracin de archivos consiste en restaurar uno o varios archivos daados sin necesidad de restaurar la totalidad de la base de datos. Todas las ediciones de SQL Server admiten la restauracin de archivos cuando la base de datos est sin conexin (restauraciones de pginas sin conexin). SQL Server 2005 Standard, SQL Server 2005 Express Edition, SQL Server 2005 Workgroup y las versiones posteriores solo admiten la restauracin sin conexin, y restaurar un archivo al grupo de archivos principal requiere siempre que la base de datos est sin conexin. SQL Server 2005 Enterprise Edition y las versiones posteriores utilizan la restauracin sin conexin si la base de datos ya est sin conexin. En SQL Server 2005 Enterprise Edition y versiones posteriores, si la base de datos est en lnea durante una restauracin de archivos, permanecer en lnea. La restauracin y recuperacin de un archivo mientras la base de datos est en lnea se denomina restauracin de archivos con conexin. Estos escenarios de restauracin de archivos son los siguientes:

Restauracin de archivos sin conexin En una restauracin de archivos sin conexin, la base de datos permanece desconectada mientras se restauran los archivos o grupos de archivos daados. Al final de la secuencia de restauracin, la base de datos pasar a estar en lnea. Restauracin de archivos en lnea En SQL Server 2005 Enterprise Edition y versiones posteriores, las restauraciones de archivos se realizan automticamente en lnea cuando la base de datos est en lnea. Sin embargo, cualquier grupo de archivos en el que se restaura un archivo estar sin conexin. Una vez recuperados todos los archivos de un grupo de archivos sin conexin, ste se conecta automticamente. Nota: Slo se pueden consultar o actualizar los grupos de archivos en lnea. Si se intenta tener acceso a un grupo de archivos sin conexin, incluidos los que contienen un archivo que se est restaurando o recuperando, se producir un error.

Si el grupo de archivos que se restaura es de lectura/escritura, es necesario aplicar una cadena ininterrumpida de copias de seguridad de registros despus de que se restaure la ltima copia de seguridad de datos o diferencial. De esta forma, el grupo de archivos se actualiza a los registros existentes en los registros activos actuales del archivo de registro. Normalmente, el punto de recuperacin est cerca del final del registro, aunque no necesariamente. Si el grupo de archivos que se restaura es de slo lectura, por lo general, la aplicacin de las copias de seguridad de registros no es necesaria y se omitir. Si se hizo la copia de seguridad despus de que el archivo pasar a ser de slo lectura, ser la ltima copia de seguridad que se restaurar. La puesta al da se detiene en el punto de destino.

Restauracin de archivos o grupos de archivos Para restaurar uno o varios archivos daados a partir de copias de seguridad de archivos y de copias de seguridad diferenciales de archivos 1. Cree una copia del final del registro despus del error del registro de transacciones activo. Si no puede hacerlo porque el registro est daado, debe restaurar toda la base de datos. Importante: En restauraciones de archivos sin conexin, siempre debe realizar una copia del final de registros despus del error antes de la restauracin de archivos. En restauraciones de archivos en lnea, siempre debe realizar la copia de seguridad de registros despus de la restauracin de archivos. Esta copia de seguridad de registros es necesaria para que el archivo pueda recuperarse a un estado coherente con el resto de la base de datos. 2. 3. Restaure cada archivo daado a partir de la copia de seguridad ms reciente de ese archivo. Restaure la copia de seguridad diferencial de archivos ms reciente, si existe, para cada archivo restaurado.

243

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
4. Restaure las copias de seguridad del registro de transacciones en orden, comenzando con la copia de seguridad que abarca el ms antiguo de los archivos restaurados y finalizando con la copia del final del registro despus del error creada en el paso 1. Debe hacer que la base de datos sea coherente; para ello, restaure las copias de seguridad del registro de transacciones creadas despus de las copias de seguridad de archivos. Las copias de seguridad del registro de transacciones se pueden poner al da rpidamente, porque slo se aplican los cambios correspondientes a los archivos restaurados. La restauracin de archivos individuales puede ser mejor que la restauracin de toda la base de datos, dado que los archivos daados no se copian y, posteriormente, ponen al da. Sin embargo, an debe leerse toda la cadena de copias de seguridad de registros. 5. Nota: Las copias de seguridad de archivos se pueden utilizar para restaurar la base de datos a un momento anterior. Para ello, debe restaurar un conjunto completo de copias de seguridad de archivos y, a continuacin, restaurar las copias de seguridad del registro de transacciones en orden hasta llegar al momento especfico establecido, que es despus del final de la copia de seguridad de archivos restaurada ms reciente. Recupere la base de datos.

Para restaurar archivos y grupos de archivos

Restaurar archivos y grupos de archivos (Transact-SQL) Restaurar archivos y grupos de archivos sobre archivos existentes (Transact-SQL)

Restaurar archivos y grupos de archivos (SQL Server Management Studio) SqlRestore (SMO)

Secuencia de restauracin de Transact-SQL para la restauracin de archivos sin conexin (modelo de recuperacin completa) Un escenario de restauracin de archivos consiste en una nica secuencia de restauracin que copia, pone al da y recupera los datos apropiados. El cdigo Transact-SQL siguiente muestra las opciones bsicas de RESTORE en una secuencia de restauracin para el escenario de restauracin de archivos. La sintaxis y los detalles no relevantes para este propsito se omiten. El ejemplo muestra una restauracin sin conexin de dos archivos secundarios, A y B, con NORECOVERY. A continuacin, se aplican dos copias de seguridad de registros con NORECOVERY y, despus, la copia del final del registro despus del error, recuperada con RECOVERY. El ejemplo comienza desconectando el archivo para una restauracin de archivos sin conexin. --Take the file offline. ALTER DATABASE database_name MODIFY FILE SET OFFLINE -- Back up the currently active transaction log. BACKUP LOG database_name TO <tail_log_backup> WITH NORECOVERY GO -- Restore the files. RESTORE DATABASE database_name FILE=<name> FROM <file_backup_of_file_A> WITH NORECOVERY RESTORE DATABASE database_name FILE=<name> ...... FROM <file_backup_of_file_B> WITH NORECOVERY -- Restore the log backups. RESTORE LOG database_name FROM <log_backup> WITH NORECOVERY RESTORE LOG database_name FROM <log_backup> WITH NORECOVERY RESTORE LOG database_name FROM <tail_log_backup> WITH RECOVERY Realizar restauraciones de pginas

Este tema solo es relevante para las bases de datos de SQL Server que usan el modelo de recuperacin completa o el modelo de recuperacin optimizado para cargas masivas de registros. La restauracin de pginas slo se admite para grupos de archivos de lectura/escritura. El objetivo de una restauracin de pginas es restaurar una o varias pginas daadas sin restaurar la base de datos completa. Normalmente, las pginas candidatas para la restauracin se han marcado como "sospechosas" debido a un error al tener acceso a la pgina. Las pginas sospechosas se identifican en la tabla suspect_pages de la base de datos msdb. Nota: No todos los errores de pgina requieren una restauracin. Puede producirse un problema en los datos en cach, como por ejemplo un ndice secundario, que se puede resolver recalculando los datos. Por ejemplo, si el administrador de la base de datos quita un ndice

244

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
secundario y lo vuelve a generar, los datos daados, aunque se corrijan, no se indican como tales en la tabla suspect_pages. Varias pginas de bases de datos se pueden restaurar de inmediato. Las copias de seguridad de archivos de registros se aplican a todos los archivos de base de datos que contienen una pgina que se va a recuperar. Al igual que en una restauracin de archivo, el conjunto de puestas al da se avanza con un solo pase de puesta al da de registro. La restauracin de pginas se ha diseado para reparar pginas aisladas que se han daado. La restauracin y recuperacin de una pequea cantidad de pginas es ms rpida que la restauracin de un archivo, ya que reduce la cantidad de datos sin conexin durante la operacin de restauracin. Sin embargo, si debe restaurar una cantidad mayor de pginas de un archivo, la restauracin del archivo completo suele ser ms efectiva. Por ejemplo, la presencia de un gran nmero de pginas daadas en un dispositivo puede indicar un error de dispositivo pendiente. Pruebe a restaurar el archivo, posiblemente en otra ubicacin, y repare el dispositivo.

Escenarios de restauracin de pginas Todas las ediciones de SQL Server 2005 y las versiones posteriores admiten la restauracin de pginas cuando la base de datos est sin conexin (restauracin de pginas sin conexin). En SQL Server 2005 Enterprise Edition y versiones posteriores, si la base de datos est en lnea durante una restauracin de pginas, permanecer en lnea. El proceso de restaurar y recuperar una pgina mientras la base de datos est en lnea se denomina restauracin de pginas en lnea. Los escenarios de restauracin de pginas son los siguientes:

Restauracin de pginas sin conexin SQL Server 2005 Standard, SQL Server 2005 Express Edition y SQL Server 2005 Workgroup, y las versiones posteriores, admiten nicamente restauraciones sin conexin. SQL Server 2005 Enterprise Edition y las versiones posteriores usan restauraciones sin conexin si la base de datos ya est sin conexin. En una restauracin de pginas sin conexin, la base de datos est en modo sin conexin mientras se restauran las pginas daadas. Al final de la secuencia de restauracin, la base de datos pasar a estar en lnea. Para que la restauracin de pginas se lleve a cabo correctamente, las pginas restauradas deben recuperarse a un estado coherente con la base de datos. Debe aplicarse una cadena ininterrumpida de copias de seguridad de registros a la ltima recuperacin completa o diferencial para actualizar el grupo de archivos que incluye la pgina al archivo de registro actual. Restauracin de pginas en lnea En SQL Server 2005 Enterprise Edition y versiones posteriores, si las condiciones lo permiten, las restauraciones de pginas se realizan automticamente en lnea. En la mayora de los casos, la restauracin de una pgina daada se realiza mientras la base de datos, incluido el grupo de archivos para el que la pgina se restaura, permanece en lnea. La restauracin de pginas en lnea resulta especialmente til para las pginas daadas por un error de hardware. A veces, ser necesario utilizar una restauracin sin conexin para algunas pginas daadas. Por ejemplo, cuando los daos en ciertas pginas crticas pueden evitar que se inicie la base de datos. En estos casos, deber realizar una restauracin sin conexin. Nota: Una restauracin en lnea intenta actualizar los metadatos y esa actualizacin puede generar un error si interviene una pgina crtica. Si un intento de restauracin en lnea genera un error, la restauracin se debe realizar sin conexin.

La restauracin de pginas utiliza el mecanismo mejorado de creacin de informes y seguimiento de errores de pgina (incluidas las sumas de comprobacin de pgina) en SQL Server 2005 y versiones posteriores. Las pginas que las sumas de comprobacin o escrituras incompletas han detectado como daadas, pginas daadas, se pueden restaurar si se especifican en una instruccin RESTORE. La restauracin de pginas se utiliza para restaurar nicamente algunas pginas daadas. Cualquier pgina que se especifique en una instruccin RESTORE se sustituir por una pgina del conjunto de copia de seguridad especificado. Las pginas restauradas se deben recuperar en un estado coherente con la base de datos. Slo se restauran las pginas que se especifican de forma explcita.

Limitaciones de la restauracin de pginas Slo se pueden restaurar las pginas de bases de datos. La restauracin de pginas no se puede utilizar para restaurar los elementos siguientes:

Registro de transacciones Pginas de asignacin: pginas del mapa de asignacin global (GAM), pginas del mapa de asignacin global compartido (SGAM) y pginas de espacio disponible en pginas (PFS). Pgina 0 de todos los archivos de datos (la pgina de inicio del archivo) Pgina 1:9 (la pgina de inicio de la base de datos)

Catlogo de texto

Si no se puede restaurar una pgina concreta, debe utilizar la copia de seguridad completa existente de base de datos o la copia de seguridad completa de archivo o de grupo de archivos. Nota: Si la pgina que se va a restaurar es un caso especial, por ejemplo, una pgina de metadatos, la restauracin de pginas en lnea generar un error. En estos casos, intente realizar una restauracin de pginas sin conexin.

245

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Requisitos para restaurar pginas Una restauracin de pginas est sujeta a los requisitos siguientes:

Las bases de datos deben utilizar el modelo de recuperacin completa u optimizado para cargas masivas de registros. Surgirn algunos problemas si se utiliza el modelo de recuperacin por medio de registros de operaciones masivas. No se pueden restaurar las pginas de grupos de archivos de slo lectura. Si intenta convertir un grupo de archivos en grupo de slo lectura, se producir un error si se est realizando una restauracin de pginas simultneamente en el grupo de archivos. La secuencia de restauracin debe comenzar con una copia de seguridad completa, de archivo o de grupo de archivos.

Una restauracin de pginas requiere una cadena continua de copias de seguridad de registros hasta el archivo de registro actual, y se deben aplicar todas de modo que se actualice la pgina con el archivo de registro actual. Al igual que en una secuencia de restauracin de archivos, en cada paso de restauracin se pueden agregar nuevas pginas al conjunto de puestas al da. No se puede ejecutar al mismo tiempo una copia de seguridad de la base de datos y una restauracin de pginas.

Modelo de recuperacin optimizado para cargas masivas de registros y restauracin de pginas Para una base de datos que utiliza el modelo de recuperacin optimizado para cargas masivas de registros, la restauracin de pginas cuenta con las condiciones adicionales siguientes:

La realizacin de copias de seguridad mientras un grupo de archivos o los datos de una pgina estn en modo sin conexin resulta problemtica para los datos de registros de operaciones masivas, ya que los datos sin conexin no se encuentran en el registro. La presencia de una pgina sin conexin puede evitar la realizacin de una copia de seguridad del registro. En estos casos, intente utilizar DBCC REPAIR, de esta forma la prdida de datos puede ser menor que si restaura la copia de seguridad ms reciente. Si una copia de seguridad de registros de una base de datos por medio de registros de operaciones masivas detecta una pgina daada, se producir un error a menos que se especifique WITH CONTINUE_AFTER_ERROR. La restauracin de pginas no suele funcionar con la recuperacin por medio de registros de operaciones masivas. La recomendacin para llevar a cabo la restauracin de pginas es establecer la base de datos en el modelo de recuperacin completa e intentar realizar una copia de seguridad de registros. Si la copia de seguridad de registros funciona, puede pasar a realizar la restauracin de pginas. Si la copia de seguridad de registros no se realiza correctamente, perder el trabajo realizado desde la copia de seguridad de registros anterior o tendr que intentar ejecutar DBCC con la opcin REPAIR_ALLOW_DATA_LOSS.

Sintaxis bsica de restauracin de pginas

Para especificar una pgina en una instruccin RESTORE DATABASE, necesita el Id. de archivo del archivo que contiene la pgina y el Id. de la pgina. La sintaxis necesaria es la siguiente: RESTORE DATABASE database_name PAGE = 'file:page [ ,...n ]' [ ,...n ] FROM <backup_device> [ ,...n ] WITH NORECOVERY

Procedimiento para una restauracin de pginas Los pasos bsicos para una restauracin de pginas son los siguientes: 1. Obtener los Id. de las pginas daadas que se deben restaurar. Un error de suma de comprobacin o escritura incompleta devuelve el Id. de pgina con la informacin necesaria para especificar las pginas. Para buscar el Id. de una pgina daada, utilice cualquiera de los siguientes orgenes. Origen de Id. de pgina Tema

msdb..suspect_pages

Descripcin y administracin de la tabla suspect_pages

246

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Registro de errores

Ver el registro de errores de SQL Server

Trazas de eventos

Supervisar eventos

DBCC

DBCC (Transact-SQL)

Proveedor WMI

Conceptos del proveedor WMI para eventos de servidor

2.

Iniciar una restauracin de pginas con una copia de seguridad completa de base de datos, de archivo o de grupo de archivos que contenga la pgina. En la instruccin RESTORE DATABASE, utilice la clusula PAGE para obtener los Id. de todas las pginas que se deben restaurar. PAGE = 'file:page [ ,...n ]' [ ,...n ]' Aplicar las copias de seguridad diferenciales ms recientes. Aplicar las copias de seguridad de registros posteriores.

3. 4.

5.

Crear una nueva copia de seguridad de registros de la base de datos que incluya el LSN final de las pginas restauradas; es decir, el punto en que la ltima pgina restaurada ha pasado a estar en modo sin conexin. El LSN final, que se establece como parte de la primera restauracin de la secuencia, es el LSN final de puesta al da. La puesta al da en lnea del archivo que contiene la pgina puede detenerse en el LSN final de puesta al da. Para conocer el LSN final de puesta al da de un archivo, vea la columna redo_target_lsn de sys.master_files. Restaurar la copia de seguridad de registros nueva. Despus de aplicar esta nueva copia de seguridad de registros, la restauracin de pginas finaliza y las pginas estn listas para su uso.

6.

Nota: Esta secuencia es anloga a una secuencia de restauracin de archivos. De hecho, tanto la restauracin de pginas como la de archivos puede realizarse como parte de la misma secuencia. Ejemplo En el siguiente ejemplo se restauran cuatro pginas daadas del archivo B con NORECOVERY. A continuacin, se aplican dos copias de seguridad de registros con NORECOVERY y, despus, la copia del final del registro, recuperada con RECOVERY. Importante: Si las pginas daadas almacenan metadatos importantes de la base de datos, puede ser necesaria una secuencia de restauracin de pginas sin conexin. Para realizar una restauracin sin conexin, debe realizar una copia de seguridad del registro de transacciones con WITH NORECOVERY. En el siguiente ejemplo se realiza una restauracin en lnea. En el ejemplo, el Id. del archivo B es 1 y los Id. de las pginas daadas son 57, 202, 916 y 1016. RESTORE DATABASE <database> PAGE='1:57, 1:202, 1:916, 1:1016' FROM <file_backup_of_file_B> WITH NORECOVERY; RESTORE LOG <database> FROM <log_backup> WITH NORECOVERY; RESTORE LOG <database> FROM <log_backup> WITH NORECOVERY; BACKUP LOG <database> TO <new_log_backup> RESTORE LOG <database> FROM <new_log_backup> WITH RECOVERY; GO Realizar restauraciones por etapas Este tema es relevante slo para las bases de datos de SQL Server 2005 Enterprise Edition y versiones posteriores que incluyen varios archivos o grupos de archivos y, en el modelo simple, slo para grupos de archivos de slo lectura. En SQL Server 2005 y versiones posteriores, las bases de datos que incluyen varios grupos de archivos se pueden restaurar y recuperar por etapas mediante un proceso denominado restauracin por etapas. Este tipo de restauracin implica una serie de secuencias de restauracin, empezando por el grupo de archivos principal y, en algunos casos, uno o varios grupos de archivos secundarios. Una vez completada la secuencia de restauracin, los archivos recuperados (si son vlidos y coherentes con la base de datos) pueden ponerse en lnea directamente. La restauracin por etapas funciona con todos los modelos de recuperacin, aunque su flexibilidad es mayor para los modelos de recuperacin completa o por medio de registros de operaciones masivas que para el modelo simple. Nota: La restauracin por etapas es ms verstil que la restauracin parcial de SQL Server 2000, ya que los grupos de archivos no restaurados se pueden restaurar en una ocasin posterior.

247

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Las restauraciones por etapas comienzan con una secuencia de restauracin inicial que se denomina secuencia de restauracin parcial. Como mnimo, la secuencia de restauracin parcial restaura y recupera el grupo de archivos principal y, con el modelo de recuperacin simple, todos los grupos de archivos de lectura/escritura. Durante la secuencia de restauracin por etapas, toda la base de datos debe ponerse en modo sin conexin. Despus de este momento, la base de datos estar en lnea y los grupos de archivos restaurados estarn disponibles. Sin embargo, los grupos de archivos que an no se han restaurado permanecen sin conexin. Independientemente del modelo de recuperacin utilizado por la base de datos, la secuencia de restauracin parcial se inicia con una instruccin RESTORE DATABASE que restaura una copia de seguridad completa y especifica la opcin PARTIAL. La opcin PARTIAL siempre inicia una nueva restauracin por etapas; por lo tanto, se debe especificar PARTIAL nicamente una vez en la instruccin inicial de la secuencia de restauracin parcial. Cuando la secuencia de restauracin parcial finaliza y la base de datos est en lnea, a los archivos restantes se les asigna el estado "pendiente de recuperacin" porque su recuperacin se ha pospuesto. Posteriormente, una restauracin por etapas incluye normalmente una o varias secuencias de restauracin, que se denominan secuencias de restauracin de grupos de archivos. Se puede retrasar la realizacin de una secuencia de restauracin de grupos de archivos concreta el tiempo que desee. Estas secuencias restauran y recuperan uno o varios grupos de archivos sin conexin a un punto coherente con la base de datos. La planificacin y el nmero de secuencias de restauracin de grupos de archivos depende del objetivo de la recuperacin, del nmero de grupos de archivos sin conexin que se desea restaurar y de cuntos de estos se restaurarn por secuencia de restauracin de grupos de archivos. Los requisitos concretos para realizar una recuperacin por etapas dependen del modelo de recuperacin de la base de datos.

Escenarios de restauracin por etapas

Todas las ediciones de SQL Server admiten restauraciones por etapas sin conexin. En SQL Server 2005 Enterprise Edition y versiones posteriores, una restauracin por etapas puede realizarse en lnea o sin conexin. Las implicaciones de las restauraciones por etapas en lnea y sin conexin son las siguientes:

Escenario de restauracin por etapas sin conexin En una restauracin por etapas sin conexin, la base de datos est en lnea despus de la secuencia de restauracin parcial. Los grupos de archivos que an no se han restaurado permanecen sin conexin, pero pueden restaurarse a medida que sean necesarios despus de desconectar la base de datos. Escenario de restauracin por etapas en lnea En una restauracin por etapas en lnea, tras secuencia de restauracin parcial, la base de datos est en lnea y el grupo de archivos principal y los grupos de archivos secundarios recuperados estn disponibles. Los grupos de archivos que todava no se han restaurado permanecen sin conexin, pero se pueden restaurar cuando sea necesario mientras la base de datos se encuentre en lnea. Las restauraciones por etapas en lnea pueden incluir transacciones diferidas. Cuando slo se restaura un subconjunto de grupos de archivos, puede que se difieran las transacciones de la base de datos que dependan de los grupos de archivos en lnea. Esto es normal, porque toda la base de datos debe ser coherente.

Restricciones Si una secuencia de restauracin parcial excluye cualquier grupo de archivos FILESTREAM, no se admite la restauracin a un momento dado. Puede forzarse la continuacin de la secuencia de restauracin. Sin embargo, no se podrn restaurar los grupos de archivos FILESTREAM omitidos en la instruccin RESTORE. Para forzar una restauracin a un momento especfico, especifique la opcin CONTINUE_AFTER_ERROR junto con la opcin STOPAT, STOPATMARK o STOPBEFOREMARK, que debe especificar tambin en las instrucciones RESTORE LOG siguientes. Si se especifica CONTINUE_AFTER_ERROR, la secuencia de restauracin parcial ser correcta y el grupo de archivos FILESTREAM no ser recuperable. Recuperacin por etapas con el modelo de recuperacin simple Con el modelo de recuperacin simple, la secuencia de restauracin por etapas debe comenzar con una copia de seguridad completa o parcial de la base de datos. A continuacin, si la copia de seguridad restaurada es una base diferencial, restaure la copia de seguridad diferencial ms reciente. Durante la primera secuencia de restauracin parcial, si slo se restaura un subconjunto de grupos de archivos de lectura/escritura, todos los grupos de archivos no restaurados quedan inactivos al recuperar la base de datos restaurada parcialmente. La exclusin de un grupo de archivos de lectura/escritura de una secuencia de restauracin parcial slo es apropiada en los siguientes casos:

Desea que los grupos de archivos no restaurados queden inactivos. La secuencia de restauracin alcanzar un punto de recuperacin en el que cada grupo de archivos no restaurado ha pasado a ser de slo lectura, se ha eliminada o ha quedado inactivo (durante una restauracin anterior de la secuencia de restauracin parcial). La copia de seguridad completa se realiz mientras la base de datos utilizaba el modelo de recuperacin simple, pero el punto de recuperacin es de un momento cuando la base de datos utilizaba el modelo de recuperacin completa.

Requisitos de la recuperacin por etapas con el modelo de recuperacin simple Con el modelo de recuperacin simple, la fase inicial restaura y recupera el grupo de archivos principal y todos los grupos de archivos de lectura/escritura secundarios. Una vez terminada la fase inicial, los archivos recuperados (si son vlidos y coherentes con la base de datos) pueden ponerse en lnea directamente. A partir de ese momento, se pueden restaurar los grupos de archivos de slo lectura en una o varias fases adicionales. La restauracin por etapas est disponible para un grupo de archivos secundarios de slo lectura nicamente si se cumple lo siguiente:

248

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Era de slo lectura cuando se hizo su copia de seguridad. Ha permanecido como slo lectura (y se mantiene la coherencia lgica con el grupo de archivos principal).

Para realizar una restauracin por etapas, se deben seguir estas directrices:

Un conjunto de copias de seguridad completo para la restauracin por etapas de una base de datos con el modelo de recuperacin simple debe contener lo siguiente:

o o

Una copia de seguridad de base de datos parcial o completa que contenga el grupo de archivos principal y todos los grupos de archivos que tenan acceso de lectura/escritura al hacer la copia de seguridad.

Una copia de seguridad de cada archivo de slo lectura.

Para que la copia de seguridad de un archivo de slo lectura sea coherente con el grupo de archivos principal, el grupo de archivos secundario debe haber sido de slo lectura desde que se hizo la copia de seguridad hasta que se complet la copia de seguridad que incluye el grupo de archivos principal. Puede usar copias de seguridad diferenciales de archivos si se hicieron despus de que el grupo de archivos pasara a ser de slo lectura.

Fases de la restauracin por etapas (modelo de recuperacin simple) El escenario de restauracin por etapas implica las siguientes etapas:

Fase inicial (restauracin y recuperacin del grupo de archivos principal y de todos los grupos de archivos de lectura/escritura) La etapa inicial realiza una restauracin parcial. La secuencia de restauracin parcial restaura el grupo de archivos principal, todos los grupos de archivos secundarios de lectura/escritura y, opcionalmente, algunos grupos de archivos de slo lectura. Durante la fase inicial, toda la base de datos debe pasar a modo sin conexin. Despus de la etapa inicial, la base de datos est en lnea y los grupos de archivos restaurados estarn disponibles. Sin embargo, los grupos de archivos de slo lectura que an no se han restaurado permanecen sin conexin. La primera instruccin RESTORE de la fase inicial debe realizar lo siguiente:

Usar una copia de seguridad parcial o completa de la base de datos que incluya el grupo de archivos principal y todos los grupos de archivos que eran de lectura/escritura al hacer la copia de seguridad. Es normal comenzar una secuencia de restauracin parcial mediante la restauracin de una copia de seguridad parcial.

o
Nota:

Especificar la opcin PARTIAL, que indica el inicio de una restauracin por etapas.

La fase inicial de una restauracin por etapas sustituye la restauracin parcial de la base de datos utilizada en SQL Server 2000. En SQL Server 2005 y versiones posteriores, la opcin PARTIAL realiza comprobaciones de seguridad que se omiten en la restauracin parcial de la base de datos, lo que permite que la base de datos resultante sea apropiada para su uso como base de datos de produccin.

Especificar la opcin READ_WRITE_FILEGROUPS si la copia de seguridad es una copia de seguridad de base de datos completa.

Mientras la base de datos est en lnea, se pueden usar una o varias restauraciones de archivos en lnea para restaurar y recuperar archivos de slo lectura sin conexin que eran de slo lectura cuando se realiz la copia de seguridad. La planificacin de la restauracin de archivos en lnea depende de cundo desee que los datos tengan conexin. La restauracin de los datos a un archivo depende de lo siguiente:

o o

Los archivos vlidos de slo lectura que son coherentes con la base de datos pueden ponerse en lnea directamente si se recuperan sin restaurar ningn dato.

Los archivos daados o incoherentes con la base de datos se deben restaurar antes de recuperarlos.

Recuperacin por etapas con el modelo de recuperacin completa Con el modelo de recuperacin completa o el modelo de recuperacin optimizado para cargas masivas de registros, se puede realizar una recuperacin por etapas de cualquier base de datos que incluya varios grupos de archivos y se puede restaurar una base de datos a cualquier momento dado en el tiempo. Las secuencias de la restauracin por etapas son las siguientes:

Secuencia de restauracin parcial La secuencia de restauracin parcial restaura el grupo de archivos principal y, opcionalmente, algunos de los grupos de archivos secundarios. La primera instruccin RESTORE DATABASE debe realizar lo siguiente:

Especificar la opcin PARTIAL, que indica el inicio de una restauracin por etapas.

249

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009 o o
Utilizar cualquier copia de seguridad completa que contenga el grupo de archivos principal. La prctica normal es comenzar una secuencia de restauracin parcial mediante la restauracin de una copia de seguridad parcial.

Para restaurar a un momento especfico, se debe especificar este momento en la secuencia de restauracin parcial. Las fases sucesivas de la secuencia de restauracin debern especificar el mismo momento.

Las secuencias de restauracin de grupos de archivos ponen en lnea los grupos de archivos adicionales en un punto coherente con la base de datos. En SQL Server 2005 Enterprise Edition y versiones posteriores, se puede restaurar y recuperar cualquier grupo de archivos secundario sin conexin mientras la base de datos permanece en lnea. Si un determinado archivo de slo lectura est daado o no es coherente con la base de datos, no necesita restauracin.

Aplicar copias de seguridad de registros Si un grupo de archivos de slo lectura ha sido de slo lectura desde antes de la creacin de la copia de seguridad de archivos, no es necesario aplicar las copias de seguridad de registros al grupo de archivos y stas se omiten en la restauracin de archivos. Si el grupo de archivos es de lectura/escritura, debe aplicarse una cadena ininterrumpida de copias de seguridad de registros a la ltima recuperacin completa o diferencial para actualizar el grupo de archivos al archivo de registro actual. Realizar una recuperacin por etapas de una base de datos cuyo modelo de recuperacin ha cambiado de simple a completo

Puede realizar una recuperacin por etapas de una base de datos cuyo modelo de recuperacin haya cambiado de un modelo de recuperacin simple a uno completo desde la creacin de la copia de seguridad parcial, completa o de base de datos. Por ejemplo, supongamos que realiza los siguientes pasos para una base de datos: 1. 2. 3. 4. Crea una copia de seguridad parcial (copia_1) de una base de datos de modelo simple. Al cabo de un tiempo, cambia el modelo de recuperacin a completo. Crea una copia de seguridad diferencial. Comienza a realizar copias de seguridad de registros.

A partir de este punto, la siguiente secuencia ser vlida: 1. 2. 3. Una restauracin parcial que omite algunos grupos de archivos secundarios. Una restauracin diferencial seguida de otras restauraciones necesarias. Ms adelante, una restauracin de un grupo de archivos secundarios de lectura/escritura con WITH NORECOVERY de la copia de seguridad parcial copia_1. Una copia de seguridad diferencial se realiza despus de otras copias de seguridad restauradas en la secuencia de restauracin por etapas original para restaurar los datos hasta el punto de recuperacin original.

4.

Recuperar bases de datos sin restaurar los datos Este tema slo es relevante para bases de datos de SQL Server que contienen ms de un grupo de archivos. Normalmente, los datos se restauran antes de ser recuperados. Sin embargo, es posible recuperar la base de datos sin restaurar una copia de seguridad; por ejemplo, en archivos de slo lectura coherentes con la base de datos. Esto se conoce como restauracin de slo recuperacin. Una restauracin de slo recuperacin se aplica a aquellos casos en los que los datos ya son coherentes con la base de datos y slo es necesario lograr que estn disponibles. El objetivo es completar la recuperacin y poner en lnea los datos afectados. En una operacin de restauracin de slo recuperacin los datos del grupo de archivos sin conexin pasan a estar en lnea; no se produce ninguna fase de copia de datos, rehacer ni deshacer. Una restauracin de slo recuperacin puede tener lugar para un archivo, un grupo de archivos o una base de datos completa, como se describe a continuacin:

Una restauracin de slo recuperacin puede resultar til en la siguiente situacin: Una base de datos se restaura por etapas. Una vez finalizada la restauracin del grupo de archivos principal, uno o varios de los archivos no restaurados son coherentes con el nuevo estado de la base de datos; esto puede deberse a que la base de datos ha sido de slo lectura durante algn tiempo. Estos archivos slo necesitan recuperarse, no es necesario copiar los datos. La sintaxis de RESTORE para un restauracin de slo recuperacin de archivos es: RESTORE DATABASE database_name { FILE = logical_file_name | FILEGROUP = logical_filegroup_name } [ ,...n ] WITH RECOVERY Una restauracin de slo recuperacin de base de datos puede resultar til en las siguientes situaciones:

o o

No se recuper la base de datos al restaurar la ltima copia de seguridad en una secuencia de restauracin, pero ahora se desea recuperar la base de datos para ponerla en lnea.

La base de datos est en modo de espera y desea que se pueda actualizarla sin aplicar otra copia de seguridad de registros.

250

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
La sintaxis de RESTORE para un restauracin RESTORE DATABASE database_name WITH RECOVERY Nota: La clusula FROM = <backup_device> no se usa en las restauraciones de slo recuperacin porque no es necesario hacer una copia de seguridad. Para recuperar una base de datos sin restaurar los datos de slo recuperacin de bases de datos es:

Recuperar una base de datos a partir de una copia de seguridad sin restaurar los datos (Transact-SQL) SqlRestore (SMO)

Trabajar con secuencias de restauracin para bases de datos de SQL Server La restauracin de SQL Server puede usarse para realizar operaciones sencillas rpida y fcilmente, y le proporciona el control para restaurar los datos mnimos necesarios en el menor tiempo posible. En los temas de esta seccin se describe el modo de combinar varias instrucciones RESTORE en secuencias de restauracin que copian los datos, los ponen al da y los ponen en conexin al final de la fase de reversin. Las vistas de catlogo, la base de datos msdb y las copias de seguridad contienen informacin necesaria para construir una secuencia de restauracin vlida, como los nmeros de secuencia de registro en los que empieza y termina un conjunto de copia de seguridad. Las vistas de catlogo tambin proporcionan informacin acerca del estado de la base de datos y los archivos asociados. Esta informacin de estado es til para determinar el siguiente paso que se realizar al restaurar los datos. Introduccin a los nmeros de secuencia de registro Cada entrada del SQL Server registro de transaccin se identifica de forma exclusiva mediante un nmero de secuencia de registro (LSN). Los nmeros LSN se ordenan de manera que si LSN2 es mayor que LSN1, el cambio descrito por la entrada de registro a la que hace referencia LSN2 se produce despus del cambio descrito por la entrada de registro LSN. El LSN de una entrada de registro en la que se haya producido un evento importante puede resultar til para generar secuencias de restauracin vlidas. Dado que los LSN se ordenan, pueden compararse para comprobar su igualdad y desigualdad (es decir, <, >, =, <=, >=). Estas comparaciones son tiles para generar secuencias de restauracin. Nota: Los nmeros LSN son valores con tipos de datos numeric(25,0). Las operaciones aritmticas (por ejemplo, la suma o la resta) carecen de importancia y no deben utilizarse con los LSN. Los LSN se utilizan internamente durante una secuencia RESTORE para realizar el seguimiento del momento dado al que se restauran los datos. Al restaurar una copia de seguridad, los datos se restauran al LSN correspondiente al momento dado en que se efectu la copia de seguridad. Las copias de seguridad diferenciales y del registro posponen la base de datos restaurada a un momento posterior, correspondiente a un LSN superior.

Nmeros de secuencia de registro y planeamiento de la restauracin Este tema es relevante para las bases de datos de SQL Server que utilizan el modelo de recuperacin completa. Para planear la restauracin, los nmeros de secuencia de registro (LSN) ms importantes son el primero y el ltimo. Los LSN pueden obtenerse en las ubicaciones siguientes:

La tabla backupset en msdb. Las columnas se denominan first_lsn y last_lsn. La instruccin RESTORE HEADERONLY. Las columnas se denominan FirstLSN y LastLSN.

En la tabla siguiente se definen estos trminos para copias de seguridad diferentes. Trmino Definicin

first_lsn FirstLSN

o Nmero de secuencia de registro de la primera entrada de registro del conjunto de copia de seguridad o de la ms antigua. En copias de seguridad diferenciales o de datos, el primer LSN identifica el primer registro que se necesita para realizar la recuperacin con esta copia de seguridad.

251

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

En copias de seguridad de registros, el primer LSN identifica el primer registro incluido en la copia de seguridad.

last_lsn LastLSN

o Nmero de secuencia de registro del siguiente registro despus del conjunto de copia de seguridad. El ltimo LSN identifica el siguiente registro posterior al final de la copia de seguridad. En copias de seguridad diferenciales o de datos (y en copias de seguridad de registros que contienen operaciones de registro masivo), la puesta al da debe llegar, al menos, hasta este LSN. Si no fuera as, los datos copiados durante la restauracin seran incoherentes. Las copias de seguridad de registros incluyen registros hasta este LSN, pero sin incluirlo.

Nmeros de secuencia de registro y copias de seguridad diferenciales o de datos

En las copias de seguridad diferenciales o de datos, los datos del registro entre first_lsn y last_lsn se incluyen en la copia de seguridad. Esto permite que se utilice la copia de seguridad sin copias de seguridad de registros para recuperar hasta last_lsn. En las copias de seguridad diferenciales o de datos, last_lsn es el primer punto de recuperacin posible si utiliza la copia de seguridad en una secuencia de restauracin. Si se necesita un punto de recuperacin anterior, debe utilizarse una copia de seguridad anterior. Al planear qu copia de seguridad de registros se debe utilizar para la puesta al da tras la restauracin de una copia de seguridad diferencial o de datos, normalmente se empieza con la primera copia de seguridad de registros tras esa copia de seguridad diferencial o de datos. Al examinar las propiedades de la copia de seguridad, encontrar una copia de seguridad de registros cuyo first_lsn es menor o igual que el last_lsn de la copia de seguridad diferencial o de datos, y cuyo last_lsn es mayor que el last_lsn de la copia de seguridad de registros diferencial o de datos.

Nmeros de secuencia de registro y copias de seguridad de registros en una cadena de registros Una cadena de registros nueva comienza por la primera copia de seguridad de base de datos completa realizada tras la creacin de la base de datos o tras el cambio del modelo de recuperacin simple al de recuperacin completa o al de recuperacin optimizado para cargas masivas de registros. En la primera copia de seguridad de registros de una cadena, backupset.begins_log_chain = 1. Los valores first_lsn y last_lsn se utilizan para vincular copias de seguridad de registros en una secuencia consecutiva (cadena de registros). Puede utilizar una secuencia de copias de seguridad de registros consecutivas para poner al da una base de datos a partir de la copia de seguridad diferencial o de datos ms reciente, o bien a partir de una copia de seguridad ms antigua despus de realizar copias de seguridad diferenciales y de datos daadas o que no se pueden encontrar. En una copia de seguridad de registros, first_lsn es el LSN de la primera entrada de registro de la copia de seguridad y, empezando con esta entrada, esta copia de seguridad contiene las entradas de registro que van hasta la entrada de registro cuyo LSN es last_lsn, sin incluirla. Dos copias de seguridad de registros son consecutivas slo si el LSN de la ltima entrada de registro de la primera copia de seguridad (Backup_A) es mayor o igual que el LSN de la primera entrada de registro de la copia de seguridad siguiente (Backup_B); es decir, Backup_A.last_lsn >= Backup_B.first_lsn. Si esta condicin no se cumple, existe una discontinuidad entre las dos copias de seguridad. La importancia de la relacin existente entre estos LSN se explica a continuacin:

A.last_lsn = B.first_lsn Si A.last_lsn = B.first_lsn, B suele ser la copia de seguridad de registros realizada inmediatamente despus de A. Esta relacin se muestra en la ilustracin siguiente. Tenga en cuenta que la entrada de registro n, que tiene lugar en la copia de seguridad de registros B, se registr como last_lsn en la copia de seguridad de registros A y como first_lsn en la copia de seguridad de registros B.

A.last_lsn > B.first_lsn Si A.last_lsn > B.first_lsn, existe una superposicin. Una superposicin as suele provenir de la creacin de una copia de seguridad de registros slo de copia o de la primera copia de seguridad de registros realizada tras una recuperacin a un momento dado. La superposicin puede implicar varias bifurcaciones en la recuperacin.

Causas de cadenas de registros rotas En general, SQL Server Database Engine (Motor de base de datos de SQL Server) evita discontinuidades en la secuencia de las copias de seguridad de registros y mantiene la cadena de registros intacta. Sin embargo, un administrador de base de datos puede romper la cadena de registros si cambia el modelo de recuperacin de simple a completa o por medio de registros de operaciones masivas. No se pueden poner al da cambios en el modelo de recuperacin simple, ya que la cadena de registros se rompera. Despus de efectuar el cambio al modelo de recuperacin completa o al de recuperacin optimizado para cargas masivas de registros, debe tomar una nueva base diferencial o conjunto de bases diferenciales. Tambin puede utilizar copias de seguridad diferenciales para cubrir una discontinuidad.

252

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Rutas de recuperacin Es importante comprender las rutas de recuperacin si se usan copias de seguridad diferenciales o de registros e, igualmente, si se recupera una base de datos a un momento anterior mediante uno de los mtodos siguientes:

Realizar una restauracin a un momento dado. Realizar una recuperacin sin restaurar antes todas las copias de seguridad de registros o la copia de seguridad diferencial ms reciente.

Si recupera una base de datos a un momento anterior y comienza a utilizarla desde ese momento, se crear una nueva ruta de recuperacin. La ruta de recuperacin es la secuencia de datos y copias de seguridad de registros que han llevado a una base de datos a un momento determinado, ya sea mediante el uso normal o con una restauracin de datos y de registros especficos. Una ruta de recuperacin consta de un conjunto exclusivo de transformaciones especficas que han hecho evolucionar a la base de datos a lo largo del tiempo manteniendo su coherencia. En la ilustracin siguiente se muestra la relacin entre un punto de recuperacin y las rutas de recuperacin resultantes.

En las situaciones siguientes se crea una nueva ruta de recuperacin ya que la base de datos no se restaura hasta el "fin de los tiempos". Despus de esto, existen copias de seguridad que pueden llevar a la base de datos por dos o ms rutas de recuperacin y todas usan el mismo intervalo de LSN.

Restaurar una copia de seguridad completa y recuperar la base de datos sin utilizar ningn otro tipo de copia de seguridad. Recuperar la base de datos hasta el final de una copia de seguridad diferencial que no sea la ltima realizada.

Restaurar una copia de seguridad completa y una diferencial y recuperar la base de datos sin aplicar las copias de seguridad existentes del registro de transacciones. Recuperar la base de datos hasta el final de una copia de seguridad del registro de transacciones que no sea la ltima realizada.

Recuperar la base de datos hasta un momento determinado o una transaccin con nombre incluida en una copia de seguridad del registro de transacciones.

En general, un punto de recuperacin inicia una nueva ruta de recuperacin si dicho punto hace que se reviertan las transacciones. Puede que las copias de seguridad existentes tengan nmeros de secuencia de registro (LSN) superiores al LSN del punto de recuperacin. Los LSN de estas copias de seguridad estn en una rama de recuperacin diferente de la nueva rama que se ha creado en la operacin de recuperacin actual. Recomendacin: si no desea crear una ruta de recuperacin que tenga varias bifurcaciones de recuperacin, realice un conjunto completo de copias de seguridad de datos tan pronto como pueda despus de recuperar la base de datos. Con este mtodo, se garantiza que todas las copias de seguridad se realizan en una nica rama de recuperacin. Para comprobarlo, consulte la columna last_recovery_fork_guid de la tabla backupset o el conjunto de resultados RESTORE HEADERONLY despus de realizar una copia de seguridad de los datos.

Ejemplo de ruta de recuperacin Inicialmente, todas las copias de seguridad de una base de datos forman una ruta de recuperacin nica, como se muestra en la ilustracin siguiente. En esta ilustracin, la ruta de recuperacin incluye una copia de seguridad de la base de datos, realizada a la hora t1, y tres copias de seguridad de registros, realizadas a las horas t2, t3 y t4.

La ilustracin siguiente muestra una bifurcacin de recuperacin que es el resultado de restaurar la base de datos a un punto anterior en el tiempo. Un problema con la copia de seguridad t4 hace que el administrador de la base de datos recupere la base de datos en el estado que tena al final de la copia de seguridad de registros t3. Esta restauracin produce una bifurcacin de recuperacin. A la hora t5, una nueva copia de seguridad de registros inicia una nueva bifurcacin de recuperacin, la bifurcacin de recuperacin 2.

253

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Nota: La copia de seguridad de registros t5 incluye metadatos de bifurcacin de recuperacin que conectan esta copia de seguridad con la copia de seguridad de registros t3 en la bifurcacin de recuperacin 1. El ejemplo de la ilustracin anterior crea una nueva ruta de recuperacin, que se muestra en la ilustracin siguiente. La nueva ruta de recuperacin incluye algunas de las copias de seguridad de la bifurcacin de recuperacin 1 (t1 hasta t3) y todas las copias de seguridad de registros de la bifurcacin de recuperacin 2 (t5 hasta t9). Desde el punto de vista de esta ruta de recuperacin, la copia de seguridad de registros t4 est obsoleta.

Despus de una restauracin a un momento dado, la copia de seguridad siguiente siempre produce una bifurcacin de recuperacin. En la ilustracin siguiente, una restauracin a un momento dado se completa durante la operacin de copia de seguridad de registros t4. La recuperacin de la base de datos a ese momento dado produce una bifurcacin de recuperacin. A continuacin, se crea una copia de seguridad de registros en la base de datos recuperada a la hora t5, se establece la bifurcacin de recuperacin 2 y se crea una nueva ruta de recuperacin. La primera copia de seguridad de registros de la nueva bifurcacin, t5, incluye el mismo primer LSN que la copia de seguridad de registros t3 y lo reemplaza. Por consiguiente, las copias de seguridad t3 y t4 estn obsoletas en la nueva ruta de recuperacin.

254

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Para restaurar las copias de seguridad en esta nueva ruta de recuperacin, la secuencia de restauracin es: t1, t2 y t5. Como las copias de seguridad futuras se realizan en la bifurcacin de recuperacin 2, se incorporarn en la nueva ruta de recuperacin.

Para realizar una restauracin y realizar una puesta al da con una ruta antigua Normalmente, cuando existen varias rutas de recuperacin, la ms reciente es la ruta de acceso preferida para restaurar la base de datos. Se recomienda evitar el uso de una ruta de recuperacin antigua, Sin embargo, si fuera necesario, puede realizar una puesta al da con una ruta antigua, si sigue la secuencia de las copias de seguridad realizadas antes de la creacin de la ruta de recuperacin actual. Por ejemplo, puede utilizar las copias de seguridad realizadas antes de una recuperacin a un momento dado para alcanzar los puntos posteriores en el tiempo con la ruta antigua. Por ejemplo, segn las copias de seguridad creadas en la ilustracin anterior, despus de crear la copia de seguridad de registros 5, an se puede restaurar a partir de la copia de seguridad completa de la base de datos realizada a la hora t1 hasta el final de la copia de seguridad de registros t4. sta se encuentra en la ruta de recuperacin antigua.

Para realizar una restauracin y realizar una puesta al da desde una ruta antigua hasta una nueva SQL Server Database Engine (Motor de base de datos de SQL Server) impide que una secuencia de restauracin utilice copias de seguridad que no van juntas, es decir, que intenta realizar una puesta al da siguiendo dos rutas de recuperacin distintas. Esta restriccin permite mantener la coherencia de una base de datos tras una recuperacin. Para realizar una restauracin y una puesta al da con una nueva ruta de recuperacin, construya secuencias de restauracin distintas para las copias de seguridad realizadas antes y despus del punto de recuperacin. 1. Restaure las copias de seguridad realizadas antes de la recuperacin que aport la nueva ruta de recuperacin, excluyendo la que incluya el punto de recuperacin. Realice una puesta al da con la nueva ruta de recuperacin restaurando las copias de seguridad realizadas desde la creacin de la ruta de recuperacin.

2.

Administrar bifurcaciones de recuperacin Una rama de recuperacin es una serie de LSN que comparten el mismo GUID. Una ruta de recuperacin describe una serie de LSN desde un punto de inicio (LSN o GUID) hasta un extremo (LSN o GUID). La serie de LSN de una ruta de recuperacin puede incluir una o varias ramas de recuperacin desde el principio hasta el final. Se crear una nueva rama de recuperacin cuando se cree una base de datos y RESTORE WITH RECOVERY genere una bifurcacin de recuperacin. Una bifurcacin de recuperacin es el punto (LSN o GUID) en el que se inicia una nueva rama de recuperacin cada vez que se ejecuta RESTORE WITH RECOVERY. Cada bifurcacin de recuperacin determina una relacin entre las ramas de recuperacin primarias y secundarias. La recuperacin de la base de datos establece el estado de la base de datos completa, incluido el siguiente LSN, en el punto de recuperacin. A continuacin, se vuelven a utilizar los LSN, empezando con fork_point_lsn. Por lo tanto, cuando se construye una secuencia de restauracin, se deben vincular las copias de seguridad mediante la bifurcacin de recuperacin adems del LSN, porque puede que exista el mismo LSN en ms de una bifurcacin. En la siguiente ilustracin se muestra la forma en la que se reutilizan los LSN. Se muestra cmo se reutilizan LSN en diferentes bifurcaciones de recuperacin. Los cuadros verdes en la ilustracin indican dos copias de seguridad que utilizan el mismo LSN.

255

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Si una secuencia de restauracin debe incluir copias de seguridad que pasan por una bifurcacin de recuperacin, se debe construir de modo que las copias de seguridad utilizadas sigan la ruta de recuperacin correcta hasta el punto de recuperacin. Con este propsito, las copias de seguridad incluyen un primer GUID de bifurcacin de recuperacin y un ltimo GUID de bifurcacin de recuperacin. Estos GUID, junto con otros metadatos relevantes para realizar el seguimiento de las rutas de recuperacin, se almacenan en la tabla del historial backupset y tambin los devuelve la instruccin RESTORE HEADERONLY. La tabla siguiente resume los valores de metadatos relevantes para la generacin de secuencias de restauracin que pasan por una bifurcacin de recuperacin. Observe que los nombres de columna para estos valores son diferentes para la tabla de historial y el conjunto de resultados de la instruccin RESTORE HEADERONLY: LSN Descripcin Nombre en backupset la columna Nombre en la columna RESTORE HEADERONLY

Primer GUID de Id. de la bifurcacin de recuperacin inicial. bifurcacin recuperacin de

first_recovery_fork_guid

FirstRecoveryForkID

ltimo GUID de Id. de la bifurcacin de recuperacin final. bifurcacin recuperacin de

last_recovery_fork_guid

RecoveryForkID

Primer LSN

Nmero de secuencia de registro de la primera entrada first_lsn de registro del conjunto de copia de seguridad o de la ms antigua.

FirstLSN

ltimo LSN

Nmero de secuencia de registro de la siguiente last_lsn entrada del registro despus del conjunto de copia de seguridad.

LastLSN

LSN de punto de Nmero de secuencia de registro de un punto de fork_point_lsn bifurcacin bifurcacin si el primer GUID de punto de recuperacin no es igual que el ltimo GUID de punto de recuperacin. De lo contrario, no se produce ninguna bifurcacin de recuperacin en la copia de seguridad y el LSN de punto de bifurcacin es NULL.

ForkPointLSN

GUID

de

base Para una copia de seguridad diferencial con una nica differential_base_guid copia de seguridad base, el valor es el identificador nico de la base diferencial. Para las copias de seguridad diferenciales con varias copias de seguridad base, el valor es NULL y la base diferencial debe determinarse en el nivel de archivo. Para los tipos de copia de seguridad no diferenciales, el valor es NULL.

DifferentialBaseGUID

diferencial

El resto de esta documentacin utiliza slo los nombres de los valores de la tabla de historial backupset.

El primer y el ltimo GUID de bifurcacin de recuperacin se utilizan para vincular las copias de seguridad con el fin de asegurarse de que la secuencia sigue la bifurcacin adecuada. Para cada copia de seguridad de registros de la secuencia que se restaurar, first_recovery_fork_guid debe ser igual a last_recovery_fork_guid de la copia de seguridad anterior en la secuencia.

Tambin se deben vincular las copias de seguridad de datos y diferenciales. Si la copia de seguridad de registros incluye tanto el ltimo LSN de una copia de seguridad completa o diferencial de la base de

256

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
datos como un punto de bifurcacin, la prueba de vinculacin depender de la ubicacin del ltimo LSN con respecto al punto de bifurcacin. Las pruebas de vinculacin son las siguientes, con valores de backupset:

Si el valor de last_lsn es menor o igual que el valor de fork_point_lsn, el valor de last_recovery_fork_guid de la copia de seguridad de datos o diferencial debe ser igual al valor de first_recovery_fork_guid de la copia de seguridad de registros. En la siguiente ilustracin se muestra un caso en el que el valor de last_lsn es menor que el valor de fork_point_lsn.

Si el valor de last_lsn es mayor que el valor de fork_point_lsn, el valor de last_recovery_fork_guid de la copia de seguridad de datos o diferencial debe ser igual al valor de last_recovery_fork_guid de la copia de seguridad de registros. En la siguiente ilustracin se muestra un caso en el que el valor de last_lsn es mayor que el valor de fork_point_lsn.

En el caso de una copia de seguridad diferencial, busque la base diferencial mediante backupset.differential_base_guid. Si la diferencial es multibase, el valor de backupset.differential_base_guid ser NULL y deber determinar las bases diferenciales archivo por archivo mediante backupfile.differential_base_guid.

Determinar el intervalo de tiempo contenido en una copia de seguridad de registros Este tema slo es relevante para las bases de datos que utilizan el modelo de recuperacin completa o el modelo de recuperacin optimizado para cargas masivas de registros. A veces debe conocer el intervalo de tiempo contenido en una copia de seguridad de registros. Esto es especialmente as en la recuperacin a un momento dado. La primera copia de seguridad de registros en una cadena de copias de seguridad captura el intervalo entre el inicio de la primera copia de seguridad completa de la base de datos y el inicio de la copia de seguridad de registros. Cada copia de seguridad de registros posterior en la cadena captura el registro escrito entre el inicio de la copia de seguridad de registros anterior y el inicio de la copia de seguridad de registros actual.

257

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Este intervalo se puede calcular a partir de la informacin de la tabla msdb.backupset. La columna backup_start_date contiene la fecha y la hora en la que se inici una operacin de copia de seguridad y la columna backup_finish_date contiene la fecha y la hora en la que finaliz la operacin de copia de seguridad. El intervalo contenido en un registro es como se indica a continuacin:

El intervalo contenido en la primera copia de seguridad de registros de una cadena de copias de seguridad de registros se extiende entre el valor de backup_start_date de la primera copia de seguridad completa y el valor de backup_start_date de la copia de seguridad de registros. El intervalo contenido en una copia de seguridad de registros posterior se extiende entre el valor de backup_start_date de la copia de seguridad de registros anterior y el valor de backup_start_date de la copia de seguridad de registros actual.

En la siguiente ilustracin se muestran los intervalos capturados por la primera y la segunda copias de seguridad de registros de una cadena.

Ejemplos En los ejemplos siguientes se muestran las fechas de inicio de la primera copia de seguridad completa de la base de datos, y de la primera y la segunda copias de seguridad de registros de una cadena. En los ejemplos tambin se muestran los intervalos de tiempo resultantes capturados por la primera y la segunda copias de seguridad de registros.

Intervalo de tiempo en la primera copia de seguridad de registros En este ejemplo se muestran las fechas de inicio de la primera copia de seguridad completa de la base de datos y la primera copia de seguridad de registros de una cadena, as como el tiempo capturado por esta copia de seguridad de registros. El intervalo de tiempo contenido en la primera copia de seguridad de registros (Log_1) empieza en Data_1.backup_start_date y se extiende hasta Log_1.backup_start_date. Por ejemplo: Data_1.backup_start_date = 3/4/2004 8:00:09 AM Log_1.backup_start_date = 3/4/2004 8:15:03 Intervalo de tiempo en Log_1 = 12 horas, 14 minutos, 54 segundos

Intervalo de tiempo en la segunda copia de seguridad de registros En este ejemplo se muestran las fechas de inicio de la copia de seguridad de la primera y la segunda copias de seguridad de registros de una cadena, as como el tiempo capturado por la segunda copia de seguridad de registros.

258

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
El intervalo de tiempo contenido en la segunda copia de seguridad de registros (Log_2) empieza en Log_1.backup_start_date y se extiende hasta Log_2.backup_start_date. Por ejemplo: Log_1.backup_start_date = 3/4/2004 8:15:03 PM Log_2.backup_start_date = 3/5/2004 8:01:15 PM Intervalo de tiempo en Log_2 = 23 horas, 46 minutos, 3 segundos Determinar el siguiente paso para la recuperacin de un archivo o grupo de archivos Las vistas de catlogo sys.database_files y sys.master_files incluyen informacin que determina tanto el estado de un archivo o grupo de archivos como el siguiente paso necesario para ponerlo en lnea. El estado de un grupo de archivos se determina mediante los archivos que incluye: a menos que todos estn en lnea, todo el grupo de archivos estar sin conexin. La propiedad clave de un archivo es su estado, indicado en las columnas state y state_desc de sys.database_files. En la tabla siguiente se describe cmo se debe interpretar y responder a cada estado. Estado del archivo Significado Acciones

ONLINE

El archivo est en lnea.

No se requiere ninguna accin.

RESTORING

Se est restaurando el archivo.

Planear etapas

una para

secuencia un

de

restauracin en el estado o pendiente

por de sin

archivo

restauracin, conexin.

recuperacin

RECOVERY_PENDING Se ha pospuesto la recuperacin del archivo. El archivo estaba Planear en lnea o no exista antes de que una restauracin parcial etapas cambiara su estado a RECOVERY_PENDING.

una para

secuencia un

de

restauracin en el estado o pendiente

por de sin

archivo

restauracin, conexin.

recuperacin

OFFLINE

El archivo se dej explcitamente sin conexin mediante ALTER Planear DATABASE. etapas

una para

secuencia un

de

restauracin en el estado o pendiente

por de sin

archivo

restauracin, conexin.

recuperacin

RECOVERING

Se trata de un estado transitorio. Si se realiza la recuperacin No se requiere ninguna accin. correctamente, el archivo estar en lnea automticamente.

SUSPECT

El archivo est daado.

Se puede restaurar o quitar el archivo, o bien establecer la base de datos en el modo EMERGENCY.

DEFUNCT

Se ha quitado el archivo (cuando estaba sin conexin), pero Ninguna. No es posible realizar la recuperacin. an no se ha limpiado.

Responder a errores de restauracin de SQL Server provocados por copias de seguridad daadas Los errores de restauracin ocurren si los medios de copia de seguridad estn daados. El sistema operativo puede informar de estos errores de restauracin; las sumas de comprobacin tambin pueden detectarlos. En ambos casos, tiene tres opciones:


Nota:

Resolver el error y reiniciar la operacin de restauracin. Dejar que la restauracin contine a pesar de los errores y reparar la base de datos cuando la restauracin finalice.

Abandonar la operacin de restauracin y utilizar un plan de recuperacin alternativo que evite la copia de seguridad daada.

El conjunto de medios o de copia de seguridad debe contener un mnimo de informacin correcta para que sea interpretado como formato de cinta de Microsoft. Si no fuera as, RESTORE se detendra e indicara que el formato de la copia de seguridad no es vlido. Resolver y reiniciar la operacin de restauracin

259

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Los errores pueden solucionarse de las siguientes maneras:

Si ocurre un error en un dispositivo de cinta, puede borrar o reemplazar la unidad de cinta. En dispositivos de disco, puede resolver el error del dispositivo y reemplazar el archivo daado.

Si se haba creado un reflejo del conjunto de medios, puede reemplazar los medios daados por los medios equivalentes de otro reflejo.

Continuar a pesar de los errores

Advertencia: Si especifica WITH CONTINUE_AFTER_ERROR en una instruccin RESTORE se intenta restaurar la base de datos. Sin embargo, hay muchos tipos de daos que impiden recuperar una base de datos. Es muy recomendable que reserve la opcin CONTINUE_AFTER_ERROR hasta que haya agotado todas las alternativas. La opcin CONTINUE_AFTER_ERROR hace que una operacin de restauracin contine aunque surjan errores, restaurando lo que pueda. Tiene lugar una puesta al da y se pueden aplicar copias de seguridad posteriores del registro de transacciones. Si la puesta al da encuentra un error que le impide alcanzar un momento dado establecido, el error se indica en el registro. La base de datos se conecta en el punto de recuperacin, si es posible. Sin embargo, si no se puede completar la recuperacin, la base de datos se deja sin conexin. La cantidad de datos perdidos depende del error. Por ejemplo, una suma de comprobacin errnea en una pgina slo cuestiona la pgina; los medios siguen leyndose y procesndose. Sin embargo, un error de E/S desde un dispositivo de cinta puede impedir que la restauracin siga leyendo despus del error, lo que impide que se siga restaurando el resto de la cinta. Cuando se indica a una restauracin que contine despus de los errores, las pginas que no pueden comprobarse se escriben en el disco y se registran en la tabla suspect_pages y en el registro de errores. Recomendaciones: despus de utilizar WITH CONTINUE_AFTER_ERROR para restaurar datos, examine los registros de errores para obtener los detalles de los errores. Guarde y analice tambin todos los mensajes que reciba directamente de la instruccin RESTORE. Para continuar a pesar de los errores La sintaxis de RESTORE bsica es: RESTORE DATABASE database_name FROM backup_device WITH CONTINUE_AFTER_ERROR, [ NORECOVERY ]

Administrar la base de datos sin conexin Al finalizar una secuencia de restauracin que contina a pesar de los errores, es posible que pueda reparar la base de datos con DBCC CHECKDB. Para que CHECKDB se ejecute de una forma ms coherente despus de utilizar RESTORE CONTINUE_AFTER_ERROR, se recomienda utilizar la opcin WITH TABLOCK en el comando DBCC CHECKDB.Todas las opciones de reparacin estn disponibles. Para saber el nivel mnimo de reparacin necesario, ejecute DBCC CHECKDB sin una opcin de reparacin. Tenga en cuenta que, en casos extremos, puede que no haya informacin suficiente para reparar la base de datos. Para obtener acceso limitado a los datos tal como estn, puede colocar la base de datos en modo de emergencia mediante la opcin EMERGENCY del comando ALTER DATABASE. Reiniciar operaciones de restauracin interrumpidas en SQL Server Si se interrumpe una operacin de restauracin, es posible reiniciar la operacin desde el momento en el que se interrumpi. Puede ser til si se restauran grandes bases de datos. Si se produce un error en la restauracin cuando se aproxima el final de la operacin de restauracin, normalmente, puede reiniciar la operacin de restauracin a partir de la interrupcin, en lugar de restaurar toda la base de datos desde el principio. Concretamente, si realiza la restauracin desde cintas, puede reiniciarla a partir de la cinta actual en lugar de hacerlo desde al primera cinta. Si la restauracin se encontraba en la fase de rehacer (se estaba poniendo al da), no es necesario copiar datos del conjunto de copia de seguridad.

Consideraciones avanzadas para secuencias de restauracin En los temas de esta seccin se explican las siguientes consideraciones sobre las secuencias de restauracin:

Cambiar el conjunto de puestas al da despus de que se haya iniciado la puesta al da Omitir la puesta al da de los datos en archivos de slo lectura

Usar varias copias de seguridad completas de los mismos datos Ejecutar la copia de seguridad y la restauracin simultneas en una sola base de datos

Adems, esta seccin contiene varios temas avanzados.

Cambiar el conjunto de puestas al da despus de que se haya iniciado la puesta al da

260

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
No puede eliminar archivos o pginas de un conjunto de puestas al da, pero puede agregarlos. Agregar un archivo resulta til si, por ejemplo, inicia una secuencia de restauracin parcial y despus se da cuenta de que desea incluir ms archivos. Agregar un archivo o pgina puede requerir que se repita parte de la puesta al da. Sin embargo, los archivos de slo lectura que son coherentes con la base de datos se pueden agregar al conjunto de puestas al da sin repetir nada de la puesta al da. La operacin de adicin de pginas est sujeta a la restriccin descrita en "Varias copias de los mismos datos" incluida ms adelante en este tema. Omitir la puesta al da de los datos en archivos de slo lectura Al restaurar un archivo de slo lectura en un grupo de archivos que ha sido de slo lectura desde antes de que se creara la copia de seguridad, el archivo es coherente con el resto de la base de datos, por lo que se omite la fase de rehacer. Despus de restaurar estos archivos de slo lectura a partir de la copia de seguridad (durante la fase de copia de datos de la restauracin), SQL Server Database Engine (Motor de base de datos de SQL Server) recupera inmediatamente estos archivos. Despus contina la fase de puesta al da para poner al da el resto del conjunto de puestas al da, si existe. Si un grupo de archivos pas a ser de slo lectura despus de la ltima copia de seguridad completa pero antes de una copia de seguridad diferencial y ha permanecido como de slo lectura, la puesta al da se produce hasta el momento en que se cre la copia de seguridad diferencial. Con el modelo de recuperacin completa, si un grupo de archivos pasa a ser de slo lectura despus de la ltima copia de seguridad completa y la ltima copia de seguridad diferencial, si existe, el usuario puede usar las copias de seguridad de registros para poner al da los datos de un archivo hasta que el grupo de archivos alcance el punto de slo lectura. Usar varias copias de seguridad de los mismos datos Puesto que pueden emitirse varias instrucciones de restauracin, puede copiar datos de diferentes copias de seguridad completas en la misma ubicacin. Por ejemplo, una instruccin RESTORE copia todos los archivos de una base de datos. La siguiente instruccin de la secuencia de restauracin sobrescribe uno de los archivos. En general, esto se permite y se utilizan los ltimos datos restaurados. Sin embargo, hay reglas especiales para restaurar pginas. Las pginas no pueden copiarse en un archivo despus de que se haya restaurado todo el archivo; si se intenta, se produce un error. La secuencia de restauracin puede continuar, pero la pgina no se restaura.

Ejecutar la copia de seguridad y la restauracin simultneas en una sola base de datos

En algunas circunstancias, las instrucciones BACKUP y RESTORE que afectan a la misma base de datos pueden ejecutarse simultneamente. Cuando no se permite una operacin debido a que ya hay otra en curso, Database Engine (Motor de base de datos) devuelve un error. En la siguiente tabla se indica si cada una de las posibles combinaciones de instrucciones simultneas est o no permitida. Instruccin en curso BACKUP DATABASE BACKUP LOG Offline RESTORE Online RESTORE

BACKUP DATABASE

Error

Permitida

Error

Error

BACKUP LOG

Permitida

Error

Error

Error

Offline RESTORE

Error

Error

Error

Error

Online RESTORE

Error

Permitida

Error

Error

Consideraciones para hacer copias de seguridad y restaurar las bases de datos SQL Server tiene un conjunto de bases de datos en el nivel de sistema, bases de datos del sistema, esenciales para el funcionamiento de una instancia del servidor. Varias de las bases de datos del sistema requieren que se hagan copias de seguridad tras cualquier actualizacin de importancia. Las bases de datos del sistema de las que siempre debe realizar copias de seguridad son msdb, maestra y model. Si alguna base de datos utiliza la replicacin en la instancia de servidor, existe la base de datos del sistema distribution de la que tambin debe hacer una copia de seguridad. La copia de seguridad de estas bases de datos del sistema le permite restaurar y recuperar el sistema SQL Server en el caso de producirse un error del sistema, por ejemplo una prdida del disco duro. En la tabla siguiente se resumen todas las bases de datos del sistema. Base de Descripcin datos del sistema Son Modelo necesarias recuperacin copias de seguridad? de Comentarios

maestra

Base de datos en la que se S registra toda la informacin del sistema de un sistema SQL Server.

Simple

Realice copias de seguridad de la base de datos maestra con la frecuencia necesaria para que los datos estn cabo suficientemente una programacin protegidos peridica de segn copias sus de necesidades empresariales. Se recomienda llevar a seguridad, que se puede complementar con copias de seguridad adicionales cuando exista una actualizacin

261

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

sustancial.

model

Plantilla para todas las bases S de datos creadas en la instancia de SQL Server.

Configurable el usuario1

por Haga una copia de seguridad de model slo cuando sea necesario para sus necesidades empresariales: por ejemplo, despus de personalizar las opciones de la base de datos. Recomendacin: es aconsejable crear copias de

seguridad completas de base de datos de model, slo cuando sea necesario. Puesto que realizar copia de seguridad del registro. model es de pequeo tamao y no suele cambiar, no es necesario

msdb

Base de datos utilizada por el S Agente SQL Server para programar alertas y trabajos, y para registrar operadores. Adems, tablas ejemplo historial del las de msdb contiene por del de historial, tablas copias

Simple

(valor Realice copias de seguridad de la base de datos msdb cuando se actualice.

predeterminado)

seguridad y restauracin.

Resource (RDB)

Base de datos de slo lectura No que contiene copias de todos los objetos del sistema que se incluyen con Microsoft SQL Server 2005 o versiones posteriores.

La base de datos Resource se encuentra en el archivo mssqlsystemresource.mdf, que slo contiene cdigo. Por lo tanto, SQL Server no puede hacer una copia de seguridad de la base de datos Resource. Nota: Puede realizar una copia de seguridad basada en archivos o basada en disco del archivo mssqlsystemresource.mdf si lo trata como si fuese binario (.exe), en lugar de un archivo de base de datos. No obstante, no puede utilizar la restauracin de SQL Server en las copias de seguridad. La restauracin de una copia de seguridad de mssqlsystemresource.mdf slo se puede hacer de forma manual y hay que tener cuidado de no sobrescribir la base de datos Resource actual con una versin obsoleta o potencialmente insegura.

tempdb

rea de trabajo que contiene No conjuntos temporales de o resultados intermedios.

Simple

No se pueden realizar copias de seguridad de la base de datos del sistema tempdb.

Esta base de datos se vuelve a crear cada vez que se inicia una instancia de SQL Server. Cuando se cierra la instancia de servidor, los datos de la base de datos tempdb se eliminan permanente. de manera

Configurar la distribucin

Base de datos que slo existe S si el servidor est configurado como datos metadatos un se y distribuidor de replicacin. En esta base de almacenan datos del

Simple

historial de todos los tipos de replicacin y transacciones de replicacin transaccional.

262

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Restaurar las bases de datos del sistema Importante: Las bases de datos del sistema slo se pueden restaurar a partir de copias de seguridad creadas en la versin de SQL Server en que se ejecuta actualmente la instancia de servidor. Por ejemplo, para restaurar una base de datos en una instancia de servidor que se est ejecutando en SQL Server 2005 SP1, debe usar una copia de seguridad de la base de datos que se cre despus de haber actualizado la instancia de servidor a SQL Server 2005 SP1. Para restaurar una base de datos, la instancia de SQL Server debe estar ejecutndose. El inicio de una instancia de SQL Server requiere el acceso a la base de datos maestra y la posibilidad de utilizarla al menos parcialmente. Si la base de datos maestra est inutilizable, puede devolverla a un estado vlido de dos formas:

Restaure la base de datos maestra desde una copia de seguridad de la base de datos actual. Si puede iniciar la instancia de servidor, debera poder restaurar la base de datos maestra desde una copia de seguridad completa de la base de datos. Vuelva a generar la base de datos maestra completamente. Si no puede iniciar SQL Server a causa de daos graves en la base de datos maestra, deber volver a generar la base de datos maestra. Despus, deber restaurar la copia de seguridad completa de la base de datos maestra ms reciente, ya que al volver a generar la base de datos se pierden todos los datos.

Importante: Al volver a generar la base de datos maestra se vuelven a generar todas las bases de datos del sistema. Si las bases de datos model, msdb o distribution quedan inutilizables, restaure la base de datos desde la copia de seguridad actual completa de la base de datos.

17 Disear un plan de recuperacin. Considerar : log shipping, replicacin, consideraciones pruebas de restauraciones, controlando fallas de alta disponibilidad

de hardware, programacin ,

Al administrar una base de datos de SQL Server, es importante estar preparado para la recuperacin de desastres potenciales. Es necesario un plan de copias de seguridad y restauracin correctamente diseado y probado para poder recuperar las copias de seguridad de SQL Server de las bases de datos despus de un desastre. Adems, para garantizar que todos los sistemas y datos puedan recuperar rpidamente su funcionamiento normal en caso de un desastre natural, es necesario crear un plan de recuperacin de desastres. Durante la elaboracin de este plan es preciso tener en cuenta los escenarios de distintos tipos de desastres que pueden afectar a su negocio, incluidos los desastres naturales, como un incendio, y los desastres tcnicos, como los errores en dos discos de una matriz RAID-5. Cuando cree un plan de recuperacin de desastres, identifique y prepare todos los pasos necesarios para hacer frente a cada tipo de desastre. Debe realizar la comprobacin prctica de los pasos de recuperacin de cada escenario. Se recomienda que compruebe el plan de recuperacin de desastres mediante la simulacin de un desastre natural. Durante el diseo del plan de copias de seguridad y restauracin, es necesario realizar el diseo del plan de recuperacin de desastres segn el entorno y las necesidades del negocio. Por ejemplo, supongamos que se produce un incendio y destruye el centro de datos disponibles 24 horas al da. Est seguro de que es posible la recuperacin? Cunto tiempo se puede tardar en llevar a cabo la recuperacin y tener disponible el sistema? Cul es la cantidad de datos perdidos que pueden tolerar los usuarios? Lo ideal es que el plan de recuperacin de desastres indique el tiempo que durar la recuperacin y el estado final de las bases de datos que los usuarios pueden esperar. Por ejemplo, puede determinar que, tras la adquisicin del hardware especificado, la recuperacin debe completarse en 48 horas y slo se garantizarn los datos hasta finales de la semana previa al incidente. Un plan de recuperacin de desastres se puede estructurar de diferentes maneras y puede contener muchos tipos de informacin. Entre los tipos de planes de recuperacin de desastres se incluyen los siguientes: Un plan para adquirir el hardware. Un plan de comunicacin. Una lista de las personas con las que ponerse en contacto si se produce un desastre. Instrucciones para ponerse en contacto con las personas implicadas en la respuesta al desastre. Informacin acerca del propietario de la administracin del plan. Una lista de comprobacin de las tareas necesarias para cada escenario de recuperacin. Para facilitar la revisin de la evolucin de la recuperacin de desastres, ponga a cada tarea una inicial a medida que se vayan completando y anote la hora de finalizacin en la lista de comprobacin. Modelos de recuperacin de SQL Server SQL Server proporciona tres modelos de recuperacin alternativos: simple, completa y para cargas masivas de registros. Un modelo de recuperacin es una propiedad de la base de datos que controla el comportamiento bsico de las operaciones de copias de seguridad y restauracin de una base de datos. La eleccin del modelo de recuperacin ptimo para cada base de datos es esencial a la hora de planear la estrategia de copias de seguridad y restauracin. El modelo de recuperacin que elija para una base de datos depende hasta cierto punto de sus requisitos de disponibilidad y recuperacin. A su vez, la eleccin del modelo de recuperacin afecta a las posibilidades de recuperacin de desastres de una base de datos. Administrar medios de copia de seguridad Se recomienda que el plan de copias de seguridad estipule cmo se han de administrar los medios de copia de seguridad, por ejemplo: Un plan de seguimiento y administracin para almacenar y reciclar conjuntos de copias de seguridad. Una programacin para sobrescribir el medio de copia de seguridad.

263

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
En un entorno multiservidor, la decisin de utilizar copias de seguridad centralizadas o distribuidas. Un modo de realizar un seguimiento de la vida til del medio. Un procedimiento para minimizar los efectos de la prdida de un conjunto o medio de copia de seguridad, por ejemplo, la prdida de una cinta. La decisin de guardar los conjuntos de copia de seguridad dentro o fuera del sitio, y un anlisis de cmo afectara esta decisin al tiempo de recuperacin.

Ejecutar un script con la funcionalidad bsica Normalmente, los scripts con la funcionalidad bsica se incluyen en los planes de recuperacin de desastres para confirmar que todo funciona como se espera. Un script con la funcionalidad bsica proporciona una herramienta confiable para que los administradores de sistemas o de bases de datos puedan comprobar que se ha recuperado la base de datos con un estado viable, sin tener que depender de los usuarios finales para llevar a cabo la comprobacin. Un script con la funcionalidad bsica es especfica de la aplicacin y puede adoptar muchas formas diferentes. Por ejemplo, en un sistema de informes o ayuda a la toma de decisiones, el script puede ser simplemente una copia de varias de las consultas para informes ms importantes. Para una aplicacin de procesamiento de transacciones en lnea (OLTP), el script puede ejecutar un lote de procedimientos almacenados que contengan instrucciones INSERT, UPDATE y DELETE. Por ejemplo, un script con la funcionalidad bsica puede ser tan simple como un archivo .sql que enva instrucciones SQL por lotes al servidor desde la utilidad sqlcmd. Otro ejemplo es usar un archivo .bat que contenga los comandos bcp y sqlcmd. Garantizar la disposicin para afrontar desastres Para asegurarse de que est preparado para hacer frente a desastres, se recomienda que realice las siguientes tareas de forma peridica: Compruebe los procedimientos de copia de seguridad y recuperacin antes de que se produzca un error real. Las comprobaciones le ayudan a asegurarse de que cuenta con las copias de seguridad necesarias para recuperarse de diversos errores, que sus procedimientos estn perfectamente definidos y documentados y que cualquier operario cualificado puede ejecutarlos rpidamente y sin problemas. Para que la cantidad de datos perdidos sea mnima, realice peridicamente copias de seguridad de las bases de datos y los registros de transacciones. Se recomienda realizar copias de seguridad del sistema y de las bases de datos de los usuarios. Mantenga los registros del sistema de manera segura. Conserve registros de todos los Service Pack instalados en Microsoft Windows y SQL Server. Conserve registros de las bibliotecas de red usadas y del modo de seguridad. Asimismo, si SQL Server se ejecuta en autenticacin de modo mixto (modo de autenticacin de SQL Server y de Windows), guarde la contrasea de sa en un lugar seguro. Importante: La autenticacin de Windows es mucho ms segura que la de SQL Server. Siempre que sea posible, utilice la autenticacin de Windows.

En otro servidor, evale por anticipado los pasos que debe seguir para la recuperacin de un desastre, modifquelos segn sea necesario para ajustarlos a su entorno de servidor local y compruebe los pasos modificados. Conserve un script con la funcionalidad bsica a fin de evaluar rpidamente la capacidad mnima. Revisar y reducir los posibles errores desastrosos del usuario Uno de los escenarios de recuperacin ms difciles es recuperarse de un error de usuario importante, como quitar objetos de la base de datos de forma accidental. En esta seccin se enumeran herramientas que le pueden ayudar a revisar y en algunos casos a regular los cambios efectuados a las bases de datos. Desencadenadores del lenguaje de definicin de datos (DDL) Estos desencadenadores se pueden crear para revisar y regular algunos cambios del esquema de base de datos. Los desencadenadores DDL activan procedimientos almacenados en respuesta a una variedad de instrucciones DDL. Estas instrucciones son bsicamente las que empiezan por CREATE, ALTER y DROP. El mbito de un desencadenador DDL puede ser una base de datos determinada o una instancia de servidor completa. Notificaciones de eventos Las notificaciones de eventos se ejecutan en respuesta a una variedad de instrucciones DDL de Transact-SQL y eventos de la traza de SQL, y envan informacin acerca de esos eventos a un servicio de Service Broker. Se pueden programar notificaciones de eventos para muchos de los eventos capturados por Traza de SQL, Pero, en lugar de usarlas para crear trazas, puede usar dichas notificaciones para realizar una accin en una instancia de SQL Server como respuesta a eventos. Dado que las notificaciones de eventos se ejecutan de forma asincrnica, estas acciones no consumen recursos definidos por la transaccin inmediata. Nota: No todos los eventos DDL se pueden utilizar en desencadenadores DDL. Algunos eventos estn diseados nicamente para instrucciones asincrnicas, no transaccionales. Por ejemplo, en un desencadenador DDL no se puede utilizar un evento CREATE DATABASE. Para estos eventos debe utilizar notificaciones de eventos.

Agente SQL Server Se trata de un servicio de Windows que ejecuta tareas administrativas programadas, denominadas trabajos. El Agente SQL Server utiliza SQL Server para almacenar informacin de los trabajos. Entre otras cosas, el Agente SQL Server puede ejecutar un trabajo en respuesta a un evento concreto; por ejemplo, errores que tienen un nivel de gravedad o un nmero de mensaje especficos. Traza de SQL La traza de SQL proporciona procedimientos almacenados del sistema Transact-SQL para crear trazas sobre clases de eventos seleccionadas por el usuario en una instancia de SQL Server Database Engine (Motor de base de datos de SQL Server). Puede utilizar estos procedimientos almacenados del sistema desde sus propias aplicaciones para crear trazas manualmente. Nota: El Analizador de SQL Server es una interfaz grfica de usuario de la traza de SQL que se usa para supervisar una instancia de Database Engine (Motor de base de datos) o Analysis Services.

264

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

18 Disear una solucin de monitoreo al nivel de sistema de operacin. Considerar: contadores de monitor del sistema, logs de evento, vistas de control dinmico y funciones, Windows Management Instrumentation (WMI), monitoreo remoto, analizar resultados

Si est ejecutando el sistema operativo de servidor de Microsoft Windows, utilice la herramienta grfica Monitor de sistema para medir el rendimiento de SQL Server. Puede ver los objetos de SQL Server, los contadores de rendimiento y el comportamiento de otros objetos, como procesadores, memoria, cach, subprocesos y procesos. Cada uno de estos objetos tiene asociado un conjunto de contadores que miden el uso de los dispositivos, la longitud de las colas, las demoras y otros indicadores del rendimiento y la congestin interna. Escenarios del Monitor del Sistema Al supervisar SQL Server y el sistema operativo Microsoft Windows para investigar problemas relacionados con el rendimiento, hay tres reas principales en las que debe concentrarse inicialmente:

Actividad del disco Uso del procesador

Uso de la memoria

Puede resultar til supervisar el sistema operativo Windows y los contadores de SQL Server al mismo tiempo para determinar las posibles correlaciones entre el rendimiento de SQL Server y el de Windows. Por ejemplo, la supervisin simultnea de los contadores de E/S de disco de Windows y los contadores del Administrador de bfer de SQL Server puede mostrar el comportamiento del sistema en su totalidad. La supervisin de un equipo en el que se ejecuta el Monitor de sistema puede afectar un poco al rendimiento del equipo. Por tanto, registre los datos del Monitor de sistema en otro disco o en otro equipo para reducir as el efecto en el equipo que est supervisando, o bien ejecute el Monitor de sistema desde un equipo remoto. Supervise slo los contadores en los que est interesado. Si supervisa demasiados contadores, la sobrecarga de uso de los recursos se agrega al proceso de supervisin y afecta al rendimiento del equipo que se est supervisando. El Monitor de sistema permite obtener estadsticas sobre la actividad y el rendimiento actuales de SQL Server. Con el Monitor de sistema, puede:

Ver simultneamente datos de cualquier nmero de equipos.

Ver y cambiar grficos para reflejar la actividad actual y mostrar valores de contadores que se actualizan con la frecuencia definida por el usuario. Exportar datos desde grficos, registros, registros de alertas e informes a aplicaciones de hoja de clculo o de base de datos para manipularlos e imprimirlos. Agregar alertas del sistema que muestran un evento en el registro de alertas y que pueden notificarse mediante una alerta de red. Ejecutar un programa predefinido la primera vez, o todas las veces, que el valor de un contador sea superior o inferior a un valor definido por el usuario. Crear archivos de registro que contengan datos relativos a diversos objetos de equipos diferentes. Anexar a un archivo secciones seleccionadas de otros archivos de registro existentes para crear un archivo de almacenamiento a largo plazo. Ver informes de la actividad actual o crear informes a partir de archivos de registro existentes. Guardar la configuracin de grficos, alertas, registros o informes individuales, o bien de toda el rea de trabajo, para volverla a utilizar. Nota: El Monitor de sistema ha reemplazado al Monitor de rendimiento despus de Windows NT 4.0. Para realizar estas tareas, puede utilizar el Monitor de sistema o el Monitor de rendimiento.

Supervisar la actividad del disco Microsoft SQL Server utiliza las llamadas de entrada y salida (E/S) del sistema operativo Microsoft Windows para realizar operaciones de lectura/escritura en el disco. SQL Server administra cundo y cmo se realiza la E/S del disco, pero el sistema operativo Windows realiza las operaciones de E/S subyacentes. El subsistema de E/S incluye el bus del sistema, tarjetas controladoras de disco, discos, unidades de cinta, la unidad de CD-ROM y muchos otros dispositivos de E/S. La E/S del disco es una causa frecuente de los atascos en un sistema.

265

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
La supervisin de la actividad del disco implica dos aspectos bsicos:

Supervisar la E/S del disco y detectar la paginacin excesiva Aislar la actividad del disco creada por SQL Server

Supervisar la E/S del disco y detectar la paginacin excesiva

Dos de los contadores que se pueden supervisar para determinar la actividad del disco son:

DiscoFsico: % Tiempo de disco DiscoFsico: Long. media de la cola de disco

En el Monitor del sistema, el contador DiscoFsico: % Tiempo de disco supervisa el porcentaje de tiempo que el disco est ocupado con operaciones de lectura/escritura. Si el valor del contador DiscoFsico: % Tiempo de disco es alto (ms del 90%), compruebe el contador DiscoFsico: Longitud actual de la cola de disco para ver el nmero de peticiones del sistema que estn en espera de acceso al disco. El nmero de peticiones de E/S en espera debe mantenerse en un mximo de 1,5 a 2 veces el nmero de ejes que componen el disco fsico. La mayor parte de los discos tienen un eje, aunque los dispositivos de matriz redundante de discos independientes (RAID, Redundant Array of Independent Disks) suelen tener ms. Un dispositivo RAID de hardware aparece como un disco fsico en el Monitor del sistema. Los dispositivos RAID creados mediante software aparecen como varias instancias en el Monitor del sistema. Utilice los valores de los contadores Longitud actual de la cola de disco y % Tiempo de disco para detectar puntos de congestin en el subsistema de disco. Si los valores de los contadores Longitud actual de la cola de disco y % Tiempo de disco son altos, considere la posibilidad de:

Utilizar una unidad de disco ms rpida. Mover algunos archivos a otro disco o servidor.

Agregar discos a una matriz RAID, si se est utilizando una.

Si utiliza un dispositivo RAID, el contador % Tiempo de disco puede indicar un valor superior al 100%. En tal caso, utilice el contador DiscoFsico: Long. media de la cola de disco para determinar el promedio de peticiones del sistema que estn en espera de acceso al disco. Las aplicaciones y sistemas enlazados a E/S pueden mantener el disco constantemente activo. Supervise el contador Memoria: Errores de pgina/s. para asegurarse de que la actividad del disco no est causada por la paginacin. En Windows, la paginacin est causada por lo siguiente:

Procesos configurados para utilizar demasiada memoria

Actividad del sistema de archivos

Si tiene ms de una particin lgica en el mismo disco duro, utilice los contadores Disco lgico en lugar de los contadores Disco fsico. Si observa los contadores de disco lgico, podr determinar los archivos con un acceso frecuente. Una vez que haya encontrado los discos con mucha actividad de lectura/escritura, observe los contadores especficos de lectura/escritura para ver el tipo de actividad del disco que causa la carga en cada volumen lgico. Por ejemplo, Disco lgico: Bytes escritos en disco por segundo.

Aislar la actividad del disco creada por SQL Server Dos de los contadores que se pueden supervisar para determinar el volumen de actividad de E/S que generan los componentes de SQL Server son los siguientes:

SQL Server:Buffer Manager:Lecturas de pgina/seg.

SQL Server:Buffer Manager:Escrituras de pgina/seg.

En el Monitor del sistema, estos contadores supervisan el volumen de actividad de E/S que generan los componentes de SQL Server examinando las reas de rendimiento siguientes:

Escritura de pginas en disco

Lectura de pginas del disco

Si los valores de estos contadores comienzan a acercarse al lmite de capacidad del subsistema de E/S de hardware, intente reducirlos, ya sea optimizando la aplicacin o la base de datos, para reducir las operaciones de E/S (como el alcance de los ndices, mejores ndices o la normalizacin), aumentando la capacidad de E/S del hardware o agregando memoria. Por ejemplo, puede utilizar el Asistente para la optimizacin de motor de base de datos para analizar cargas de trabajo habituales de SQL Server y crear recomendaciones para ndices, vistas indizadas y particiones con el fin de mejorar el rendimiento del servidor.

266

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Supervisar el uso del CPU Supervise una instancia de Microsoft SQL Server peridicamente para determinar si los ndices de uso de la CPU son normales. Un ndice de uso de la CPU constantemente alto puede indicar la necesidad de actualizar la CPU o de agregar varios procesadores. Adems, un uso alto de la CPU puede indicar que hay una aplicacin mal optimizada o diseada. La optimizacin de la aplicacin puede reducir el uso de la CPU. El contador Procesador: % de tiempo de procesador en el Monitor de sistema es la forma ms eficaz de determinar el uso de la CPU. Este contador supervisa el tiempo que la CPU dedica a la ejecucin de un subproceso que no est inactivo. Un estado continuado de entre el 80 y el 90 por ciento puede ser indicativo de que es necesario actualizar la CPU o bien agregar ms procesadores. Para sistemas con mltiples procesadores, es necesario supervisar una instancia independiente de este contador para cada procesador. Este valor representa la suma del tiempo de procesador en un procesador especfico. Para determinar la media para todos los procesadores de impresin, utilice el contador Sistema: % Tiempo total de procesador en su lugar. Para supervisar el uso del procesador tambin puede utilizar los siguientes contadores:

Procesador: % Tiempo privilegiado Porcentaje de tiempo de procesador dedicado a la ejecucin de comandos del kernel de Microsoft Windows, como el procesamiento de solicitudes de E/S de SQL Server. Si este contador es constantemente alto cuando los contadores Disco fsico son altos, considere la posibilidad de instalar un subsistema de disco ms rpido o eficaz. Nota: Los diversos controladores de disco emplean distintos intervalos de tiempo de proceso del kernel. Los controladores eficaces utilizan menos tiempo privilegiado y dejan ms tiempo de proceso disponible para aplicaciones del usuario, y aumentan as el rendimiento global.

Procesador: % Tiempo de usuario Porcentaje de tiempo que el procesador dedica a la ejecucin de procesos de usuario, como por ejemplo SQL Server. Sistema: Longitud de la cola del procesador Nmero de subprocesos en espera del tiempo del procesador. Se produce un punto de congestin en el procesador cuando los subprocesos de un proceso requieren ms ciclos de procesador que los disponibles. Si bastantes procesos intentan utilizar el tiempo de procesador, puede que sea necesario instalar un procesador ms rpido. Si dispone de una sistema con mltiples procesadores, puede agregar un procesador.

Cuando examine el uso de los procesadores, tenga en cuenta el tipo de trabajo que realiza la instancia de SQL Server. Si SQL Server realiza muchos clculos, como consultas relativas a agregados o consultas enlazadas a memoria que no requieren E/S del disco, puede utilizarse el 100% del tiempo del procesador. Si esto afecta negativamente al rendimiento de otras aplicaciones, pruebe a variar la carga de trabajo. Por ejemplo, dedique el equipo a ejecutar la instancia de SQL Server. Los valores de uso en torno al 100%, que indican que se estn procesando muchas peticiones de clientes, pueden mostrar que los procesos estn en cola, en espera del tiempo del procesador y estn causando un punto de congestin. Para solucionar este problema, agregue procesadores de mayor velocidad.

Supervisar el uso de la memoria Supervise una instancia de SQL Server peridicamente para confirmar que la utilizacin de la memoria se encuentra dentro de los intervalos normales. Para supervisar las condiciones de memoria insuficiente, utilice los contadores de objetos siguientes:

Memoria: Bytes disponibles

Memoria: Pginas/seg

El contador Bytes disponibles indica en bytes la memoria disponible actualmente para procesos. El contador Pginas/seg indica el nmero de pginas que se han recuperado del disco debido a errores de pgina no recuperables o que se han escrito en disco para liberar espacio en el espacio de trabajo debido a errores de pgina. Un valor bajo en el contador Bytes disponibles puede indicar una escasez general de memoria en el equipo o que un programa no est liberando memoria. Un valor alto en el contador Pginas/seg puede indicar una paginacin excesiva. Supervise el contador Memoria: Errores de pgina/s. para asegurarse de que la actividad del disco no est causada por la paginacin. Una tasa baja de paginacin (y por tanto, de errores de pgina) es normal, incluso si el equipo tiene mucha memoria disponible. El Administrador de memoria virtual (VMM) de Microsoft Windows sustrae pginas de SQL Server y otros procesos a medida que recorta los tamaos del espacio de trabajo para estos procesos, lo que suele provocar errores de pgina. Para determinar si SQL Server u otro proceso, est causando una paginacin excesiva, supervise el contador Proceso: Errores de pgina/s. de la instancia del proceso de SQL Server.

Aislar la memoria que utiliza SQL Server De forma predeterminada, SQL Server cambia dinmicamente sus necesidades de memoria segn los recursos del sistema disponibles. Si SQL Server necesita ms memoria, consulta el sistema operativo para determinar si hay memoria fsica disponible y la utiliza. Si SQL Server no necesita la memoria que tiene asignada actualmente, la libera para el sistema operativo. Sin embargo, el uso dinmico de la memoria puede anularse mediante las opciones de configuracin de servidor min server memory y max server memory . Para supervisar la cantidad de memoria que utiliza SQL Server, examine los siguientes contadores de rendimiento:

267

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Proceso: Espacio de trabajo SQL Server: Buffer Manager: Frecuencia de aciertos de cach del bfer

SQL Server: Buffer Manager: Total de pginas SQL Server: Memory Manager: Memoria total del servidor (KB)

El contador Espacio de trabajo muestra la cantidad de memoria que utiliza un proceso. Si este nmero es constantemente inferior a la cantidad de memoria establecida en las opciones del servidor min server memory y max server memory, SQL Server est configurado para utilizar ms memoria de la que necesita. El contador Frecuencia de aciertos de cach del bfer es especfico de la aplicacin. Sin embargo, es preferible un porcentaje del 90% o superior. Agregue ms memoria hasta que el valor sea superior al 90%, lo que indica que se ha atendido ms del 90% de todas las peticiones de informacin de la cach de datos. Si el valor del contador Memoria total del servidor (KB) es constantemente alto en comparacin con la cantidad de memoria fsica del equipo, puede que indique que se necesita ms memoria. Crear una alerta de base de datos de SQL Server El Monitor del sistema permite crear una alerta que se activar al alcanzar un valor de umbral de un contador del Monitor del sistema. Como respuesta a la alerta, el Monitor del sistema puede iniciar una aplicacin, como por ejemplo una aplicacin personalizada creada para tratar la condicin de alerta. Por ejemplo, puede crear una alerta que se active cuando el nmero de interbloqueos sea superior a un valor especfico. Tambin se pueden definir alertas mediante SQL Server Management Studio y el Agente SQL Server. Definir alertas SQL Server genera eventos que se incluyen en el registro de aplicacin de Microsoft Windows.El Agente SQL Server lee el registro de aplicacin y compara los eventos con las alertas definidas. Cuando el Agente SQL Server encuentra una coincidencia, activa una alerta, que es una respuesta automatizada a un evento. Adems de supervisar los eventos de SQL Server, el Agente SQL Server tambin puede supervisar las condiciones de rendimiento y los eventos de Instrumental de administracin de Windows (WMI). Para definir una alerta, debe especificar:

El nombre de la alerta. El evento o condicin de rendimiento que desencadena la alerta.

La accin que el Agente SQL Server realiza como respuesta al evento o condicin de rendimiento.

Asignar nombre a una alerta Cada alerta debe tener un nombre. Los nombres de las alertas deben ser exclusivos en la instancia de SQL Server y no pueden tener ms de 128 caracteres. Seleccionar un tipo de evento Una alerta responde a un tipo de evento especfico. Las alertas responden a los siguientes tipos de evento:

Eventos de SQL Server

Condiciones de rendimiento de SQL Server Eventos de WMI

El tipo de evento determina los parmetros que se utilizan para especificar el evento preciso. Especificar un evento de SQL Server Puede especificar una alerta para que se produzca en respuesta a uno o ms eventos. Utilice los siguientes parmetros para especificar los eventos que desencadenan una alerta:

Nmero de error El Agente SQL Server activa una alerta cuando se produce un error especfico. Por ejemplo, puede especificar el nmero de error 2571 para responder a los intentos no autorizados de invocar comandos de consola de base de datos (DBCC). Nivel de gravedad El Agente SQL Server activa una alerta cuando se produce un error de la gravedad especfica. Por ejemplo, puede especificar el nivel de gravedad 15 para responder a errores de sintaxis en instrucciones Transact-SQL. Base El Agente SQL Server slo activa una aplica adems del nmero de error o utiliza para la produccin y una base responda a los errores de sintaxis slo de datos alerta cuando el evento tiene lugar en una base de datos determinada. Esta opcin se el nivel de gravedad. Por ejemplo, si una instancia contiene una base de datos que se de datos que se utiliza para la elaboracin de informes, puede definir una alerta que en la base de datos de produccin.

268

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Texto del evento El Agente SQL Server activa una alerta cuando el evento especificado contiene una cadena de texto determinada en el mensaje de evento. Por ejemplo, puede definir una alerta que responda a los mensajes que contienen el nombre de una tabla o restriccin determinada.

Seleccionar una condicin de rendimiento Puede especificar una alerta para que se active en respuesta a una condicin de rendimiento determinada. En este caso, debe especificar el contador de rendimiento que se supervisa, un umbral para la alerta y el comportamiento que el contador debe mostrar si la alerta tiene lugar. Para establecer una condicin de rendimiento, debe definir los siguientes elementos en la pgina General del cuadro de dilogo Nueva alerta o Propiedades de alerta del Agente SQL Server:

Objeto El objeto es el rea de rendimiento que se supervisa. Contador Un contador es un atributo del rea que se supervisa. Instancia La instancia de SQL Server define la instancia especfica (si la hay) del atributo que se va a supervisar. Alertar si el contador y Valor El umbral de la alerta y el comportamiento que genera la alerta. El umbral es un nmero. El comportamiento puede ser: est por debajo de, es igual a o est por encima de un nmero especificado en Valor. El Valor es un nmero que describe el contador de condicin de rendimiento. Por ejemplo, para establecer una alerta que tendr lugar para el objeto de rendimiento SQLServer:Locks cuando pasen 30 minutos del Tiempo de espera de bloqueos, deber elegir est por encima de y especificar 30 para el valor. En otro ejemplo, puede especificar que una alerta tenga lugar para el objeto de rendimiento SQLServer:Transactions cuando el espacio disponible en tempdb est por debajo de 1000 KB. Para ello, escoger el contador Espacio disponible en tempdb (KB), est por debajo de y un Valor de 1000. Nota: Se muestrean peridicamente los datos de rendimiento, lo que puede causar una pequea demora (unos segundos) entre el momento en que se alcanza el umbral y la activacin de la alerta relativa al rendimiento.

Seleccionar un evento de WMI Puede especificar que una alerta tenga lugar como respuesta a un determinado evento de WMI. Para seleccionar un evento de WMI, debe definir lo siguiente en la pgina General del cuadro de dilogo Nueva alerta o Propiedades de alerta del Agente SQL Server:

Espacio de nombres El Agente SQL Server se registra como un cliente de WMI en el espacio de nombres de WMI que se proporciona para consultar los eventos. Consulta El Agente SQL Server utiliza la instruccin de Lenguaje de consulta de Instrumental de administracin de Windows (WQL) proporcionada para identificar el evento especfico.

Configurar una alerta de base de datos de SQL Server (Windows)

1. 2. 3. 4.

En el rbol de navegacin de la ventana Rendimiento, expanda Registros y alertas de rendimiento.

Haga clic con el botn secundario en Alertas y, a continuacin, haga clic en Nueva configuracin de alerta.

En el cuadro de dilogo Nueva configuracin de alerta, escriba el nombre de la nueva alerta y, a continuacin, haga clic en Aceptar.

En la ficha General del cuadro de dilogo de la nueva alerta, agregue un Comentario y haga clic en Agregar para agregar un contador a la alerta. Todas las alertas deben tener, como mnimo, un contador.

5. 6. 7.

En el cuadro de dilogo Agregar contadores, seleccione un objeto de SQL Server de la lista Objeto de rendimiento y, a continuacin, seleccione un contador en Seleccionar contadores de la lista.

Para agregar el contador a la alerta, haga clic en Agregar. Puede continuar agregando contadores o hacer clic en Cerrar para volver al cuadro de dilogo de la nueva alerta.

En el cuadro de dilogo de la nueva alerta, haga clic en Superior a o Inferior a en Alertar cuando el valor sea, y escriba un valor de umbral en Lmite.

269

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
La alerta se genera cuando el valor del contador es superior o inferior al valor de umbral, dependiendo de si ha elegido Superior a o Inferior a.

8. 9.

En los cuadros Tomar datos de muestra cada, establezca la frecuencia de muestreo.

En la ficha Accin, establezca las acciones que tendrn lugar cada vez que se desencadene la alerta.

10. En la ficha Programacin, establezca el programa de inicio y fin de deteccin de alertas.


Ejecutar el monitor del sistema El Monitor del sistema utiliza llamadas a procedimiento remoto (RPC) para recopilar informacin de Microsoft SQL Server. Cualquier usuario que disponga de permisos de Microsoft Windows para ejecutar el Monitor del sistema puede utilizarlo para supervisar SQL Server. Nota: Cuando utilice el Monitor del sistema o el Monitor de rendimiento, no podr conectarse a una instancia de SQL Server que se ejecute en Windows 98. Al igual que con todas las herramientas para la supervisin del rendimiento, es normal que se produzca una disminucin del rendimiento al supervisar SQL Server con el Monitor del sistema. La sobrecarga real en una instancia especfica depender de la plataforma de hardware, el nmero de contadores y el intervalo de actualizacin seleccionado. No obstante, la integracin del Monitor del sistema con SQL Server est diseada para que la disminucin del rendimiento sea la mnima. Nota: Si ha seleccionado los contadores de rendimiento de SQL Server para la supervisin en el complemento Monitor del sistema, los contadores estarn presentes aunque no se ejecute SQL Server. Iniciar el Monitor del Sistema En el men Inicio, haga clic en Ejecutar, escriba perfmon en el cuadro de texto y haga clic en Aceptar

Crear grficos, alertas, registros e informes

El Monitor de sistema le permite crear grficos, alertas, registros e informes para supervisar una instancia de SQL Server. Grficos Los grficos pueden supervisar el rendimiento actual de los objetos y contadores seleccionados; por ejemplo, el uso de la CPU o la E/S de disco. Puede agregar a un grfico varias combinaciones de objetos y contadores del Monitor de sistema. Tambin puede agregar objetos y contadores de Microsoft a un grfico. Cada grfico representa un subconjunto de informacin que desea supervisar. Por ejemplo, mediante un grfico puede realizar el seguimiento de las estadsticas relativas al uso de la memoria y, con otro grfico, el seguimiento de las estadsticas relativas a la E/S de disco. El uso de grficos puede resultar til para realizar las siguientes tareas:

Investigar las causas de la lentitud o la ineficacia de equipos o aplicaciones. Supervisar sistemas de manera continua para buscar problemas de rendimiento intermitentes.

Descubrir las causas de la necesidad de aumentar la capacidad. Mostrar una tendencia como un grfico de lneas.

Mostrar comparaciones en histogramas.

Los grficos son tiles para la supervisin a corto plazo en tiempo real de equipos locales o remotos, por ejemplo, cuando se desea supervisar un evento a medida que se produce.

Alertas Mediante las alertas, el Monitor de sistema realiza un seguimiento de eventos especficos y le notifica dichos eventos cuando lo solicite. El registro de alertas permite supervisar el rendimiento actual de contadores e instancias seleccionados de objetos de SQL Server. Cuando un contador supera un valor determinado, se guardan en el registro la fecha y hora del evento. Un evento tambin puede generar una alerta de red. Puede establecer la ejecucin de un programa especfico la primera vez o cada vez que se produzca un evento. Por ejemplo, una alerta puede enviar un mensaje de red a todos los administradores del sistema acerca de que la instancia de SQL Server se est quedando sin espacio en disco.

270

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Registros Los registros permiten grabar informacin acerca de la actividad actual de objetos y equipos seleccionados para su posterior presentacin y anlisis. Puede recopilar datos de mltiples sistemas en un nico archivo de registro. Por ejemplo, puede crear diferentes registros para acumular informacin acerca del rendimiento de objetos seleccionados en diversos equipos para su posterior anlisis. Asimismo, puede guardar estas selecciones en un archivo y volverlas a utilizar cuando desee crear otro registro con informacin similar para realizar una comparacin. Los archivos de registro proporcionan una gran cantidad de informacin para la solucin de problemas y el planeamiento. Mientras que los grficos, alertas e informes acerca de la actividad actual proporcionan una evaluacin instantnea, los archivos de registro permiten realizar un seguimiento de los contadores durante un largo perodo de tiempo. Por tanto, puede analizar la informacin ms exhaustivamente y documentar el rendimiento del sistema.

Informes Los informes permiten mostrar el cambio continuo en los valores de contadores e instancias de los objetos seleccionados. Los valores se muestran en columnas para cada instancia. Puede ajustar los intervalos de informes, imprimir instantneas y exportar datos. Utilice informes cuando necesite mostrar los nmeros sin procesar. Usar objetos de SQL Server Microsoft SQL Server incluye objetos y contadores que el Monitor de sistema puede utilizar para supervisar la actividad de los equipos en los que se ejecute una instancia de SQL Server. Un objeto es cualquier recurso de SQL Server como, por ejemplo, un bloqueo de SQL Server o un proceso de Windows XP. Cada objeto contiene uno o ms contadores que determinan diversos aspectos de los objetos que se van a supervisar. Por ejemplo, el objeto Bloqueos de SQL Server contiene los contadores Nmero de interbloqueos/seg. y Tiempos de espera de bloqueos/seg. Algunos objetos tienen varias instancias si existen varios recursos de un determinado tipo en el equipo. Por ejemplo, el tipo de objeto Procesador tendr varias instancias si un sistema contiene varios procesadores. El tipo de objeto Bases de datos tiene una instancia para cada base de datos de SQL Server. Algunos tipos de objetos (por ejemplo, el objeto Administradorde memoria) tienen slo una instancia. Si un tipo de objeto tiene varias instancias, puede agregar contadores para realizar un seguimiento de las estadsticas relativas a cada instancia o, en muchos casos, de todas las instancias a la vez. Los contadores de la instancia predeterminada aparecen con el formato SQLServer:<object name>. Los contadores de las instancias con nombre aparecen con el formato MSSQL$<instance name>:<counter name> o SQLAgent$<instance name>:<counter name>. Al agregar o quitar contadores en el grfico y guardar la configuracin del grfico, puede especificar los objetos y contadores de SQL Server que se supervisan al iniciar el Monitor de sistema. Puede configurar el Monitor de sistema para que muestre las estadsticas de cualquier contador de SQL Server. Adems, puede establecer un valor de umbral para cualquier contador de SQL Server y generar posteriormente una alerta cuando un contador supere dicho umbral. Nota: Las estadsticas de SQL Server se muestran slo si se instala una instancia de SQL Server. Si detiene y reinicia una instancia de SQL Server, se interrumpir la presentacin de estadsticas y, despus, se reanudar automticamente. Tenga en cuenta tambin que ver los contadores de SQL Server en el complemento del Monitor de sistema incluso si SQL Server no se est ejecutando. En una instancia agrupada, los contadores de rendimiento slo funcionan en el nodo en el que se ejecuta SQL Server. En la siguiente tabla se describen los objetos de SQL Server. Objeto de rendimiento Descripcin

SQLServer:Mtodos de acceso

Mide y realiza bsquedas mediante objetos de base de datos de SQL Server y su asignacin (por ejemplo, el nmero de bsquedas de ndices o de pginas asignadas a ndices y datos).

SQLServer:Backup Device

Proporciona informacin acerca de dispositivos de copia de seguridad utilizados para operaciones de copias de seguridad y restauracin, como el rendimiento del dispositivo.

SQLServer:Buffer Manager

Proporciona informacin acerca de los bferes de memoria que utiliza SQL Server, como la memoria disponible y la proporcin de aciertos de cach del bfer.

SQLServer:Buffer Manager

Proporciona informacin acerca de la frecuencia con que SQL Server solicita pginas libres y obtiene acceso a las mismas.

SQLServer:CLR

Proporciona informacin acerca de Common Language Runtime (CLR).

SQLServer:Cursor Manager by Type

Proporciona informacin acerca de los cursores.

SQLServer:Cursor Manager Total

Proporciona informacin acerca de los cursores.

SQLServer:Database Mirroring

Proporciona informacin acerca de la creacin de reflejos de la base de datos.

SQLServer:Databases

Proporciona informacin acerca de una base de datos de SQL Server, como la cantidad de espacio

271

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

de registro disponible o el nmero de transacciones activas en la base de datos. Pueden existir mltiples instancias de este objeto.

SQL Server:Deprecated Features

Cuenta el nmero de veces que se usan las caractersticas obsoletas.

SQLServer:Exec Statistics

Proporciona informacin acerca de las estadsticas de ejecucin.

SQLServer:General Statistics

Proporciona informacin acerca de la actividad general de todo el servidor, como el nmero de usuarios conectados a una instancia de SQL Server.

SQLServer:Latches

Proporciona informacin acerca de los bloqueos temporales de los recursos internos, como las pginas de las bases de datos que utiliza SQL Server.

SQLServer:Locks

Proporciona informacin acerca de las peticiones de bloqueo individuales que realiza SQL Server, como los tiempos de espera de bloqueos y los interbloqueos. Pueden existir mltiples instancias de este objeto.

SQLServer:Memory Manager

Proporciona informacin acerca de la utilizacin de memoria de SQL Server como, por ejemplo, el nmero total de estructuras de bloqueo asignadas actualmente.

SQLServer:Cach del plan

Proporciona informacin acerca de la cach de SQL Server que se utiliza para almacenar objetos como procedimientos almacenados, desencadenadores y planes de consultas.

SQLServer:Estadsticas de grupo de Proporciona informacin sobre las estadsticas del grupo de recursos de servidor del regulador de recursos de servidor recursos.

SQLServer:SQL Errors

Proporciona informacin acerca de los errores de SQL Server.

SQLServer:Estadsticas de SQL

Proporciona informacin acerca de aspectos de consultas de Transact-SQL, como el nmero de lotes de instrucciones Transact-SQL que recibe SQL Server.

SQLServer:Transactions

Proporciona informacin acerca de las transacciones activas de SQL Server, como el nmero global de transacciones y el nmero de transacciones de instantneas.

SQLServer:User Settable

Realiza una supervisin personalizada. Cada contador puede ser un procedimiento almacenado personalizado o cualquier instruccin Transact-SQL que devuelva un valor para supervisar.

SQLServer:Estadsticas de espera

Proporciona informacin acerca de las esperas.

SQLServer:Estadsticas de grupo de Proporciona informacin sobre las estadsticas de grupo de cargas de trabajo del regulador de cargas de trabajo recursos.

En la siguiente tabla se indican los objetos de rendimiento suministrados para Service Broker. Objeto de rendimiento Descripcin

SQLServer:Broker Activation

Proporciona informacin acerca de las tareas activadas de Service Broker.

SQLServer:Broker Statistics

Proporciona informacin general sobre Service Broker.

SQLServer:Broker Transport

Proporciona informacin acerca de la conexin a red de Service Broker.

En la siguiente tabla se indican los objetos de rendimiento suministrados para el Agente SQL Server. Objeto de rendimiento Descripcin

SQLAgent:Alerts

Proporciona informacin acerca de las alertas del Agente SQL Server.

SQLAgent:Jobs

Proporciona informacin acerca de los trabajos del Agente SQL Server.

272

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

SQLAgent:JobSteps

Proporciona informacin acerca de los pasos de trabajos del Agente SQL Server.

SQLAgent:Statistics

Proporciona informacin acerca del Agente SQL Server.

En la siguiente tabla se indican los objetos de rendimiento suministrados para la replicacin de SQL Server. Objeto de rendimiento Descripcin

SQLServer:Agentes de replicacin SQLServer:Instantnea de replicacin SQLServer:Lector del registro de replicacin SQLServer:Distribuidor de replicacin SQLServer:Mezcla de replicacin

Proporciona informacin acerca de la actividad del agente de replicacin.

Permisos necesarios La posibilidad de utilizar los objetos de SQL Server depende de los permisos de Windows, salvo SQLAgent:Alertas. Los usuarios deben ser miembros de la funcin fija de servidor sysadmin para poder utilizar SQLAgent:Alerts.

19 Disear una solucin de monitoreo a nivel de instancia. Considerar: instancia, monitoreo de Base de Datos y objetos, coleccin de datos, notificaciones de eventos, control dinmico de objetos, analizar resultados Monitor de actividad

Utilice el Monitor de actividad para obtener informacin sobre los procesos de SQL Server y el modo en que stos afectan a la instancia actual de SQL Server. El Monitor de actividad es una ventana de organizacin por fichas cuyos paneles, que se presentan a continuacin, se pueden expandir o contraer: Informacin general, Tareas de usuario activas, Esperas de recursos, E/S de archivo de datos y Consultas costosas recientes. Cuando un panel est expandido, el Monitor de actividad est consultando la instancia en busca de informacin. Si el panel est contrado, cualquier actividad de consulta se detiene en ese panel. Se pueden expandir uno o varios paneles al mismo tiempo para ver diferentes tipos de actividad de la instancia. En las columnas incluidas en los paneles Tareas de usuario activas, Esperas de recursos, E/S de archivo de datos y Consultas costosas recientes, se puede personalizar la presentacin mediante los mecanismos siguientes:

Para reorganizar el orden de las columnas, haga clic en el encabezado de una columna y arrstrelo hasta otra ubicacin de la cinta de opciones del encabezado. Para ordenar una columna, haga clic en el nombre de la columna.

Para filtrar por una o varias columnas, haga clic en la flecha de lista desplegable del encabezado de columna y, a continuacin, seleccione un valor.

Para ver el Monitor de actividad en SQL Server 2005 y SQL Server 2008, el usuario debe tener el permiso VIEW SERVER STATE. Para ver el Monitor de actividad en un servidor de SQL Server 2000, el usuario necesita el permiso SELECT para las tablas sysprocesses y syslocks de la base de datos maestra. El permiso para ver estas tablas se concede de forma predeterminada a la funcin de base de datos pblica. Para detener (KILL) un proceso, el usuario debe ser miembro de las funciones de servidor fijas sysadmin o processadmin.

Informacin general (panel) En este panel se muestran las siguientes representaciones grficas de la informacin de la instancia: % de tiempo de procesador Porcentaje de tiempo que transcurre mientras el procesador ejecuta subprocesos no inactivos de la instancia en todas las CPU. Tareas en espera Nmero de tareas que estn a la espera del procesador, E/S o recursos de memoria. E/S de base de datos Velocidad de transferencia, en megabytes por segundo, de los datos de la memoria al disco, del disco a la memoria o del disco al disco.

273

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Solicitudes por lotes/s Nmero de lotes de SQL Server que la instancia recibe. Adems de proporcionar informacin de la instancia, este panel tambin proporciona acceso a las opciones del Monitor de actividad. Si hace clic con el botn secundario del mouse en Informacin general, puede seleccionar las opciones siguientes: Intervalo de actualizacin Permite definir el intervalo de actualizacin del Monitor de actividad. Esta opcin permite configurar la frecuencia con la que el Monitor de actividad consulta la instancia en busca de nueva informacin. Cuando el intervalo de actualizacin se establece en un valor inferior a 10 segundos, el tiempo utilizado para ejecutar estas consultas puede afectar al rendimiento del servidor. Nota: El intervalo de actualizacin de Consultas costosas recientes es siempre de 30 segundos. Pausar Pausa el Monitor de actividad, incluidos todos los procesos del Monitor de actividad. Reanudar Reinicia el Monitor de actividad despus de seleccionar Pausar. Con esta opcin se reinician todos los procesos del Monitor de actividad. Actualizar Obtiene informacin del Monitor de actividad actual antes del siguiente intervalo de actualizacin.

Tareas de usuario activas (panel) En este panel se muestra informacin sobre las conexiones de usuario activas establecidas con la instancia; contiene las columnas siguientes: Id. de sesin Es un entero nico (int) que se asigna a cada conexin de usuario cuando se establece dicha conexin. Proceso de usuario Muestra 0 si se trata de un proceso del sistema y 1 si se trata de un proceso de usuario. De forma predeterminada, la configuracin del filtro para esta columna es 1. Por este motivo, slo se muestran los procesos de usuario. Inicio de sesin Nombre de inicio de sesin de SQL Server en el que se est ejecutando la sesin. Base de datos Nombre de la base de datos que est incluida en las propiedades de conexin de los procesos que se estn ejecutando actualmente. Estado de tarea Estado de la tarea. En las tareas que tienen el estado ejecutable o en espera, el estado de la tarea est en blanco. De lo contrario, puede ser uno de los siguientes valores:


Comando

Segundo plano En ejecucin

Suspendido

Tipo de comando que se est procesando en la tarea. Aplicacin Nombre del programa de aplicacin que cre la conexin. Tiempo de espera (ms) Tiempo, en milisegundos, que esta tarea espera un recurso. Cuando la tarea no est en espera, el tiempo de espera es 0. Tipo de espera Nombre del ltimo tipo de espera o del tipo de espera actual. Recurso de espera Nombre del recurso que es necesario. Bloqueado por Si hay sesiones de bloqueo, el identificador de la sesin que est bloqueando la tarea. Bloqueador de encabezado Si hay sesiones de bloqueo, identifica la sesin que produce la primera condicin de bloqueo. Un valor de 1 representa un bloqueador de encabezado de otras sesiones. Uso de memoria (KB) Cantidad, en kilobytes, de memoria que utiliza la tarea. Nombre de host Nombre del equipo que estableci la conexin con la instancia de SQL Server.

274

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Grupo de cargas de trabajo Nombre del grupo de cargas de trabajo del regulador de recursos de la sesin.

Esperas de recursos (panel) En este panel se muestra informacin sobre las esperas de recursos; contiene las columnas siguientes: Categora de espera Categoras que acumulan estadsticas de tipo de espera. Cada tipo de espera se muestra en el panel Tareas de usuario activas. Tiempo de espera (ms/s) Tiempo, en milisegundos por segundo, que transcurre mientras todas las tareas esperan uno o varios recursos de la categora de espera desde el ltimo intervalo de actualizacin. Tiempo de espera reciente (ms/s) Media ponderada del tiempo, en milisegundos por segundo, que transcurre mientras todas las tareas esperan uno o varios recursos de la categora de espera desde el ltimo intervalo de actualizacin. Recuento promedio de tareas en espera Nmero de tareas que esperan uno o varios recursos de la categora de espera en cualquier momento durante el ltimo intervalo de muestra. Tiempo de espera acumulativo (s) Cantidad total de tiempo en segundos que las tareas esperaron por uno o varios recursos de la categora de espera desde que SQL Server se inici la ltima vez en la instancia, o desde que DBCC SQLPERF se ejecut en la instancia.

E/S de archivo de datos (panel) En este panel se muestra informacin sobre los archivos de las bases de datos que pertenecen a la instancia. Este panel contiene las columnas siguientes: Base de datos Nombre de la base de datos. Nombre de archivo Nombre de los archivos que pertenecen a la base de datos. MB/s ledos Actividad de lectura reciente, en megabytes por segundo, del archivo de base de datos. MB/s escritos Actividad de escritura reciente, en megabytes por segundo, del archivo de base de datos. Tiempo de respuesta (ms) Tiempo medio de respuesta, en milisegundos, de la actividad de lectura y escritura reciente que se ha producido en el archivo de base de datos. Consultas costosas recientes (panel) En este panel se muestra informacin sobre las consultas ms costosas ejecutadas en la instancia durante los ltimos 30 segundos. La informacin se deriva de la unin de sys.dm_exec_requests y sys.dm_exec_query_stats e incluye las consultas en proceso y las consultas que finalizaron durante el perodo de tiempo. Este panel contiene las columnas siguientes: Consulta Instruccin de consulta que se est supervisando. Ejecuciones/m Ejecuciones por minuto de la consulta. CPU (ms/s) Velocidad de CPU que utiliza la consulta Lecturas fsicas/s Cantidad de lecturas fsicas por segundo que se realizan en la consulta. Escrituras lgicas/s Cantidad de escrituras lgicas por segundo que se realizan en la consulta. Lecturas lgicas/s Cantidad de lecturas lgicas por segundo que se realizan en la consulta. Duracin promedio (ms) Promedio de duracin en milisegundos de la ejecucin de esta consulta. Recuento de planes Nmero de planes de consulta almacenados en cach para esta consulta. Un nmero elevado podra indicar que es necesario realizar una parametrizacin de la consulta explcita.

Cmo abrir el Monitor de actividad (SQL Server Management Studio)

275

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Utilice el Monitor de actividad para obtener informacin sobre los procesos de SQL Server y el modo en que stos afectan a la instancia actual de SQL Server. La pgina Monitor de actividad tiene las secciones siguientes:

Informacin general: muestra pantalla grficas del porcentaje de tiempo de procesador, el nmero de tareas en espera, las operaciones de E/S de base de datos (megabytes por segundo) y las solicitudes por lote (nmero por segundo). Tareas de usuario activas: muestra informacin de las conexiones de usuario activas a SQL Server Database Engine (Motor de base de datos de SQL Server). Esperas de recursos: muestra informacin sobre el estado de espera. E/S de archivo de datos: muestra informacin de E/S de los archivos de registro y de datos de la base de datos.

Consultas costosas recientes: muestra informacin sobre las consultas ms costosas.

Para ver el Monitor de actividad en SQL Server 2005 y SQL Server 2008, el usuario debe tener el permiso VIEW SERVER STATE. Para ver el Monitor de actividad en un servidor SQL Server 2000, el usuario necesita el permiso SELECT en las tablas sysprocesses y syslocks en la base de datos maestra. El permiso para ver estas tablas se concede de forma predeterminada a la funcin de base de datos pblica. Para detener (KILL) un proceso, el usuario debe ser miembro de las funciones de servidor fijas sysadmin o processadmin.

Para abrir el Monitor de actividad en SQL Server Management Studio

1. 2.

En la barra de herramientas estndar de SQL Server Management Studio, haga clic en Monitor de actividad.

En el cuadro de dilogo Conectar al servidor, seleccione el nombre del servidor y el modo de autenticacin y, a continuacin, haga clic en Conectar.

Tambin puede abrir el Monitor de actividad en cualquier momento presionando CTRL+ALT A.

Para abrir el Monitor de actividad en el Explorador de objetos

En el Explorador de objetos, haga clic con el botn secundario en el nombre de instancia y, a continuacin, seleccione Monitor de actividad.

Para abrir el Monitor de actividad al abrir SQL Server Management Studio

1. 2. 3.
4.

En el men Herramientas, haga clic en Opciones.

En el cuadro de dilogo Opciones, expanda Entorno y, a continuacin, seleccione General.

En el cuadro Al iniciar, seleccione Abrir el Explorador de objetos y Monitor de actividad. Para activar los cambios, cierre y vuelva a abrir SQL Server Management Studio.

20 Disear una solucin para monitorear rendimiento y concurrencia. Considerar: Dedicated Administrator Connection (DAC), candados, bloqueos, abrazos mortales, control de objetos dinmicos, utilizacin de ndices, anlisis de trazas Usar una conexin de administrador dedicada SQL Server proporciona una conexin de diagnstico especial para los administradores cuando no son posibles las conexiones estndar con el servidor. La conexin de diagnstico permite a un administrador tener acceso a SQL Server para ejecutar consultas de diagnstico y solucionar problemas, incluso cuando SQL Server no responde a las solicitudes de conexin estndar. Esta conexin de administrador dedicada (DAC) admite la caracterstica de cifrado y otras caractersticas de seguridad de SQL Server. La DAC slo permite cambiar el contexto de usuario a otro usuario de administracin. SQL Server hace lo posible para que la conexin de administrador dedicada (DAC) sea correcta, pero, en situaciones extremas, es posible que no lo logre. Conectar con DAC

276

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
De forma predeterminada, slo se permite la conexin desde un cliente que se ejecute en el servidor. Las conexiones de red no estn permitidas, a menos que se configuren mediante el procedimiento almacenado sp_configure con la opcin remote admin connections. Slo los miembros de la funcin sysadmin de SQL Server pueden conectarse utilizando la DAC. La conexin de administrador dedicada (DAC) est disponible y permitida a travs de la utilidad del smbolo del sistema sqlcmd mediante un modificador de administrador especial (-A). Tambin se puede conectar agregando el prefijo admin: al nombre de la instancia en el formato sqlcmd -Sadmin:<instance_name>. Tambin puede iniciar una DAC desde un Editor de consultas de SQL Server Management Studio, conectndose a admin:<instance_name>.

Restricciones Dado que la DAC existe nicamente para el diagnstico de problemas de servidor en raras circunstancias, hay algunas restricciones en la conexin:

Para asegurarse de que haya recursos disponibles para la conexin, slo se permite una DAC por cada instancia de SQL Server. Si ya hay una conexin DAC activa, cualquier solicitud nueva de conexin a travs de la DAC se denegar con el error 17810. Para ahorrar recursos, SQL Server Express no escucha en el puerto DAC a menos que se inicie con la marca de traza 7806.

Inicialmente la DAC intenta conectarse a la base de datos predeterminada asociada al inicio de sesin. Una vez conectada correctamente, el usuario podr conectarse a la base de datos maestra. Si la base de datos predeterminada est sin conexin o no disponible por la razn que sea, la conexin devolver el error 4060. Con todo, se realizar correctamente si invalida la base de datos predeterminada para conectarse a la base de datos maestra utilizando el comando siguiente: sqlcmd A d maestra Se recomienda conectarse a la base de datos maestra con la DAC porque su disponibilidad est garantizada si se ha iniciado la instancia de Database Engine (Motor de base de datos). SQL Server prohbe la ejecucin de comandos o consultas paralelas con la DAC. Por ejemplo, se genera el error 3637 si se ejecuta una de las instrucciones siguientes con la DAC:

o o

RESTORE

BACKUP

Con la DAC slo est garantizada la disponibilidad de recursos limitados. No utilice la DAC para ejecutar consultas que consuman muchos recursos (por ejemplo, una combinacin compleja en una tabla grande) o consultas que se puedan bloquear. As se evita que la DAC agrave cualquier problema de servidor ya existente. Para evitar posibles escenarios de bloqueo, si debe ejecutar consultas que se pueden bloquear, ejectelas con niveles de aislamiento basado en instantneas siempre que sea posible; de lo contrario, establezca el nivel de aislamiento de transaccin en READ UNCOMMITTED y establezca un valor pequeo, como 2000 milisegundos, para LOCK_TIMEOUT, o ambos. Esto evitar que la sesin de la DAC se bloquee. Sin embargo, dependiendo del estado en el que est SQL Server, puede ser que la sesin de la DAC se bloquee en un bloqueo temporal. Es posible que pueda finalizar la sesin de la DAC mediante CTRL-C, pero esto no est garantizado. En tal caso, la nica alternativa puede ser reiniciar SQL Server. Para asegurarse de la conectividad y la solucin de problemas con la DAC, SQL Server reserva recursos limitados para procesar los comandos ejecutados en la DAC. Estos recursos slo suelen ser suficientes para funciones sencillas de diagnstico y solucin de problemas, como las que se mencionan ms adelante.

Aunque tericamente es posible ejecutar cualquier instruccin Transact-SQL que no se tenga que ejecutar en paralelo en la DAC, se recomienda encarecidamente limitar el uso a los siguientes comandos de diagnstico y solucin de problemas:

Consultas en vistas de administracin dinmica para diagnsticos bsicos como sys.dm_tran_locks para el estado de bloqueo, sys.dm_os_memory_cache_counters para comprobar el estado de las cachs, y sys.dm_exec_requests y sys.dm_exec_sessions para solicitudes y sesiones activas. Evite las vistas de administracin dinmica que consumen muchos recursos (por ejemplo, sys.dm_tran_version_store recorre el almacn de versiones completo y puede causar numerosas E/S) o que utilizan combinaciones complejas. Consultas en vistas de catlogo.

Comandos DBCC bsicos como DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE, DBCC DROPCLEANBUFFERS, y DBCC SQLPERF. No ejecute comandos que consumen muchos recursos, como DBCC CHECKDB, DBCC DBREINDEX o DBCC SHRINKDATABASE. Comando Transact-SQL KILL <spid>. Dependiendo del estado de SQL Server, es posible que el comando KILL no siempre se ejecute correctamente; en tal caso, la nica opcin puede ser reiniciar SQL Server. stas son algunas directrices generales:

o o

Compruebe que realmente se ha eliminado el SPID con la consulta SELECT * FROM sys.dm_exec_sessions WHERE session_id = <spid>. Si no devuelve ninguna fila, significa que la sesin se ha eliminado.

Si la sesin todava existe, compruebe si hay tareas asignadas a esta sesin ejecutando la consulta SELECT * FROM sys.dm_os_tasks WHERE session_id = <spid>. Si ve la tarea, lo ms probable es que se est eliminando la sesin ahora. Tenga en cuenta que es posible que esto tarde bastante tiempo y que no salga correctamente.

277

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009 o
Si no hay ninguna tarea en sys.dm_os_tasks asociada a esta sesin, pero la sesin permanece en sys.dm_exec_sessions tras ejecutar el comando KILL, significa que no tiene ningn trabajo disponible. Seleccione una de las tareas que se estn ejecutando (una tarea que aparece en la vista sys.dm_os_tasks con sessions_id <> NULL), y elimine la sesin que tiene asociada para liberar el trabajo. Tenga en cuenta que es posible que no sea suficiente eliminar una sola sesin: posiblemente tendr que eliminar varias.

Puerto de la DAC SQL Server escucha la DAC en el puerto TCP 1434 si est disponible o en un puerto asignado dinmicamente en el inicio de Database Engine (Motor de base de datos). El registro de errores contiene el nmero de puerto en el que escucha la DAC. De forma predeterminada, la escucha de la DAC slo acepta la conexin en el puerto local. Una vez configurada la conexin de administracin remota, la escucha de la DAC se habilita sin necesidad de reiniciar SQL Server y se puede conectar un cliente a la DAC de forma remota. Puede habilitar la escucha de la DAC para que acepte las conexiones remotamente incluso si SQL Server no responde conectndose primero a SQL Server mediante la DAC de forma local y, a continuacin, ejecutando el procedimiento almacenado sp_configure para aceptar la conexin desde conexiones remotas. En las configuraciones de clster, la DAC estar desactivada de forma predeterminada. Los usuarios pueden ejecutar la opcin remote admin connection de sp_configure para habilitar la escucha de la DAC para tener acceso a una conexin remota. Si SQL Server no responde y la escucha de la DAC no est habilitada, es posible que tenga que reiniciar SQL Server para conectarse a la DAC. Por esta razn, es recomendable que habilite la opcin de configuracin remote admin connections en los sistemas agrupados. Durante el inicio, SQL Server asigna dinmicamente el puerto de la DAC. Mientras se establece la conexin a la instancia predeterminada, la DAC evita el uso de una solicitud del protocolo de resolucin de SQL Server (SSRP) al servicio Explorador de SQL Server. Primero se conecta a travs del puerto TCP 1434. Si se produce un error, realiza una llamada SSRP para obtener el puerto. Si el Explorador de SQL Server no escucha las solicitudes SSRP, la solicitud de conexin devolver un error. Consulte el registro de errores para ver en qu nmero de puerto escucha la DAC. Si SQL Server est configurado para aceptar conexiones de administracin remotas, la DAC debe iniciarse con un nmero de puerto explcito: sqlcmd Stcp:<server>,<port> El registro de errores de SQL Server muestra el nmero de puerto de la DAC, que es 1434 de forma predeterminada. Si SQL Server est configurado para aceptar slo conexiones DAC locales, conctese mediante el adaptador de bucles invertidos con el comando siguiente: sqlcmd S127.0.0.1,1434

Ejemplo En este ejemplo, un administrador observa que el servidor URAN123 no responde y desea diagnosticar el problema. Para ello, el usuario activa la utilidad del smbolo del sistema sqlcmd y se conecta al servidor URAN123 mediante -A para indicar la DAC. sqlcmd -S URAN123 -U sa -P <xxx> A Ahora el administrador puede ejecutar consultas para diagnosticar el problema y posiblemente finalizar las sesiones que no responden.

Cmo utilizar la conexin de administrador dedicada con SQL Server Management Studio

Microsoft SQL Server proporciona una conexin de administrador dedicada (DAC). DAC permite a un administrador obtener acceso a una instancia en ejecucin de SQL Server Database Engine (Motor de base de datos de SQL Server) para solucionar problemas en el servidor, aunque el servidor no responda a otras conexiones de cliente. DAC est disponible a travs de la utilidad sqlcmd y SQL Server Management Studio. La conexin slo se permite a travs de un cliente que se ejecute en el servidor. Las conexiones de red no estn permitidas. Para utilizar SQL Server Management Studio con DAC, conctese a una instancia de SQL Server Database Engine (Motor de base de datos de SQL Server) con el Editor de consultas escribiendo ADMIN: antes del nombre de servidor. El Explorador de objetos no se puede conectar mediante una DAC. Para conectarse a un servidor mediante DAC

1. 2. 3.

En SQL Server Management Studio, sin ninguna otra DAC abierta, haga clic en Consulta de motor de base de datos en la barra de herramientas.

En el cuadro de dilogo Conectar al motor de base de datos, en el cuadro Nombre del servidor, escriba ADMIN: seguido del nombre de la instancia de servidor. Por ejemplo, para conectarse a la instancia de servidor ACCT\PAYABLE, escriba ADMIN:ACCT\PAYABLE.

Complete la seccin Autenticacin, suministre las credenciales de un miembro del grupo sysadmin y, a continuacin, haga clic en Conectar. Se establece la conexin. Si la DAC ya est en uso, la conexin no podr realizarse y mostrar un error que indicar que no se puede conectar

remote admin connections (opcin)

278

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
SQL Server proporciona una conexin de administrador dedicada (DAC). La DAC permite a los administradores tener acceso al servidor en ejecucin a fin de realizar funciones de diagnstico o ejecutar instrucciones Transact-SQL, o para solucionar problemas del servidor incluso cuando est bloqueado o se ejecuta en un estado anormal, y no responde a ninguna conexin de SQL Server Database Engine (Motor de base de datos de SQL Server). De forma predeterminada, la DAC solo est disponible en un cliente del servidor. Para habilitar las aplicaciones cliente en equipos remotos de modo que usen la DAC, utilice la opcin remote admin connections de sp_configure. De forma predeterminada, la DAC solo escucha en la direccin IP de bucle invertido (127.0.0.1) a travs del puerto 1434. Si el puerto TCP 1434 no est disponible, se asigna dinmicamente un puerto TCP al iniciarse Database Engine (Motor de base de datos). Cuando haya ms de una instancia de SQL Server instalada en un equipo, compruebe en el registro de errores el nmero de puerto TCP. En la siguiente tabla se muestran los posibles valores para la opcin remote admin connections. Valor Descripcin

Indica que solo se permiten conexiones locales mediante la DAC.

Indica que la DAC permite las conexiones remotas.

El siguiente ejemplo habilita la DAC desde un equipo remoto. sp_configure 'remote admin connections', 1;

Tipos de control de concurrencia

Cuando varias personas intentan modificar los datos de una base de datos al mismo tiempo, debe implementarse un sistema de controles de forma que las modificaciones realizadas por una persona no afecten negativamente a las de otra. Esto se denomina control de simultaneidad. La teora del control de simultaneidad tiene dos clasificaciones para los mtodos que establecen dicho control:

Control de simultaneidad pesimista Un sistema de bloqueos impide que los usuarios modifiquen los datos de forma que afecte a otros usuarios. Cuando un usuario lleve a cabo una accin que da lugar a que se aplique un bloqueo, los dems usuarios no podrn realizar acciones que crearan conflictos con el bloqueo hasta que el propietario lo libere. Esto se denomina control pesimista porque se utiliza principalmente en entornos donde hay muchos conflictos por la obtencin de datos, y en los que el coste de la proteccin de datos con bloqueos es menor que el de revertir las transacciones si se producen conflictos de simultaneidad. Control de simultaneidad optimista En el control de simultaneidad optimista, los usuarios no bloquean los datos cuando los leen. Cuando un usuario realiza una actualizacin de datos, el sistema comprueba si otro usuario ha cambiado los datos despus de la lectura. Si otro usuario actualiz los datos, se produce un error. Normalmente, el usuario que recibe el error revierte la transaccin y comienza de nuevo. Este tipo de control se denomina optimista porque se utiliza principalmente en entornos donde hay pocos conflictos por la obtencin de datos y en los que el coste de revertir ocasionalmente una transaccin es menor que el de bloquear los datos cuando se leen.

Microsoft SQL Server permite el uso de una serie de controles de simultaneidad. Los usuarios especifican el tipo de control de simultaneidad seleccionando niveles de aislamiento de transaccin para las conexiones u opciones de simultaneidad en cursores. Estos atributos se pueden definir mediante instrucciones Transact-SQL o bien mediante las propiedades y los atributos de interfaces de programacin de aplicaciones (API) de bases de datos como ADO, ADO.NET, OLE DB y ODBC. Interbloqueos (abrazos mortales) Un interbloqueo se produce cuando dos o ms tareas se bloquean entre s permanentemente teniendo cada tarea un bloqueo en un recurso que las otras tareas intentan bloquear. Por ejemplo:

La transaccin A tiene un bloqueo compartido de la fila 1. La transaccin B tiene un bloqueo compartido de la fila 2.

La transaccin A ahora solicita un bloqueo exclusivo de la fila 2 y se bloquea hasta que la transaccin B finalice y libere el bloqueo compartido que tiene de la fila 2. La transaccin B ahora solicita un bloqueo exclusivo de la fila 1 y se bloquea hasta que la transaccin A finalice y libere el bloqueo compartido que tiene de la fila 1.

La transaccin A no puede completarse hasta que se complete la transaccin B, pero la transaccin B est bloqueada por la transaccin A. Esta condicin tambin se llama dependencia cclica: la transaccin A tiene una dependencia de la transaccin B y la transaccin B cierra el crculo teniendo una dependencia de la transaccin A. Ambas transacciones con un interbloqueo esperarn para siempre, a no ser que un proceso externo rompa el interbloqueo. La supervisin de interbloqueos del SQL Server Database Engine (Motor de base de datos de SQL Server) de Microsoft comprueba peridicamente si hay tareas con un interbloqueo. Si el monitor detecta una dependencia cclica, selecciona una de las tareas como el sujeto y finaliza su transaccin con un error. Esto permite a la otra tarea completar su transaccin. La aplicacin con la transaccin que termin con un error puede reintentar la transaccin, que suele completarse despus de que la otra transaccin interbloqueada haya finalizado.

279

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
El uso de ciertas convenciones de cdigo en las aplicaciones reduce la probabilidad de que las aplicaciones causen interbloqueos. A menudo se confunden los interbloqueos con los bloqueos normales. Cuando una transaccin solicita un bloqueo en un recurso bloqueado por otra transaccin, la transaccin solicitante espera hasta que se libere el bloqueo. De forma predeterminada, las transacciones de SQL Server no tienen tiempo de espera, a menos que se establezca LOCK_TIMEOUT. La transaccin solicitante est bloqueada, no interbloqueada, porque la transaccin solicitante no ha hecho nada para bloquear la transaccin a la que pertenece el bloqueo. Finalmente, la transaccin a la que pertenece el bloqueo se completar y liberar el bloqueo, y a la transaccin solicitante se le conceder el bloqueo y continuar. A veces, los interbloqueos se denominan "abrazo mortal". Un interbloqueo es una condicin que se puede dar en cualquier sistema con varios subprocesos, no slo en un sistema de administracin de bases de datos relacionales, y puede producirse para recursos distintos a los bloqueos en objetos de base de datos. Por ejemplo, un subproceso en un sistema operativo con varios subprocesos puede adquirir uno o ms recursos, como bloqueos de memoria. Si el recurso que se desea adquirir pertenece actualmente a otro subproceso, puede que el primer subproceso deba esperar a que el otro libere el recurso de destino. En consecuencia, se dice que el subproceso que est en espera depende del subproceso que posee ese recurso concreto. En una instancia del Database Engine (Motor de base de datos), las sesiones pueden interbloquearse cuando adquieren recursos ajenos a la base de datos, como memoria o subprocesos.

En la ilustracin, la transaccin T1 tiene una dependencia de la transaccin T2 para el recurso de bloqueo de la tabla Part. Paralelamente, la transaccin T2 tiene una dependencia de la transaccin T1 para el recurso de bloqueo de la tabla Supplier. Puesto que estas dependencias forman un ciclo, hay un interbloqueo entre las transacciones T1 y T2. Los interbloqueos tambin se pueden producir cuando se crean particiones en una tabla y el valor de LOCK_ESCALATION en ALTER TABLE se fija en AUTO. Cuando el valor de LOCK_ESCALATION es AUTO, la simultaneidad aumenta permitiendo a Database Engine (Motor de base de datos) bloquear las particiones de la tabla en el nivel HoBT en lugar de en el nivel TABLE. Sin embargo, cuando transacciones independientes mantienen bloqueos de particin en una tabla y desean un bloqueo en algn punto de la particin de otras transacciones, se produce un interbloqueo. Este tipo de interbloqueo se puede evitar asignando a LOCK_ESCALATION el valor TABLE; aunque este valor reducir la simultaneidad obligando a las grandes actualizaciones de las particiones a esperar a que se produzca un bloqueo de la tabla. Detectar y finalizar interbloqueos Un interbloqueo se produce cuando dos o ms tareas se bloquean entre s permanentemente teniendo cada tarea un bloqueo en un recurso que las otras tareas intentan bloquear. En el siguiente grfico se presenta una vista de alto nivel de un estado de interbloqueo donde:

La tarea T1 tiene un bloqueo en el recurso R1 (indicado por la flecha de R1 a T1) y ha solicitado un bloqueo en el recurso R2 (indicado por la flecha de T1 a R2). La tarea T2 tiene un bloqueo en el recurso R2 (indicado por la flecha de R2 a T2) y ha solicitado un bloqueo en el recurso R1 (indicado por la flecha de T2 a R1). Dado que ninguna tarea puede continuar hasta que un recurso est disponible y ningn recurso puede liberarse hasta que contine una tarea, existe un estado de interbloqueo.

El SQL Server Database Engine (Motor de base de datos de SQL Server) detecta automticamente los ciclos de interbloqueo en SQL Server. El Database Engine (Motor de base de datos) selecciona una de las sesiones como sujeto del interbloqueo y la transaccin actual finaliza con un error para romper el interbloqueo.

Recursos que pueden causar interbloqueos

Cada sesin de usuario puede tener una o ms tareas en ejecucin y cada tarea puede adquirir o esperar para adquirir una serie de recursos. Los siguientes tipos de recursos pueden causar bloqueos que podran dar como resultado un interbloqueo.

280

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Bloqueos. Esperar para adquirir bloqueos en recursos, como objetos, pginas, filas, metadatos y aplicaciones, puede causar un interbloqueo. Por ejemplo, la transaccin T1 tiene un bloqueo compartido (S) en la fila f1 y est esperando para obtener un bloqueo exclusivo (X) en f2. La transaccin T2 tiene un bloqueo compartido (S) en f2 y est esperando para obtener un bloqueo exclusivo (X) en la fila f1. Esta situacin tiene como resultado un ciclo de bloqueo en el que T1 y T2 esperan que la otra transaccin libere los recursos bloqueados. Subprocesos de trabajo. Una tarea en cola que espera un subproceso de trabajo disponible puede causar un interbloqueo. Si la tarea en cola es propietaria de recursos que estn bloqueando todos los subprocesos de trabajo, se generar un interbloqueo. Por ejemplo, la sesin S1 inicia una transaccin y adquiere un bloqueo compartido (S) en la fila f1 y, a continuacin, se suspende. Las sesiones activas que se ejecutan en todos los subprocesos de trabajo disponibles intentan adquirir bloqueos exclusivos (X) en la fila f1. Dado que la sesin S1 no puede adquirir un subproceso de trabajo, no puede confirmar la transaccin y liberar el bloqueo de la fila f1. Esta situacin tiene como resultado un interbloqueo. Memoria. Cuando hay solicitudes simultneas esperando concesiones de memoria que no se pueden satisfacer con la memoria disponible, puede producirse un interbloqueo. Por ejemplo, dos consultas simultneas, C1 y C2, se ejecutan como funciones definidas por el usuario que adquieren 10 MB y 20 MB de memoria respectivamente. Si cada consulta necesita 30 MB y el total de memoria disponible es 20 MB, C1 y C2 tienen que esperar a que la otra consulta libere memoria, y esta situacin tiene como resultado un interbloqueo. Recursos relacionados con la ejecucin de consultas en paralelo. Los subprocesos de coordinador, productor o consumidor asociados a un puerto de intercambio pueden bloquearse entre s y provocar un interbloqueo si incluyen al menos otro proceso que no forma parte de la consulta en paralelo. Adems, cuando se inicia la ejecucin de una consulta en paralelo, SQL Server determina el grado de paralelismo, o el nmero de subprocesos de trabajo, en funcin de la carga de trabajo actual. Si la carga de trabajo del sistema cambia de forma inesperada, por ejemplo, si se empiezan a ejecutar nuevas consultas en el servidor o el sistema se queda sin subprocesos de trabajo, se puede producir un interbloqueo. Conjuntos de resultados activos mltiples (MARS). Estos recursos se utilizan para controlar la intercalacin de varias solicitudes activas en MARS.

o o

Recurso de usuario. Cuando un subproceso espera un recurso que potencialmente est controlado por una aplicacin de usuario, se considera que el recurso es externo o de usuario y se trata como un bloqueo.

Exclusin mutua de sesin. Las tareas que se ejecutan en una sesin se intercalan, lo que significa que slo puede ejecutarse una tarea en la sesin en un momento dado. Antes de que se pueda ejecutar la tarea, debe tener acceso exclusivo a la exclusin mutua de sesin.

Exclusin mutua de transaccin. Todas las tareas que se ejecutan en una transaccin se intercalan, lo que significa que slo puede ejecutarse una tarea en la transaccin en un momento dado. Antes de que se pueda ejecutar la tarea, debe tener acceso exclusivo a la exclusin mutua de transaccin.

Para que una tarea se ejecute en MARS, debe adquirir la exclusin mutua de sesin. Si la tarea se ejecuta en una transaccin, debe adquirir la exclusin mutua de transaccin. Esto garantiza que slo una tarea est activa en un momento dado en una sesin determinada y en una transaccin concreta. Una vez adquiridas las exclusiones mutuas necesarias, se puede ejecutar la tarea. Cuando finaliza la tarea, o se produce en medio de la solicitud, primero liberar la exclusin mutua de transaccin seguida de la exclusin mutua de sesin en el orden inverso a la adquisicin. Sin embargo, pueden producirse interbloqueos con estos recursos. En el ejemplo de cdigo siguiente hay dos tareas, la solicitud de usuario U1 y la solicitud de usuario U2, que se ejecutan en la misma sesin. U1: U2: Rs1=Command1.Execute("insert sometable EXEC usp_someproc"); Rs2=Command2.Execute("select colA from sometable");

El procedimiento almacenado que se ejecuta a partir de la solicitud de usuario U1 ha adquirido la exclusin mutua de sesin. Si el procedimiento almacenado tarda mucho tiempo en ejecutarse, el Database Engine (Motor de base de datos) considerar que el procedimiento almacenado est esperando la intervencin del usuario. La solicitud de usuario U2 est esperando la exclusin mutua de sesin mientras que el usuario est esperando el conjunto de resultados de U2, y U1 est esperando un recurso de usuario. ste es un estado de interbloqueo que se ilustra de forma lgica como:

Deteccin de interbloqueos Todos los recursos enumerados en la seccin anterior participan en el esquema de deteccin de interbloqueos del Database Engine (Motor de base de datos). La deteccin de interbloqueos la realiza un subproceso de supervisin de bloqueos que peridicamente inicia una bsqueda por todas las tareas de una instancia del Database Engine (Motor de base de datos). En los siguientes puntos se describe el proceso de bsqueda:

El intervalo predeterminado es de 5 segundos.

Si el subproceso de supervisin de bloqueos encuentra interbloqueos, el intervalo de deteccin de interbloqueos pasar de 5 segundos a hasta slo 100 milisegundos, en funcin de la frecuencia de los interbloqueos. Si el subproceso de supervisin de bloqueos deja de encontrar interbloqueos, el Database Engine (Motor de base de datos) aumentar los intervalos entre las bsquedas a 5 segundos. Si se acaba de detectar un interbloqueo, se considera que los siguientes subprocesos que deben esperar un bloqueo entran en el ciclo de interbloqueo. La primera pareja de esperas de bloqueo despus de que se haya detectado un interbloqueo desencadenar inmediatamente una bsqueda de interbloqueos, en vez de esperar al siguiente intervalo de deteccin de interbloqueos. Por ejemplo, si el intervalo actual es de 5 segundos y se acaba de detectar un interbloqueo, la siguiente espera de bloqueo activar inmediatamente el detector de interbloqueos. Si esta espera de bloqueo forma parte de un interbloqueo, se detectar en seguida en lugar de durante la siguiente bsqueda de interbloqueos.

281

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
El Database Engine (Motor de base de datos) slo suele realizar detecciones de interbloqueos peridicas. Dado que el nmero de interbloqueos que se encuentran en el sistema suele ser pequeo, si se detectan peridicamente, el sistema no se ve sobrecargado por este tipo de detecciones. Cuando el monitor de bloqueos inicia una bsqueda de interbloqueos para un subproceso determinado, identifica el recurso que est esperando. Despus, el monitor de bloqueos encuentra al propietario o a los propietarios de ese recurso y contina recursivamente la bsqueda de interbloqueos para esos subprocesos hasta que encuentra un ciclo. Un ciclo que se identifica de esta manera forma un interbloqueo. Una vez detectado un interbloqueo, el Database Engine (Motor de base de datos) finaliza un interbloqueo seleccionando uno de los subprocesos como sujeto del interbloqueo. El Database Engine (Motor de base de datos) finaliza el lote actual que se est ejecutando para el subproceso, revierte la transaccin del sujeto del interbloqueo y devuelve un error 1205 a la aplicacin. Revertir la transaccin para el sujeto del interbloqueo libera todos los bloqueos que tiene la transaccin. Esto permite que las transacciones de otros subprocesos se desbloqueen y continen. El error 1205 del sujeto del interbloqueo registra informacin sobre los subprocesos y recursos implicados en un interbloqueo en el registro de errores. De forma predeterminada, el Database Engine (Motor de base de datos) elige como sujeto del interbloqueo la sesin que ejecuta la transaccin cuya reversin resulta menos costosa. Como alternativa, un usuario puede especificar la prioridad de las sesiones en una situacin de interbloqueo mediante la instruccin SET DEADLOCK_PRIORITY. DEADLOCK_PRIORITY puede establecerse como LOW, NORMAL o HIGH; tambin puede establecerse como un valor entero en el intervalo de -10 a 10. El valor predeterminado de la prioridad de interbloqueo es NORMAL. Si dos sesiones tienen distintas prioridades de interbloqueo, la sesin con la prioridad menor se elige como el sujeto del interbloqueo. Si ambas sesiones tienen la misma prioridad de interbloqueo, se elige la sesin con la transaccin cuya reversin resulta menos costosa. Si las sesiones implicadas en el ciclo de interbloqueo tienen la misma prioridad de interbloqueo y el mismo costo, se elige un sujeto de forma aleatoria. Cuando se trabaja con CLR, el monitor de interbloqueos detecta automticamente el interbloqueo de los recursos de sincronizacin (monitores, bloqueo de lectura y escritura, y combinacin de subprocesos) a los que se ha tenido acceso dentro de los procedimientos administrados. Si embargo, el interbloqueo se resuelve iniciando una excepcin en el procedimiento que se seleccion como sujeto del interbloqueo. Es importante comprender que la excepcin no libera automticamente los recursos que posee actualmente el sujeto; los recursos se tienen que liberar de forma explcita. De forma coherente con el comportamiento de la excepcin, la excepcin utilizada para identificar un sujeto del interbloqueo se puede interceptar y descartar. Herramientas de informacin de interbloqueos Para ver la informacin de interbloqueos, Database Engine (Motor de base de datos) proporciona herramientas de supervisin en la forma de dos marcas de traza, y el evento deadlock graph del SQL Server Profiler.

Marcas de traza 1204 y 1222 Cuando se produce el interbloqueo, las marcas de traza 1204 y 1222 devuelven la informacin que se ha capturado en el registro de errores de SQL Server 2005. La marca de traza 1204 informa sobre el interbloqueo con un formato que especifica cada nodo implicado en el mismo. La marca de traza 1222 aplica formato a la informacin de interbloqueo, primero por procesos y luego por recursos. Es posible habilitar ambas marcas de traza para obtener dos representaciones del mismo evento de interbloqueo. Adems de definir las propiedades de las marcas de traza 1204 y 1222, en la siguiente tabla se muestran las similitudes y las diferencias. Propiedad Marcas de traza 1204 y 1222 Slo marca de traza 1204 Slo marca de traza 1222

Formato salida

de Los resultados se capturan en el registro de Se errores de SQL Server 2005.

centra

en

los

nodos Devuelve informacin en un formato XML

implicados en el interbloqueo. que no se ajusta a un esquema de Cada nodo tiene una seccin definicin de esquemas XML (XSD). El dedicada y la ltima seccin formato tiene tres secciones principales. describe al sujeto del La primera seccin declara el sujeto del interbloqueo. La segunda seccin describe los procesos implicados en el interbloqueo. La tercera seccin describe los recursos que son sinnimos de nodos en la marca de traza 1204. interbloqueo.

Atributos de SPID:<x> ECID:<x>. Identifica el subproceso Node. Representa el numero deadlock identificacin casos de procesos paralelos. La entrada interbloqueo. El propietario que se

victim. seleccion

Representa como sujeto

la del

del identificador de proceso del sistema en los de entrada en la cadena de direccin de la memoria fsica de la tarea SPID:<x> ECID:0, donde <x> se sustituye por el valor del SPID, representa el subproceso Lists. interbloqueo. Puede ser 0 (cero) en caso del de un interbloqueo no resuelto. Una tarea seleccionar como sujeto del interbloqueo. executionstack. Representa el cdigo Transact-SQL que se est ejecutando en el momento en que se produce el interbloqueo. priority. Representa En la prioridad casos, de

principal. La entrada SPID:<x> ECID:<y>, bloqueo puede formar parte que se est revirtiendo no se puede donde <x> se sustituye por el valor del SPID e de estas listas: <y> es mayor que 0, representa los subprocesos secundarios del mismo SPID. BatchID (sbid para la marca de traza 1222). Identifica el lote desde el que la ejecucin del cdigo est solicitando o manteniendo (conjuntos un de bloqueo. Cuando MARS

Grant Enumera propietarios actuales recurso.

List. los del

resultados activos mltiples) est deshabilitado, el valor de BatchID es 0. Cuando MARS est habilitado, el valor de los lotes activos est comprendido entre 1 y n. Si en la sesin no hay lotes activos, BatchID es 0.

Convert Enumera propietarios actuales

el List. Database Engine (Motor de base de los datos) puede optar por modificar la prioridad de interbloqueo durante una que breve duracin para conseguir una mejor

interbloqueo.

ciertos

282

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Mode. Especifica el tipo de bloqueo de un recurso en concreto que un subproceso solicita, concede (Intencin (Actualizar), (Intencin (Exclusiva).. Line # (line para la marca de traza 1222). Indica el nmero de lnea en el lote actual de instrucciones que se estaba ejecutando cuando se produjo el interbloqueo. Input Buf (inputbuf para la marca de traza 1222). Indica todas las instrucciones del lote actual. o espera. IX Mode S puede ser IS U X SIX compartida), compartida (Compartido), exclusiva), y exclusiva)

estn

intentando simultaneidad. sus a un logused. Espacio de registro utilizado por la tarea. owner id. El Id. de la transaccin que tiene el control de la solicitud. status. Estado de la tarea. Es uno de los siguientes valores:

convertir bloqueos nivel ms alto.

(Intencin

Wait Enumera solicitudes actuales nuevo

List. las del bloqueo

para el recurso. Statement Type. Describe el tipo de instruccin DML (SELECT, INSERT, UPDATE o DELETE) en que los subprocesos tienen permisos. Victim Resource el Owner.

pending.

Esperando

un

subproceso de trabajo.

runnable. cuanto.

Preparado

para

ejecutarse pero esperando un

Especifica elige como

subproceso sujeto para de los

running. actualmente programador.

Ejecutndose en el

participante que SQL Server interrumpir elegido finalizan. Next Branch. Representa los dos o ms subprocesos secundarios del mismo SPID que estn implicados en el ciclo de interbloqueo. y el ciclo todos

interbloqueo. El subproceso subprocesos secundarios

suspended. La ejecucin se ha suspendido.

done.

La

tarea

se

ha

completado.

spinloop. Esperando que un bloqueo disponible. por bucle est

waitresource. El recurso que la tarea necesita. waittime. Tiempo en milisegundos de espera del recurso. schedulerid. Programador asociado a esta tarea.. hostname. El nombre de la estacin de trabajo. isolationlevel. El nivel de aislamiento de transaccin actual. Xactid. El Id. de la transaccin que tiene el control de la solicitud. currentdb. El Id. de la base de datos. lastbatchstarted. La ltima vez que un proceso de cliente inici la ejecucin de lotes. lastbatchcompleted. La ltima vez que un proceso de cliente complet la ejecucin de lotes. clientoption1 y clientoption2.

Opciones establecidas en esta conexin de cliente. Se trata de una mscara de bits que incluye informacin acerca de las

283

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

opciones controladas normalmente por instrucciones SET, como SET NOCOUNT y SET XACTABORT. associatedObjectId. Representa el Id. del rbol b o montn (HoBT).

Atributos del RID. Identifica la nica fila de una tabla en la Nada exclusivo de esta marca Nada exclusivo de esta marca de traza. recurso que se mantiene o se solicita un bloqueo. RID de traza. se representa como Por RID: ejemplo, db_id:file_id:page_no:row_no. RID: 6:1:20789:0. OBJECT. Identifica la tabla en la que se mantiene o se solicita un bloqueo. OBJECT se representa como OBJECT: db_id:object_id. Por ejemplo, TAB: 6:2009058193. KEY. Identifica el intervalo de clave de un ndice en el que se mantiene o se solicita un bloqueo. KEY se representa como KEY: Por ejemplo, KEY: 6:72057594057457664 (350007a4d329). PAG. Identifica el recurso de pgina en el que se mantiene o se solicita un bloqueo. PAG se representa 6:1:20789. EXT. Identifica la estructura de extensin. EXT se representa como EXT: Por ejemplo, EXT: 6:1:9. DB. Identifica el bloqueo de la base de datos. DB se representa de una de las siguientes maneras: como PAG: Por ejemplo, PAG:

DB:

DB:db_id[BULK-OP-DB],

que

identifica el bloqueo de base de datos realizado por la copia de seguridad de la base de datos.

DB:

db_id[BULK-OP-LOG],

que

identifica el bloqueo realizado por el registro de copia de seguridad de esa base de datos en concreto. APP. Identifica el bloqueo realizado por un recurso de la aplicacin. APP se representa como APP: Por ejemplo, APP: Formf370f478. METADATA. metadatos Representa en los un recursos de

implicados

interbloqueo.

Debido a que METADATA tiene muchos recursos secundarios, el valor devuelto depende del recurso secundario que se haya interbloqueado. Por ejemplo, METADATA.USER_TYPE devuelve user_type_id = <integer_value>. HOBT. Representa al montn o rbol b

implicados en un interbloqueo.

284

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Ejemplo de marca de traza 1204 En el siguiente ejemplo se muestra el resultado que se obtiene cuando se activa una marca de traza 1204. En este caso, la tabla de Node 1 es un montn sin ndices, y la tabla de Node 2 es un montn con un ndice no agrupado. La clave de ndice de Node 2 se est actualizando cuando se produce el interbloqueo. Deadlock encountered .... Printing deadlock information Wait-for graph Node:1 RID: 6:1:20789:0 CleanCnt:3 Mode:X Flags: 0x2 Grant List 0: Owner:0x0315D6A0 Mode: X Flg:0x0 Ref:0 Life:02000000 SPID:55 ECID:0 XactLockInfo: 0x04D9E27C SPID: 55 ECID: 0 Statement Type: UPDATE Line #: 6 Input Buf: Language Event: BEGIN TRANSACTION EXEC usp_p2 Requested By: ResType:LockOwner Stype:'OR'Xdes:0x03A3DAD0 Mode: U SPID:54 BatchID:0 ECID:0 TaskProxy:(0x04976374) Value:0x315d200 Cost:(0/868) Node:2 KEY: 6:72057594057457664 (350007a4d329) CleanCnt:2 Mode:X Flags: 0x0 Grant List 0: Owner:0x0315D140 Mode: X Flg:0x0 Ref:0 Life:02000000 SPID:54 ECID:0 XactLockInfo: 0x03A3DAF4 SPID: 54 ECID: 0 Statement Type: UPDATE Line #: 6 Input Buf: Language Event: BEGIN TRANSACTION EXEC usp_p1 Requested By: ResType:LockOwner Stype:'OR'Xdes:0x04D9E258 Mode: U SPID:55 BatchID:0 ECID:0 TaskProxy:(0x0475E374) Value:0x315d4a0 Cost:(0/380) Victim Resource Owner: ResType:LockOwner Stype:'OR'Xdes:0x04D9E258 Mode: U SPID:55 BatchID:0 ECID:0 TaskProxy:(0x0475E374) Value:0x315d4a0 Cost:(0/380) Ejemplo de marca de traza 1222 En el siguiente ejemplo se muestra el resultado que se obtiene cuando se activa una marca de traza 1222. En este caso, una tabla es un montn sin ndices y la otra tabla es un montn con un ndice no agrupado. En la segunda tabla, la clave de ndice se est actualizando cuando se produce el interbloqueo. deadlock-list deadlock victim=process689978 process-list process id=process6891f8 taskpriority=0 logused=868 waitresource=RID: 6:1:20789:0 waittime=1359 ownerId=310444 transactionname=user_transaction lasttranstarted=2005-09-05T11:22:42.733 XDES=0x3a3dad0 lockMode=U schedulerid=1 kpid=1952 status=suspended spid=54 sbid=0 ecid=0 priority=0 transcount=2 lastbatchstarted=2005-09-05T11:22:42.733 lastbatchcompleted=2005-09-05T11:22:42.733 clientapp=Microsoft SQL Server Management Studio - Query hostname=TEST_SERVER hostpid=2216 loginname=DOMAIN\user isolationlevel=read committed (2) xactid=310444 currentdb=6 lockTimeout=4294967295 clientoption1=671090784 clientoption2=390200 executionStack frame procname=AdventureWorks.dbo.usp_p1 line=6 stmtstart=202 sqlhandle=0x0300060013e6446b027cbb00c69600000100000000000000 UPDATE T2 SET COL1 = 3 WHERE COL1 = 1; frame procname=adhoc line=3 stmtstart=44 sqlhandle=0x01000600856aa70f503b8104000000000000000000000000 EXEC usp_p1 inputbuf BEGIN TRANSACTION EXEC usp_p1 process id=process689978 taskpriority=0 logused=380 waitresource=KEY: 6:72057594057457664 (350007a4d329) waittime=5015 ownerId=310462 transactionname=user_transaction lasttranstarted=2005-09-05T11:22:44.077 XDES=0x4d9e258 lockMode=U schedulerid=1 kpid=3024 status=suspended spid=55 sbid=0 ecid=0 priority=0 transcount=2 lastbatchstarted=2005-09-05T11:22:44.077 lastbatchcompleted=2005-09-05T11:22:44.077 clientapp=Microsoft SQL Server Management Studio - Query hostname=TEST_SERVER hostpid=2216 loginname=DOMAIN\user isolationlevel=read committed (2) xactid=310462 currentdb=6 lockTimeout=4294967295 clientoption1=671090784 clientoption2=390200 executionStack frame procname=AdventureWorks.dbo.usp_p2 line=6 stmtstart=200 sqlhandle=0x030006004c0a396c027cbb00c69600000100000000000000 UPDATE T1 SET COL1 = 4 WHERE COL1 = 1; frame procname=adhoc line=3 stmtstart=44 sqlhandle=0x01000600d688e709b85f8904000000000000000000000000 EXEC usp_p2 inputbuf BEGIN TRANSACTION EXEC usp_p2 resource-list

285

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
ridlock fileid=1 pageid=20789 dbid=6 objectname=AdventureWorks.dbo.T2 id=lock3136940 mode=X associatedObjectId=72057594057392128 owner-list owner id=process689978 mode=X waiter-list waiter id=process6891f8 mode=U requestType=wait keylock hobtid=72057594057457664 dbid=6 objectname=AdventureWorks.dbo.T1 indexname=nci_T1_COL1 id=lock3136fc0 mode=X associatedObjectId=72057594057457664 owner-list owner id=process6891f8 mode=X waiter-list waiter id=process689978 mode=U requestType=wait Evento Deadlock Graph del Analizador ste es un evento del SQL Server Profiler que presenta una descripcin grfica de las tareas y recursos implicados en un interbloqueo. En el siguiente ejemplo se muestra el resultado del SQL Server Profiler cuando se ha activado el evento deadlock graph.

Minimizar los interbloqueos A pesar de que los interbloqueos no se pueden evitar totalmente, si se siguen ciertas convenciones de codificacin se puede reducir su generacin. La minimizacin de los interbloqueos puede aumentar el rendimiento de las transacciones y reducir la sobrecarga del sistema, debido a que:

Se revierten menos transacciones, al deshacer todo el trabajo que realiza la transaccin.

Las aplicaciones vuelven a enviar menos transacciones debido a que se revirtieron cuando se produjo el interbloqueo.

Para ayudar a reducir los interbloqueos:

Obtenga acceso a los objetos en el mismo orden.

Evite la interaccin con los usuarios en las transacciones. Mantenga transacciones cortas y en un proceso por lotes.

Utilice un nivel de aislamiento inferior. Utilice un nivel de aislamiento basado en las versiones de las filas.

o o

Establezca la opcin de base de datos READ_COMMITTED_SNAPSHOT en ON para que las transacciones de lectura confirmada utilicen las versiones de filas.

Utilice el aislamiento de instantnea.

Utilice conexiones enlazadas.

Obtener acceso a los objetos en el mismo orden Si todas las transacciones simultneas tienen acceso a los objetos en el mismo orden, es menos probable que se produzcan interbloqueos. Por ejemplo, si dos transacciones simultneas obtienen un bloqueo en la tabla Supplier y, a continuacin, en la tabla Part, una transaccin se bloquea en la tabla Supplier hasta que finalice la otra transaccin. Una vez confirmada o revertida la primera transaccin, contina la segunda, por lo que no se produce un interbloqueo. La utilizacin de procedimientos almacenados para todas las modificaciones de datos puede normalizar el orden de acceso a los objetos.

286

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Evitar la interaccin con el usuario en las transacciones

Evite escribir transacciones que incluyan la intervencin del usuario, ya que la velocidad de ejecucin de los lotes que no requieren esta intervencin es mucho mayor que la velocidad con la que el usuario debe responder manualmente a las consultas como, por ejemplo, contestar a la peticin de un parmetro por parte de una aplicacin. Por ejemplo, si una transaccin espera una entrada del usuario y ste sale a comer o no vuelve hasta pasado el fin de semana, dicho usuario retrasa la finalizacin de la transaccin. De esta forma, se degrada el rendimiento del sistema, ya que los bloqueos que mantiene la transaccin slo se liberan cuando se confirma o se revierte la transaccin. Aunque no surja una situacin de interbloqueo, las dems transacciones que obtienen acceso a los mismos recursos se bloquean mientras esperan a que la transaccin finalice. Mantener transacciones cortas y en un proceso por lotes Normalmente, los interbloqueos se producen cuando varias transacciones de larga duracin se ejecutan simultneamente en la misma base de datos. Cuanto ms dure la transaccin, ms tiempo se mantendrn los bloqueos exclusivos o de actualizacin, con lo cual se bloquean otras actividades y se originan posibles situaciones de interbloqueo. Al mantener las transacciones en un proceso por lotes, se minimizan los viajes de ida y vuelta en la red durante una transaccin y se reducen los posibles retrasos al completar la transaccin y liberar los bloqueos. Utilizar un nivel de aislamiento inferior Determine si una transaccin se puede ejecutar con un nivel de aislamiento inferior. Al implementar la lectura confirmada, se permite a una transaccin leer los datos previamente ledos (no modificados) por otra transaccin, sin tener que esperar a que la primera transaccin finalice. Utilizar un nivel inferior de aislamiento, como la lectura confirmada, mantiene los bloqueos compartidos durante menos tiempo que un nivel superior de aislamiento, como el nivel serializable. De esta forma, se reduce la contencin de bloqueos. Utilizar un nivel de aislamiento basado en las versiones de las filas Si la opcin de base de datos READ_COMMITTED_SNAPSHOT se ha establecido en ON, la transaccin que se ejecuta con el nivel de aislamiento de lectura confirmada utiliza la versin de filas en lugar de bloqueos compartidos durante las operaciones de lectura. Nota: Algunas aplicaciones dependen del comportamiento de los bloqueos en el aislamiento de lectura confirmada. En estas aplicaciones, es preciso efectuar algunos cambios antes de habilitar esta opcin. El aislamiento de instantnea tambin utiliza las versiones de filas, que no emplean bloqueos compartidos en las operaciones de lectura. Antes de ejecutar una transaccin con aislamiento de instantnea, debe establecerse en ON la opcin de base de datos ALLOW_SNAPSHOT_ISOLATION. Implemente estos niveles de aislamiento para reducir los interbloqueos que se pueden producir entre operaciones de lectura y escritura. Utilizar conexiones enlazadas Al utilizar conexiones enlazadas, dos o ms conexiones abiertas por la misma aplicacin pueden cooperar entre s. Los bloqueos adquiridos por las conexiones secundarias se mantienen como si los adquiriera la conexin principal y viceversa. Por lo tanto, no se bloquean entre s. Efectos de la simultaneidad Los usuarios que modifican datos pueden afectar a otros usuarios que leen o modifican los mismos datos a la vez. Se dice que estos usuarios tienen acceso a los datos de forma simultnea. Si un sistema de almacenamiento de datos no dispone de control de simultaneidad, los usuarios se pueden encontrar con los siguientes efectos secundarios:

Actualizaciones perdidas Dependencia no confirmada (lectura no actualizada)

287

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Anlisis contradictorios (lectura irrepetible) Lecturas ficticias

Dobles lecturas o lecturas que faltan por causa de las actualizaciones de las filas

Actualizaciones perdidas Este problema surge cuando dos o ms transacciones seleccionan la misma fila y, a continuacin, la actualizan de acuerdo con el valor seleccionado originalmente. Ninguna transaccin es consciente de las otras transacciones. La ltima actualizacin sobrescribe las actualizaciones realizadas por las otras transacciones y, en consecuencia, se pierden datos. Por ejemplo, dos editores realizan una copia electrnica del mismo documento. Cada editor modifica la copia de forma independiente y despus la guarda, sobrescribiendo el documento original. El editor que guarda la copia modificada en ltimo lugar sobrescribe las modificaciones que realiz el otro editor. Este problema se puede evitar si un editor no tiene acceso al archivo hasta que el otro finaliza y confirma la transaccin. Dependencia no confirmada (lectura no actualizada) Este problema se produce cuando una transaccin selecciona una fila que est siendo actualizada por otra transaccin. La segunda transaccin lee datos que no han sido confirmados an y pueden ser modificados por la transaccin que est actualizando la fila. Por ejemplo, un editor realiza cambios en un documento electrnico. Durante las modificaciones, un segundo editor toma una copia del documento que contiene todas las modificaciones realizadas hasta el momento y la distribuye a los destinatarios. El primer editor decide que los cambios realizados son errneos, as que los elimina y guarda el documento. El documento distribuido contiene modificaciones que ya no existen y deben tratarse como si nunca hubieran existido. Este problema se puede evitar si nadie lee el documento modificado hasta que el primer editor realiza el almacenamiento final de las modificaciones y confirma la transaccin. Anlisis incoherente (lectura irrepetible) Este problema se produce cuando una transaccin obtiene acceso a la misma fila varias veces y en cada ocasin lee datos diferentes. El anlisis incoherente es similar a la dependencia no confirmada en tanto que una transaccin est modificando los datos que est leyendo una segunda transaccin. Sin embargo, en el caso del anlisis incoherente, los datos que lee la segunda transaccin estn confirmados por la transaccin que realiz el cambio. Adems, el anlisis incoherente comprende varias lecturas (dos o ms) de la misma fila y las transacciones modifican la informacin cada vez; de ah el trmino de lectura irrepetible. Por ejemplo, un editor lee el mismo documento dos veces pero, entre cada lectura, el escritor vuelve a escribir el documento. Cuando el editor lee el documento por segunda vez, ste ha cambiado. La lectura original no era repetible. Este problema se puede evitar si el escritor no cambia el documento hasta que el editor finaliza la lectura por ltima vez. Lecturas ficticias Este problema se produce cuando se realiza una accin de insertar o eliminar en una fila y sta pertenece a un intervalo de filas que est leyendo una transaccin. La primera lectura que hizo la transaccin en el intervalo de filas muestra una fila que ya no existe en la segunda lectura o en lecturas sucesivas, porque otra transaccin la ha eliminado. De forma similar, la segunda lectura o las lecturas sucesivas de la transaccin muestran una fila que no exista en la primera lectura, como consecuencia de una insercin realizada por otra transaccin. Por ejemplo, un editor modifica un documento que un escritor ha enviado pero, cuando el departamento de produccin incorpora las modificaciones a la copia maestra del documento, se da cuenta de que el autor ha agregado al documento material nuevo sin modificar. De forma similar a la situacin de lectura irrepetible, este problema se puede evitar si nadie agrega material nuevo al documento hasta que el editor y el departamento de produccin finalizan el trabajo con el documento original. Dobles lecturas o lecturas que faltan por causa de las actualizaciones de las filas

Falta de una fila actualizada o fila actualizada vista varias veces Las transacciones que se ejecutan en el nivel READ UNCOMMITTED no emiten bloqueos compartidos para impedir que otras transacciones modifiquen los datos ledos por la transaccin actual. Las transacciones que se estn ejecutando en el nivel de READ COMMITTED emiten bloqueos compartidos, pero los bloqueos de fila o pgina se liberan una vez leda la fila. En cualquier caso, al recorrer un ndice, si otro usuario cambia la columna de clave de ndice de la fila mientras usted lo est leyendo, la fila podra aparecer de nuevo si el cambio en la clave movi la fila a una posicin situada por delante de su punto de recorrido. De igual forma, la fila podra no aparecer si el cambio en la clave movi la fila a una posicin en el ndice que ya haba sido leda. Para evitar esto, utilice las sugerencias SERIALIZABLE o HOLDLOCK, o bien el control de versiones de fila. Faltan una o ms filas que no eran objeto de la actualizacin Cuando utilice READ UNCOMMITTED, si su consulta lee filas mediante recorrido del orden de asignacin (uso de pginas IAM), podra perder filas si otra transaccin est produciendo una divisin de pgina. Esto no puede suceder si utiliza la lectura confirmada porque la tabla se mantiene bloqueada durante la divisin de la pgina y no pasa si la tabla no tiene un ndice en clster, porque las actualizaciones no producen divisiones de pgina.

21 Disear una estrategia de mantenimiento para Servidores de Base de Datos. Considerar: reconstruir para comprimir a nivel de pgina, mantenimiento de ndices y heap, administracin de las particiones, estadsticas Planes de Mantenimiento Los planes de mantenimiento crean un flujo de trabajo de las tareas necesarias para asegurarse de que la base de datos est optimizada, se realizan copias de seguridad de la misma con regularidad y no tiene incoherencias. El Asistente para planes de mantenimiento tambin crea planes de mantenimiento principales, pero la creacin manual de planes le da mucha ms flexibilidad. En SQL Server 2005 Database Engine (Motor de base de datos de SQL Server 2005), los planes de mantenimiento crean un paquete de Integration Services, ejecutado por un trabajo del Agente SQL Server. Estas tareas de mantenimiento se pueden crear manual o automticamente a intervalos programados. Los planes de mantenimiento de SQL Server 2005 proporcionan las caractersticas siguientes: Creacin de flujos de trabajo con diferentes tareas de mantenimiento tpicas. Tambin puede crear sus propias secuencias de comandos Transact-SQL personalizadas. Jerarquas conceptuales. Cada plan le permite crear o editar flujos de trabajo de tareas. Las tareas de cada plan se pueden agrupar en subplanes, que se pueden programar para ejecutarse a horas diferentes.

288

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Compatibilidad con planes multiservidor que se pueden utilizar en entornos de servidor maestro o servidor de destino. Compatibilidad con el historial de planes de registro en los servidores remotos. Compatibilidad con la Autenticacin de Windows y la Autenticacin de SQL Server. Siempre que sea posible, utilice la autenticacin de Windows. Los planes de mantenimiento slo se pueden ejecutar en bases de datos con un nivel de compatibilidad de 80 o superior. El diseador de planes de mantenimiento de SQL Server Management Studio no muestra las bases de datos cuyo nivel de compatibilidad est establecido en 70 o inferior. Puede migrar planes de mantenimiento de bases de datos de SQL Server 2000 a planes de SQL Server 2005; para ello, haga clic con el botn secundario en el plan de mantenimiento de bases de datos de SQL Server 2000 y elija Migrar. Debe ser miembro de la funcin sysadmin para crear y administrar planes de mantenimiento, y para verlos en el Explorador de objetos. El nodo Agente SQL Server del Explorador de objetos slo aparece para los miembros de la funcin fija de servidor sysadmin o las funciones de base de datos fija SQLAgentReaderRole, SQLAgentUserRole o SQLAgentOperatorRole. Importante: Los miembros de la funcin db_ssisadmin y de la funcin dc_admin quiz puedan elevar sus privilegios a sysadmin. Esta elevacin de privilegio se puede producir porque estas funciones pueden modificar los paquetes de Integration Services y SQL Server puede ejecutar estos paquetes utilizando el contexto de seguridad de sysadmin del Agente SQL Server. Para protegerse contra esta elevacin de privilegio al ejecutar planes de mantenimiento, conjuntos de recopilacin de datos y otros paquetes de Integration Services, configure los trabajos del Agente SQL Server que ejecutan paquetes para utilizar una cuenta de proxy con privilegios limitados o agregar slo los miembros de sysadmin a las funciones dc_admin y db_ssisadmin. Tareas de Mantenimiento SQL Server Integration Services incluye un conjunto de tareas que realizan funciones de mantenimiento de bases de datos. Estas tareas se suelen usar en los planes de mantenimiento de bases de datos, pero tambin se pueden incluir en paquetes de SSIS. Las tareas de mantenimiento pueden usarse con bases de datos y objetos de base de datos de SQL Server 2000 y SQL Server. Tarea Copia de seguridad de la base de datos Realiza distintos tipos de copias de seguridad de bases de datos de SQL Server. Tarea Comprobar la integridad de la base de datos Comprueba la asignacin y la integridad estructural de objetos e ndices de base de datos. Tarea Ejecutar trabajo del Agente SQL Server Ejecuta trabajos del Agente SQL Server. Tarea Ejecutar instruccin T-SQL Ejecuta instrucciones de Transact-SQL Tarea Limpieza de historial Elimina entradas de las tablas de historial de la base de datos msdb de SQL Server. Tarea Limpieza de mantenimiento Quita archivos relacionados con planes de mantenimiento, entre los que se incluyen informes creados a partir de planes de mantenimiento y archivos de copia de seguridad de la base de datos. Tarea Notificar al operador Enva mensajes de notificacin a operadores del Agente SQL Server. Tarea Volver a generar ndice Vuelve a generar los ndices de tablas y vistas de bases de datos de SQL Server. Tarea Reorganizar ndice Reorganiza los ndices de tablas y vistas de bases de datos de SQL Server. Tarea Reducir base de datos Reduce el tamao de los datos y los archivos de registro de base de datos de SQL Server. Tarea Actualizar estadsticas Actualiza la informacin sobre la distribucin de valores de clave para uno o ms conjuntos de estadsticas en la tabla o vista especificada Cmo crear un plan de mantenimiento Hay dos maneras de crear un plan de mantenimiento. Puede hacerlo mediante el Asistente para planes de mantenimiento o mediante el uso de una superficie de diseo. El uso del asistente es ms conveniente si desea crear planes de mantenimiento bsicos, mientras que la superficie de diseo le permite utilizar un flujo de trabajo mejorado. Para crear o administrar planes de mantenimiento, debe ser miembro de la funcin fija de servidor sysadmin.Tenga en cuenta que el Explorador de objetos slo muestra planes de mantenimiento si el usuario es miembro de la funcin fija de servidor sysadmin. Para crear un plan de mantenimiento con el Asistente para planes de mantenimiento 1. En el Explorador de objetos, expanda un servidor y, a continuacin, expanda Administracin. 2. Haga clic con el botn secundario en Planes de mantenimiento y seleccione Asistente para planes de mantenimiento. 3. Siga los pasos del asistente para crear un plan de mantenimiento. Para crear un plan de mantenimiento mediante la superficie de diseo 1. En el Explorador de objetos, expanda un servidor y, a continuacin, expanda Administracin. 2. Haga clic con el botn secundario en Planes de mantenimiento y seleccione Nuevo plan de mantenimiento.

289

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
3. En el cuadro de dilogo Nuevo plan de mantenimiento, escriba el nombre del plan. 4. Se abre el Cuadro de herramientas y la superficie <Nombre de plan de mantenimiento> [Diseo] con el Subpln_1 predeterminado creado. De manera opcional, escriba una descripcin para el plan completo en la ficha Diseo. 5. Haga doble clic en Subpln_1 y escriba un nombre y una descripcin para el subpln en el cuadro de dilogo Propiedades del subpln. Haga clic en el icono Programacin del subpln para escribir detalles de programacin en el cuadro de dilogo Propiedades de programacin del trabajo. 6. Para generar un subpln, arrastre elementos del flujo de tareas del Cuadro de herramientas y colquelos en la superficie de diseo del plan para definir las tareas que hay que realizar. Haga doble clic en las tareas para abrir los cuadros de dilogo que le permitirn configurar las opciones de las tareas. 7. Para definir el flujo de trabajo entre tareas, haga clic en la tarea que desea que se produzca en primer lugar, mantenga presionada la tecla CTRL y, a continuacin, haga clic en la tarea que desea que se produzca en segundo lugar. Haga clic con el botn secundario en cualquier tarea y, a continuacin, haga clic en Agregar restriccin de precedencia. 8. Para agregar otro subpln que contenga tareas ejecutadas en una programacin diferente, haga clic en Agregar subpln en la barra de herramientas. 9. Para agregar conexiones a servidores diferentes, haga clic en Administrar conexiones. 10. Para especificar opciones de informes, haga clic en el icono Informes y registro. Para guardar ms informacin detallada, seleccione Registrar informacin adicional. Para escribir la informacin de los resultados de planes de mantenimiento en otro servidor, seleccione Registrar en el servidor remoto. Para ver los resultados en el visor del archivo de registros, haga clic con el botn secundario en el nodo Planes de mantenimiento o en el plan de mantenimiento especfico y, a continuacin, haga clic en Ver historial. Asistente para planes de mantenimiento El Asistente para planes de mantenimiento le ayuda a configurar las tareas de mantenimiento principales para asegurarse de que la base de datos funciona bien, se realiza una copia de seguridad regular de la misma y no tiene incoherencias. El Asistente para planes de mantenimiento crea uno o varios trabajos del Agente SQL Server que realizan estas tareas en servidores locales o en servidores de destino en un entorno multiservidor. La ejecucin puede tener lugar a intervalos programados o a peticin. Para crear o administrar planes de mantenimiento, debe ser miembro de la funcin fija de servidor sysadmin. Tenga en cuenta que el Explorador de objetos slo muestra planes de mantenimiento si el usuario es miembro de la funcin fija de servidor sysadmin. Los planes de mantenimiento se pueden crear para realizar las tareas siguientes: Reorganizar los datos de las pginas de datos y de ndices mediante una nueva generacin de los ndices con un nuevo factor de relleno. Al volver a crear ndices con un nuevo factor de relleno se asegura que las pginas de la base de datos contienen una cantidad de datos y espacio disponible distribuidos por igual. Tambin permite un crecimiento ms rpido en el futuro. Comprimir archivos de datos mediante la eliminacin de las pginas de base de datos que estn vacas. Actualizar las estadsticas de los ndices para asegurarse de que el optimizador de consultas dispone de informacin actualizada acerca de la distribucin de los valores de los datos en las tablas. Esto permite al optimizador de consultas elegir el mtodo ms adecuado para obtener acceso a los datos, ya que dispone de ms informacin acerca de los datos almacenados en la base de datos. Aunque SQL Server actualiza peridicamente las estadsticas de los ndices de forma automtica, esta opcin puede obligar a que se actualicen inmediatamente. Realizar comprobaciones de coherencia interna de los datos y de las pginas de datos de la base de datos para asegurarse de que no se han daado debido a un problema de software o del sistema. Realizar copias de seguridad de la base de datos y de los archivos de registro de transacciones. Las copias de seguridad de la base de datos y del registro pueden mantenerse durante un perodo especificado. Esto le permite crear un historial de copias de seguridad para utilizarlo si tiene que restaurar la base de datos a una fecha anterior a la de la ltima copia de seguridad de la base de datos. Tambin puede realizar copias de seguridad diferenciales. Ejecutar trabajos del Agente SQL Server. Esta tarea se puede utilizar para crear trabajos que realicen una serie de acciones y, tambin, para crear los planes de mantenimiento para ejecutar los trabajos. Los resultados generados por las tareas de mantenimiento pueden escribirse en forma de informe en un archivo de texto, o bien escribirse en las tablas del plan de mantenimiento, sysmaintplan_log y sysmaintplan_logdetail, en msdb. Para ver los resultados en el visor del archivo de registros, haga clic con el botn secundario en Planes de mantenimiento y, a continuacin, haga clic en Ver historial. Los planes de mantenimiento slo se pueden ejecutar en bases de datos con un nivel de compatibilidad de 80 o superior. El Asistente para planes de mantenimiento no muestra las bases de datos cuyo nivel de compatibilidad est establecido en 70 o inferior. 22 Disear una solucin para controlar los recursos. Considerar: Gobernador de Recursos (CPU, memoria, nmero de peticiones por segundo, pools de recursos, grupos de recursos). SQL Server 2008 proporciona el regulador de recursos, una caracterstica que puede utilizarse para administrar la carga de trabajo de SQL Server y el consumo de los recursos del sistema. El regulador de recursos permite especificar los lmites en la cantidad de CPU y memoria que las solicitudes entrantes procedentes de las aplicaciones pueden utilizar. El regulador de recursos es configurable en SQL Server Management Studio utilizando las instrucciones Transact-SQL o utilizando el Explorador de objetos. El regulador de recursos slo est disponible en las ediciones Enterprise, Developer y Evaluation de SQL Server. Introduccin al regulador de recursos Regulador de recursos es una nueva tecnologa en SQL Server 2008 que le permite administrar la carga de trabajo y los recursos de SQL Server especificando los lmites del consumo de recurso por solicitudes entrantes. En el contexto del Regulador de recursos, la carga de trabajo es un conjunto de consultas o solicitudes de dimensiones similares que pueden (y deberan) tratarse como una entidad nica. No se trata de un requisito, pero cuanto ms uniforme es el modelo del uso de recursos de una carga de trabajo, mayores son las ventajas que pueden obtenerse del Regulador de recursos. Los lmites sobre los recursos pueden reconfigurarse en tiempo real con un impacto mnimo sobre las cargas de trabajo que se estn ejecutando. En un entorno donde varias cargas de trabajo distintas estn presentes en el mismo servidor, el Regulador de recursos permite diferenciar estas cargas de trabajo y asignar los recursos compartidos a medida que se soliciten, en funcin de los lmites que se especifiquen. Estos recursos son CPU y memoria.

290

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
El regulador de recursos slo est disponible en las ediciones Enterprise, Developer y Evaluation de SQL Server. Tipos de problemas de los recursos L Regulador de recursos est diseado para solucionar los siguientes tipos de problemas sobre los recursos que pueden normalmente encontrarse en un entorno de base de datos:

Consultas fuera de control en el servidor. En este escenario, una consulta que requiere un uso intensivo de los recursos puede ocupar la mayora o todos los recursos del servidor. Ejecucin imprevisible de la carga de trabajo. En este escenario, las aplicaciones simultneas en el mismo servidor tienen cargas de trabajo de tamao y tipo diferente. Por ejemplo, dos aplicaciones de almacenamiento de datos o una mezcla de aplicaciones OLTP y de almacenamiento de datos. Estas aplicaciones no estn aisladas entre s y la contencin de recurso resultante produce una ejecucin imprevisible de la carga de trabajo. Establecer la prioridad de la carga de trabajo. En este escenario, se permite que una carga de trabajo se ejecute ms rpidamente que otra o se le garantiza la finalizacin si hay contencin de recursos. El Regulador de recursos permite asignar una importancia relativa a las cargas de trabajo.

Todos los escenarios anteriores requieren la capacidad de diferenciar las cargas de trabajo de alguna manera. El regulador de recursos proporciona:

La capacidad de clasificar las conexiones entrantes y enrutar sus cargas de trabajo a un grupo concreto.

La capacidad de supervisar el uso de los recursos para cada carga de trabajo en un grupo. La capacidad de agrupar recursos y establecer lmites especficos del grupo sobre el uso de la CPU y la asignacin de memoria. Se evita o minimiza as la probabilidad de consultas fuera de control. La capacidad de asociar cargas de trabajo agrupadas a un grupo concreto de recursos. La capacidad de identificar y establecer las prioridades para las cargas de trabajo.

Restricciones del Regulador de recursos Esta versin del Regulador de recursos tiene las restricciones siguientes:

La administracin de recursos se limita a SQL Server Database Engine (Motor de base de datos de SQL Server). L Regulador de recursos no se puede utilizar para Analysis Services, Integration Services y Reporting Services. No hay ninguna supervisin o administracin de las cargas de trabajo entre las instancias de SQL Server.

La especificacin de los lmites se refiere al ancho banda de la CPU y a la memoria administradas por SQL Server. Cargas de trabajo de OLTP. El Regulador de recursos puede administrar las cargas de trabajo de OLTP pero estos tipos de consultas, que son normalmente muy cortas en duracin, no siempre ocupan la CPU el tiempo suficiente como para aplicar los controles de ancho de banda. Este hecho puede sesgar las estadsticas obtenidas para el porcentaje de uso de la CPU.

Conceptos del regulador de recursos Los tres conceptos siguientes son fundamentales para comprender y utilizar el regulador de recursos:

Grupo de recursos de servidor. Se crean dos grupos de recursos de servidor (interno y predeterminado) cuando se instala SQL Server 2008. El regulador de recursos tambin admite grupos de recursos de servidor definidos por el usuario. Grupos de carga de trabajo. Cuando se instala SQL Server 2008, se crean dos grupos de carga de trabajo (interno y predeterminado) y se asignan a sus grupos de recursos de servidor correspondientes. El regulador de recursos tambin admite grupos de cargas de trabajo definidos por el usuario. Clasificacin. Existen reglas internas que clasifican las solicitudes entrante y las enruta a un grupo de cargas de trabajo. El regulador de recursos tambin admite una funcin clasificadora definida por el usuario para implementar las reglas de la clasificacin.

Nota: El regulador de recursos no impone ningn control sobre las conexiones de administrador dedicadas (DAC). No hay ninguna necesidad de clasificar las consultas de DAC, las cuales se ejecutan en el grupo de cargas de trabajo y en el grupo de recursos de servidor internos. En el contexto del regulador de recursos, puede tratar los conceptos anteriores como componentes. La ilustracin siguiente muestra estos componentes y su relacin entre s, tal y como existen en el entorno del motor de base de datos. Desde el punto de vista del procesamiento, el flujo simplificado es como sigue:

291

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Existe una conexin entrante para una sesin (sesin 1 de n). La sesin est clasificada (Clasificacin).

La carga de trabajo de la sesin se enruta a un grupo de cargas de trabajo, por ejemplo, al Grupo 4. El grupo de cargas de trabajo utiliza el grupo de recursos de servidor al que est asociado, por ejemplo, el Grupo 2.

El grupo de recursos de servidor proporciona y limita los recursos requeridos por la aplicacin, por ejemplo, la Aplicacin 3.

Grupos de recursos de servidor Un grupo de recursos de servidor o grupo, representa los recursos fsicos del servidor. Puede pensar en un grupo como en una instancia virtual de SQL Server dentro de una instancia de SQL Server. Un grupo tiene dos partes. Una parte no se superpone con otros grupos, lo que permite una reserva mnima de recursos. La otra parte se comparte con otros grupos, lo que permite consumir el consumo mximo de recursos. En esta versin de regulador de recursos, se establecen los recursos del grupo especificando uno de los siguientes valores para cada recurso:

MIN o MAX para la CPU

MIN o MAX para la memoria

MIN y MAX representan el grado mnimo de disponibilidad garantizada de recursos del grupo y el tamao mximo del grupo, respectivamente, para cada uno de esos recursos. La suma de los valores MIN de todos los grupos no puede superar el 100 por cien de los recursos del servidor. El valor MAX se puede establecer dentro del rango comprendido entre MIN y el 100 por cien, inclusive.

292

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Si un grupo tiene definido un MIN distinto de cero, el valor MAX efectivo del resto de grupos se reajustar como el mnimo del valor MAX configurado para un grupo y la suma de los valores MIN de otros grupos restados del 100 por cien. La tabla siguiente muestra los conceptos anteriores. La tabla muestra los valores para el grupo interno, el grupo predeterminado y para dos grupos definidos por el usuario. Las frmulas siguientes se utilizan para calcular el % del MAX efectivo y el % del compartido.


Nombre grupo

Min(X,Y) se refiere al valor mnimo de X e Y. Sum(X) se refiere a la suma del valor X a lo largo de todos los grupos.

El % total compartido = 100 - sum(% MIN). El % MAX efectivo = min(X,Y).

El % compartido = % MAX efectivo - % MIN. del Valor de Valor de % MAX efectivo % compartido Comentario % MIN % MAX calculado calculado

interno

100

100

El % MAX efectivos y el % compartido no son aplicables al grupo interno.

predeterminado

100

30

30

El valor MAX efectivo se calcula como: min (100,100 (20+50)) = 30. El % compartido calculado es el MAX efectivo - MIN = 30.

Grupo 1

20

100

50

30

El valor MAX efectivo se calcula como: min(100,10050) = 50. El % compartido calculado es el MAX efectivo - MIN = 30.

Grupo 2

50

70

70

20

El valor MAX efectivo se calcula como: min(70,100-20) = 70. El % compartido calculado es el MAX efectivo MIN = 20.

Utilizando la tabla anterior como ejemplo podemos mostrar ms detalladamente los ajustes que tienen lugar cuando se crea otro grupo. Este grupo es el Grupo 3 y tiene un valor de % MIN de 5. Nombre grupo del Valor de Valor de % MAX efectivo % compartido Comentario % MIN % MAX calculado calculado

interno

100

100

El % MAX efectivo y el % compartido no son aplicables al grupo interno.

predeterminado

100

25

25

El valor MAX efectivo se calcula como: min(100,100(20+50+5)) = 25. El % compartido calculado es el MAX efectivo - MIN = 25.

Grupo 1

20

100

45

25

El valor MAX efectivo se calcula como: min(100,10055) = 45. El % compartido calculado es el MAX efectivo - MIN = 25.

Grupo 2

50

70

70

20

El valor MAX efectivo se calcula como: min(70,100-25) = 70. El % compartido calculado es el MAX efectivo MIN = 20.

Grupo 3

100

30

25

El valor MAX efectivo se calcula como: min(100,10070) = 30. El % compartido calculado es el MAX efectivo - MIN = 25.

La parte compartida del grupo se utiliza para indicar dnde pueden ir los recursos en caso de que estn disponibles. Sin embargo, cuando se utilizan los recursos, stos van al grupo especificado y no se comparten. Esto puede mejorar la utilizacin de los recursos en aquellos casos en los que no existen solicitudes en un grupo dado y donde es posible que los recursos configurados para el grupo se liberen para otros grupos. Algunos casos extremos de configuracin del grupo son:

293

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Todos los grupos definen mnimos que en total representan el 100 por cien de los recursos del servidor. En este caso, los mximos efectivos son iguales a mnimos. Esto es equivalente a dividir los recursos del servidor en partes no superpuestas independientemente de que los recursos se utilizan dentro de un grupo determinado. Todos los grupos tienen mnimos cero. Todos los grupos compiten por los recursos disponibles y sus tamaos finales estn basados en el consumo de cada grupo. Otros factores, como pueden ser las directivas, representan un papel importante a la hora de determinar el tamao final del grupo.

El regulador de recursos predefine dos grupos de recursos de servidor, el grupo interno y el grupo predeterminado. Grupo interno El grupo interno representa los recursos utilizados por el SQL Server. Este grupo siempre contiene el grupo interno nicamente y el grupo no se puede alterar de ninguna forma. El consumo de recurso por el grupo interno no est restringido. Cualquier carga de trabajo en el grupo est considerada como crtica para la funcin del servidor y el regulador de recursos permite al grupo interno presionar a otros grupos, incluso aunque esto signifique infringir los lmites establecidos para el resto de grupos. Nota: El grupo interno y el uso de recursos de grupo interno no se restan del uso de recursos totales. Los porcentajes se calculan a partir de los recursos totales disponibles. Grupo predeterminado El grupo predeterminado es el primer grupo de usuario predefinido. Antes de cualquier configuracin, el grupo predeterminado contiene slo al grupo predeterminado. El grupo predeterminado no se puede crear o eliminar, pero se puede modificar. El grupo predeterminado puede contener grupos definidos por el usuario, adems del grupo predeterminado. Nota: El grupo predeterminado se puede modificar, pero no puede moverse fuera del grupo predeterminado. Grupos de recursos de servidor definidos por el usuario El regulador de recursos proporciona instrucciones de DDL para crear, modificar y eliminar grupos de recursos de servidor.. Grupos de cargas de trabajo Un grupo de cargas de trabajo sirve como contenedor para las solicitudes de sesin que sean similares de acuerdo con los criterios de clasificacin que se aplican a cada solicitud. Un grupo de cargas de trabajo permite la supervisin agregada del consumo de recursos y la aplicacin de una directiva uniforme a todas las solicitudes en el grupo. Un grupo define las directivas para sus miembros. Nota: Los grupos de cargas de trabajo definidos por el usuario se pueden mover de un grupo de recursos de servidor a otro. El regulador de recursos predefine dos grupos de cargas de trabajo: el grupo interno y el grupo predeterminado. Un usuario no puede cambiar nada que est clasificado como grupo interno, pero puede supervisarlo. Las solicitudes se clasifican en el grupo predeterminado cuando se dan las condiciones siguientes:

No hay ningn criterio para clasificar una solicitud. Hay un intento de clasificar la solicitud en un grupo inexistente.

Hay un error de clasificacin general.

El regulador de recursos tambin proporciona instrucciones DLL para crear, cambiar y quitar grupos de cargas de trabajo. Clasificacin El regulador de recursos admite la clasificacin de sesiones de entrada. La clasificacin se basa en un conjunto de criterios escritos por el usuario contenidos en una funcin. Los resultados de la lgica de la funcin permiten al regulador de recursos clasificar las sesiones en los grupos de cargas de trabajo existentes. Nota: El grupo de cargas de trabajo interno se rellena con las solicitudes que slo son para uso interno. No se pueden cambiar los criterios que se usan para enrutar estas solicitudes y no se pueden clasificar las solicitudes en el grupo de cargas de trabajo interno. Puede escribir una funcin escalar que contenga la lgica que se utiliza para asignar las sesiones entrantes a un grupo de cargas de trabajo. Para poder ejecutar esta funcin, debe completar las acciones siguientes:

Crear y registrar la funcin utilizando la instruccin ALTER RESOURCE GOVERNOR.

Actualizar la configuracin del regulador de recursos utilizando la instruccin ALTER RESOURCE GOVERNOR con el parmetro RECONFIGURE.

294

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Despus de crear la funcin y aplicar los cambios de configuracin, el clasificador del regulador de recursos utilizar el nombre del grupo de cargas de trabajo devuelto por la funcin para enviar una nueva solicitud al grupo de cargas de trabajo adecuado. Importante: La sesin del cliente puede expirar si la funcin de clasificacin no se completa dentro del tiempo de espera especificado para el inicio de sesin. El tiempo de espera de inicio de sesin es una propiedad del cliente y como a tal, el servidor no est al tanto de los tiempos de espera. Una funcin clasificadora que se ejecute durante un tiempo prolongado puede dejar al servidor con conexiones hurfanas durante largos perodos de tiempo. Es importante que cree funciones clasificadoras que finalicen su ejecucin antes de que se acabe el tiempo de espera de la conexin. La funcin definida por el usuario tiene las siguientes caractersticas y comportamientos:

La funcin definida por el usuario se evala para cada nueva sesin, incluso cuando la agrupacin de conexiones est habilitada. La funcin definida por el usuario proporciona el contexto del grupo de cargas de trabajo para la sesin. Una vez determinada la pertenencia al grupo, la sesin se enlaza al grupo de cargas de trabajo durante la vigencia de la sesin. Si la funcin definida por el usuario devuelve NULL, predeterminado o el nombre de un grupo que no existe, la sesin recibir el contexto del grupo de cargas de trabajo predeterminado. La sesin tambin recibe el contexto predeterminado si se produce un error en la funcin por cualquier motivo. La funcin se debera definir con mbito del servidor (base de datos maestra).

La designacin de la funcin clasificadora definida por el usuario slo surte efecto despus de ejecutar ALTER RESOURCE GOVERNOR RECONFIGURE. Slo se puede definir una funcin definida por el usuario como clasificador a la vez.

La funcin del clasificador definida por el usuario no se puede eliminar o modificar a menos que se quite su estado de clasificador. Con la ausencia de una funcin del clasificador definida por el usuario, todas las sesiones se clasifican en el grupo predeterminado. El grupo de cargas de trabajo devuelto por la funcin clasificadora est fuera del mbito de la restriccin del enlace de esquema. Por ejemplo, no puede quitar una tabla, pero puede quitar un grupo de cargas de trabajo.

Importante: Se recomienda habilitar la conexin de administrador dedicada (DAC) en el servidor. La conexin de administrador dedicada no est sujeta a la clasificacin del regulador de recursos y se puede utilizar para supervisar y solucionar problemas de una funcin clasificadora. Si no hay disponible una conexin de administrador dedicada para solucionar los problemas, la otra opcin es reiniciar el sistema en modo de usuario nico. Aunque el modo de usuario nico no est sujeto a clasificacin, no ofrece la capacidad de diagnosticar la clasificacin del regulador de recursos mientras se ejecuta.

Proceso de clasificacin En el contexto del regulador de recursos, el proceso de inicio de sesin para una sesin consta de los pasos siguientes: 1. 2. 3. Autenticacin del inicio de sesin Ejecucin del desencadenador LOGON Clasificacin

Cuando la clasificacin se inicia, el regulador de recursos ejecuta la funcin clasificadora y utiliza el valor devuelto por la funcin para enviar solicitudes al grupo de cargas de trabajo adecuado. Seguridad del regulador de recursos El Regulador de recursos utiliza los mecanismos de seguridad de SQL Server existentes como la autenticacin, los niveles de permisos y las cadenas de propiedad. En este tema se identifican aspectos de la configuracin y el uso del Regulador de recursos que se deben considerar para garantizar que se tratan los posibles problemas de seguridad. Consideraciones Hay que considerar los siguientes elementos de diseo e implementacin del Regulador de recursos para garantizar la mxima seguridad posible de esta caracterstica al usarla:

Permisos Nombres del grupo de recursos de servidor y del grupo de cargas de trabajo

295

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Permisos Los permisos siguientes se requieren para cambiar o ver la configuracin del Regulador de recursos: La funcin clasificadora definida por el usuario

Para cambiar la configuracin del Regulador de recursos, un usuario necesita el permiso CONTROL SERVER. Los permisos se comprueban cuando se ejecuta cualquiera de las instrucciones DDL del Regulador de recursos. Para ver la configuracin activa que proporcionan las vistas de administracin dinmica, un usuario requiere el permiso VIEW SERVER STATE.

Se recomienda que la capacidad para crear o cambiar la configuracin del Regulador de recursos se conceda a los administradores de bases de datos experimentados.

Nombres del grupo de recursos de servidor y del grupo de cargas de trabajo Todos los nombres de los grupos de recursos de servidor y de los grupos de cargas de trabajo son pblicos. Al crear los grupos, se deben elegir nombres que no divulguen informacin sobre la naturaleza de las aplicaciones que se estn ejecutando en el servidor. Por ejemplo, un grupo de cargas de trabajo denominado NminasCompaa proporciona una indicacin obvia de la naturaleza e importancia de las aplicaciones que lo utilizan.

La funcin clasificadora definida por el usuario La funcin clasificadora definida por el usuario (UDF) se almacena en la base de datos maestra. Esta funcin es similar a los desencadenadores LOGON en su diseo e implementacin, y se ejecuta despus de que se desencadene LOGON como parte del proceso de inicio de sesin. La funcin se ejecuta en el contexto de inicio de la sesin que realiza una solicitud y la clasificacin debe finalizar antes de que se establezca realmente una sesin. Por tanto, todos los mensajes que se originan dentro de la funcin clasificadora que normalmente llegaran al usuario, como los mensajes de error y los mensajes de la instruccin PRINT, se desvan al registro de errores de SQL Server. Advertencia: Aunque esta versin del Regulador de recursos implementa el enlace de esquemas para restringir las llamadas que se pueden realizar desde la funcin clasificadora definida por el usuario, todos los datos que devuelve la funcin no son necesariamente seguros. Tenga en cuenta los aspectos siguientes del comportamiento de la funcin clasificadora definida por el usuario:

El Regulador de recursos ejecuta esta funcin como parte de la clasificacin en el contexto del usuario de inicio de sesin de forma predeterminada, o como usuario designado si en la funcin se especifica EXECUTE AS. Cuando el Regulador de recursos ejecuta esta funcin como parte de la clasificacin, no comprueba el permiso EXECUTE en la funcin clasificadora definida por el usuario. Sin embargo, todos los objetos a los que hace referencia la funcin estn sujetos a las comprobaciones de permisos estndar, que pueden permitir el acceso en funcin de la cadena de propiedad. Registrar una funcin como clasificadora del Regulador de recursos no afecta a sus niveles de permisos si se utiliza fuera del mbito de la clasificacin del Regulador de recursos.

Cadenas de propiedad en el Regulador de recursos Puede confiar en las cadenas predeterminadas de propiedad basadas en esquemas o usar EXECUTE AS para dar acceso a un esquema a un nico usuario cuando la clasificacin del Regulador de recursos se est ejecutando. En el ejemplo de cdigo siguiente y en los comentarios se ilustra cmo funcionan las cadenas de propiedad en el Regulador de recursos. Nota: En el ejemplo siguiente se supone que los inicios de sesin de SQL estn habilitados. En el cdigo siguiente se crean usuarios del esquema (SchemaUser1, SchemaUser2) que tienen acceso a master. use master go CREATE CREATE CREATE CREATE go LOGIN SchemaUser1 WITH PASSWORD='your password here'; USER SchemaUser1 FOR LOGIN [SchemaUser1]; LOGIN SchemaUser2 WITH PASSWORD='your password here'; USER SchemaUser2 FOR LOGIN [SchemaUser2];

En el cdigo siguiente se crea un usuario (NormalUser1) con los permisos de inicio de sesin predeterminados. CREATE LOGIN NormalUser1 WITH PASSWORD='your password here'; CREATE USER NormalUser1 FOR LOGIN [NormalUser1]; go En el cdigo siguiente se crean esquemas (Schema1, Schema2) y se asignan a los usuarios de esquemas que se crearon. Tambin se crea una tabla (groupTable) para los esquemas. CREATE SCHEMA Schema1 AUTHORIZATION SchemaUser1 CREATE TABLE groupTable (uname sysname, gname sysname);

296

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
CREATE SCHEMA Schema2 AUTHORIZATION SchemaUser2 CREATE TABLE groupTable (uname sysname, gname sysname); go En el cdigo siguiente se agregan valores a groupTable. INSERT Schema1.groupTable VALUES(N'NormalUser1',N'Group1'); INSERT Schema2.groupTable VALUES(N'NormalUser1',N'Group2'); go En este momento, Schema1 y Schema2 son propiedad de SchemaUser1 y SchemaUser2, respectivamente. En el ejemplo de cdigo siguiente se crea una funcin que se utilizar para tener acceso a Schema1 y Schema2. CREATE FUNCTION Schema1.classifier() RETURNS sysname WITH SCHEMABINDING AS BEGIN DECLARE @n sysname SELECT @n = gname FROM Schema1.groupTable WHERE uname = SUSER_NAME() SELECT @n = gname FROM Schema2.groupTable WHERE uname = SUSER_NAME() RETURN @n END go En el cdigo siguiente se registra la funcin anterior como una funcin clasificadora definida por el usuario. Observe que SchemaUser1 no tiene permiso de acceso a Schema2. ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION=Schema1.classifier); ALTER RESOURCE GOVERNOR RECONFIGURE go Como prueba, intente iniciar sesin como NormalUser1 desde otra conexin de cliente. Abra el Visor de eventos de Windows. Debe ver una entrada de error del clasificador en el registro de aplicacin. NormalUser1 hereda los derechos de acceso para Schema1.groupTable por las cadenas de propiedad de Schema1.classifier. Sin embargo, Schema1 no tiene permiso de acceso a Schema2.groupTable. Como otra prueba, conceda el permiso SELECT a SchemaUser1 para Schema2.groupTable. GRANT SELECT ON Schema2.groupTable TO SchemaUser1 go Inicie sesin como NormalUser1. Una vez ms, ver una entrada de error del clasificador en el registro de eventos. Este error se produce porque el servidor comprueba si NormalUser1 tiene o no el permiso SELECT, que no se hereda de SchemaUser1. En el ejemplo de cdigo siguiente, se crea otra funcin clasificadora. Esta vez, se concede a los inicios de sesin el permiso para EXECUTE AS SchemaUser1. CREATE FUNCTION Schema1.classifier2() RETURNS sysname WITH SCHEMABINDING, EXECUTE AS 'SchemaUser1' AS BEGIN DECLARE @n sysname SELECT @n = gname FROM Schema1.groupTable WHERE uname = SUSER_NAME() SELECT @n = gname FROM Schema2.groupTable WHERE uname = SUSER_NAME() RETURN @n END go ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION=Schema1.classifier2); ALTER RESOURCE GOVERNOR RECONFIGURE; go Dado que la nueva funcin se ejecuta en el contexto de SchemaUser1, y que SchemaUser1 tiene el permiso SELECT en Schema2.groupTable, la funcin Schema1.classifier2() se ejecutar correctamente para el inicio de sesin NormalUser1. Inicie sesin de nuevo como NormalUser1 y compruebe si hay un error del clasificador en el registro de eventos. Nota: Dado que NormalUser1 no tiene concedido el permiso EXECUTE en la funcin Schema1.classifier2, no puede ejecutar la funcin como una consulta ad hoc.

Probar la funcin clasificadora Debe probar y optimizar la funcin clasificadora antes de utilizarla para clasificar las solicitudes entrantes. Una funcin mal escrita puede dejar el sistema inutilizable al agotar el tiempo de espera y exponer informacin de configuracin. Puede utilizar una Conexin de administrador dedicada (DAC) para solucionar los problemas de una funcin clasificadora mientras el Regulador de recursos est habilitado, porque esta conexin no est sujeta a clasificacin. Se recomienda tener habilitada la Conexin de administrador dedicada en el servidor. Nota: Si no hay disponible ninguna Conexin de administrador dedicada para solucionar los problemas, la otra opcin es reiniciar el sistema en modo de usuario nico. El modo de usuario nico no est sujeto a clasificacin; sin embargo, no ofrece la capacidad de evaluar el clasificador del Regulador de recursos mientras se ejecuta.

Estados del regulador de recursos El regulador de recursos tiene dos estados en SQL Server: habilitado o deshabilitado. Estos estados afectan a las operaciones bsicas as como al procesamiento de la carga de trabajo al realizar cambios de configuracin. En este tema se explican los estados del regulador de recursos y lo que ocurre cuando:

La configuracin y el estado iniciales cuando se instala el regulador de recursos.

297

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Habilita o deshabilita el regulador de recursos. Cambia una configuracin del regulador de recursos.

Configuracin inicial

Cuando se instala el regulador de recursos, se crean los siguientes grupos de cargas de trabajo y sus grupos de recursos de servidor correspondientes:

Grupo interno y grupo de recursos de servidor interno. Grupo predeterminado y grupo de recursos de servidor predeterminado.

En este punto se deshabilita el regulador de recursos.

Habilitar o deshabilitar el regulador de recursos Los comportamientos siguientes son normales al habilitar o deshabilitar el gobernador de recursos. Habilitar el regulador de recursos Para habilitar el regulador de recursos, ejecute ALTER RESOURCE GOVERNOR RECONFIGURE. Habilitar el regulador de recursos tiene como consecuencia lo siguiente:

La funcin de clasificador se ejecuta para las nuevas conexiones, de forma que se puede asignar su carga de trabajo a los grupos de cargas de trabajo. Se exigirn y aplicarn los lmites de los recursos especificados en la configuracin del regulador de recursos.

Aquellas solicitudes existentes antes de habilitar el regulador de recursos quedarn afectadas por cualquier otro cambio realizado en la configuracin en el momento de deshabilitar el regulador de recursos.

Deshabilitar el regulador de recursos Para deshabilitar el regulador de recursos, ejecute ALTER RESOURCE GOVERNOR DISABLE. Deshabilitar el regulador de recursos tiene como consecuencia lo siguiente:

No se ejecuta la funcin de clasificador.

Todas las conexiones nuevas se clasificarn automticamente en el grupo Predeterminado. Las solicitudes iniciadas por el sistema sern clasificadas en el grupo de cargas de trabajo Interno.

Se reiniciarn a sus valores predeterminados todas las configuraciones existentes del grupo de cargas de trabajo y del grupo de recursos de servidor. En este caso, no se desencadenar ningn evento cuando se alcancen los lmites. La supervisin normal del sistema no se ver afectada.

Se puede cambiar la configuracin del regulador de recursos cuando est deshabilitado, pero los cambios no surtirn efecto hasta que se habilite de nuevo el regulador de recursos. Al reiniciar SQL Server, el regulador de recursos no cargar su configuracin sino que nicamente tendr los grupos predeterminados e internos.

Cambiar la configuracin del regulador de recursos Los cambios en la configuracin del regulador de recursos no tienen efecto inmediatamente. Un cambio en la configuracin se lleva a cabo en dos pasos: 1. Se ejecuta la instruccin ALTER adecuada para cambiar un valor de configuracin del grupo de recursos de servidor o del grupo de cargas de trabajo. Esto actualiza los metadatos de la configuracin. Se ejecuta la instruccin ALTER RESOURCE GOVERNOR. Esto copia los metadatos actualizados a la configuracin en memoria. La tabla siguiente describe cundo surten efecto los cambios de configuracin generales y cundo estn visibles en una sesin del regulador de recursos.

2.

298

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Componente Descripcin

Clasificacin definida por El cambio es efectivo para las nuevas conexiones de sesin. el usuario

Grupo de recursos de El cambio afectar probablemente a las sesiones cuya ejecucin sea prolongada; es posible que las sesiones servidor con un tiempo de ejecucin ms corto finalicen antes de que surta efecto el cambio.

Grupo trabajo

de

cargas

de El cambio no afecta a las sesiones actuales pero s afectar a las nuevas conexiones.

Adems del comportamiento de la sesin general cuando se ejecutan instrucciones de DDL del regulador de recursos, las configuraciones individuales de un grupo de recursos de servidor o de un grupo de cargas de trabajo provocan unos resultados previsibles y un efecto especfico sobre el procesamiento cuando se modifican.

Configuracin del grupo de recursos de servidor Existen cuatro valores para configurar un grupo de recursos de servidor. stos son:

Un porcentaje mnimo y mximo para el uso de la CPU. Un porcentaje mnimo y mximo para el uso de la memoria.

Al aplicar los cambios a una configuracin del grupo de recursos de servidor, hay un perodo de transicin durante el cual se administran las solicitudes activas o en espera. La tabla siguiente describe los requisitos y comportamientos de la sesin cuando se aplican los cambios a un valor de la configuracin del grupo de recursos de servidor. Parmetro Accin Descripcin

Porcentaje mnimo

Aumentar disminuir

Aumentar: cualquier otro grupo de recursos de servidor se reduce a sus valores de configuracin mximos efectivos. Si la suma de todos los valores mnimos supera el 100 por cien, deber disminuir algunos de los valores mnimos de los dems grupos de recursos de servidor y, a continuacin, aumentar el valor mnimo del grupo de recursos de servidor actual.

Disminuir: si el mximo efectivo es igual al mnimo, se extraer del grupo de recursos de servidor aquella memoria no asignada y es posible que las solicitudes en cola produzcan un error. La memoria asignada no se extrae del grupo de recursos de servidor hasta que finalicen las solicitudes activas.

Porcentaje mximo

Aumentar disminuir

Aumentar: ningn problema como resultado del cambio de valor.

Disminuir: si el nuevo valor es ms alto que el uso real, no habr ningn problema. Si es ms bajo que el uso real, tendr lugar un perodo de transicin. Se completarn las solicitudes existentes antes de que se pueda realizar la modificacin y las nuevas pueden producir errores.

Configuracin del grupo de cargas de trabajo Hay siete valores para configurar un grupo de cargas de trabajo. stos son:

Una asignacin de memoria mxima para una solicitud. Un tiempo de CPU mximo para una solicitud.

Un tiempo de espera de recurso para una solicitud. Un valor de importancia relativo para una solicitud.

Un lmite para el grupo de trabajo para el nmero de solicitudes. Un grado mximo de paralelismo.

Un grupo de recursos de servidor especificado.

299

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Parmetro Accin Descripcin

Memoria mxima

Aumentar disminuir

Aumentar. Ningn efecto en las consultas activas. Si hay disponible, estas consultas podrn obtener ms memoria.

Disminuir. Las solicitudes activas no se ven afectadas, pero las nuevas contarn con menos memoria.

Tiempo de CPU mximo

Aumentar disminuir

Aumentar. Ningn efecto sobre las consultas activas.

Disminuir. Provoca que se dispare un evento para aquellas consultas que estn por encima del lmite, aunque stas continuarn ejecutndose.

Tiempo de espera de Aumentar recurso disminuir

o No se vern afectadas aquellas consultas que ya estn esperando en la cola. Las nuevas consultas utilizarn la nueva configuracin.

Importancia

Aumentar disminuir

o Slo afecta a la distribucin de la CPU para las consultas del grupo de cargas de trabajo.

Nmero solicitudes

mximo

de Aumentar disminuir

Aumentar. Ningn efecto sobre las consultas existentes.

Disminuir. Las consultas existentes no se vern afectadas, pero las nuevas debern esperar y es posible que superen el tiempo de espera.

Grado

mximo

de Aumentar disminuir

o Slo afecta a la compilacin y ejecucin de nuevas consultas.

paralelismo

Grupo de recursos de Cambiar servidor especificado

Las solicitudes activas continuarn utilizando el grupo de recursos de servidor existente y su configuracin. Las nuevas solicitudes utilizarn el nuevo grupo de recursos de servidor y su configuracin.

Configuracin del regulador de recursos Adems de cambiar una configuracin o un estado actual del regulador de recursos, es posible utilizar la instruccin ALTER RESOURCE GOVERNOR RECONFIGURE para crear o cambiar la funcin de clasificador. Al registrar una nueva funcin de clasificador, est cambiando las reglas utilizadas para enrutar las nuevas conexiones a un grupo de cargas de trabajo diferente. Este cambio no afecta a las consultas que ya estn clasificadas; slo afecta a las nuevas consultas.

Supervisin del regulador de recursos La obtencin de las estadsticas de ejecucin para cada grupo de cargas de trabajo y grupo de recursos de servidor es una parte crtica de la estrategia de supervisin y administracin del regulador de recursos. Las estadsticas de ejecucin permiten identificar las caractersticas de la carga de trabajo que pueden ayudar en la configuracin y en la deteccin de posibles problemas con la suficiente antelacin como para tomar las acciones correctoras pertinentes y garantizar un funcionamiento continuado confiable y predecible.

Contadores de rendimiento

En el regulador de recursos, la mayor parte de la recopilacin de estadsticas se basa en contadores de rendimiento por las siguientes razones:

Los contadores de rendimiento se pueden supervisar sin necesidad de un sondeo explcito al estilo de Transact-SQL. El nmero total de grupos de cargas de trabajo y grupos de recursos de servidor activos previstos es pequeo (del orden de decenas), as que existe una presin de memoria importante de los contadores. La vista de administracin dinmica sys.dm_os_performance_counters existente se puede usar para extraer valores de contador. Dado que los valores mostrados no tienen formato, el DBA puede usarlos para calcular valores promedio. Las herramientas tales como Perfmon se pueden utilizar sin necesidad de modificaciones.

300

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
El regulador de recursos utiliza los siguientes objetos de rendimiento para recopilar estadsticas de grupos de cargas de trabajo y de grupos de recursos de servidor: Nombre de contador de Descripcin rendimiento

SQLServer:Workload Stats

Group Notifica las estadsticas de cada grupo de cargas de trabajo activo, como el nmero de solicitudes activas y el nmero de solicitudes bloqueadas.

SQLServer:Resource Stats

Pool Notifica las estadsticas de cada grupo de recursos de servidor activo, como el nmero de concesiones de memoria que se producen en el grupo de recursos de servidor por segundo y la cantidad de memoria que usa dicho grupo.

Eventos Adems del uso de eventos de seguimiento de SQL, el regulador de recursos dispone de nuevos eventos para la supervisin. En la tabla siguiente se describen los nuevos eventos. Nombre del evento Descripcin

CPU Exceeded

Threshold Indica cundo el regulador de recursos detecta que una consulta ha superado el valor de umbral de CPU en REQUEST_MAX_CPU_TIME_SEC.

PreConnect:Starting

Indica cundo se ha iniciado la ejecucin de un desencadenador LOGON o de una funcin de clasificador del regulador de recursos.

PreConnect:Completed

Indica cundo ha finalizado la ejecucin de un desencadenador LOGON o de una funcin de clasificador del regulador de recursos.

Vistas de administracin dinmica El regulador de recursos dispone de nuevas vistas de administracin dinmica que puede usar para devolver estadsticas actuales y datos de configuracin de los grupos de cargas de trabajo y los grupos de recursos de servidor. En la tabla siguiente, se describen las vistas de administracin dinmica. Nombre Descripcin

sys.dm_resource_governor_workload_group s

Devuelve las estadsticas del grupo de cargas de trabajo y la configuracin actual en memoria de ste.

sys.dm_resource_governor_resource_pools

Devuelve informacin acerca del estado actual del grupo de recursos de servidor, la configuracin actual de los grupos de recursos de servidor y estadsticas del grupo de recursos de servidor.

sys.dm_resource_governor_configuration

Devuelve una fila que contiene el estado actual de la configuracin en memoria para el regulador de recursos.

Los datos de configuracin almacenados sys.resource_governor_resource_pools.

para

el

regulador

de

recursos

estn

disponibles

en

vistas

de

catlogo

como

Escenarios de administracin de la carga de trabajo del regulador de recursos Puede utilizar el regulador de recursos de diversas maneras para supervisar y administrar las cargas de trabajo de su sistema SQL Server. En este tema se proporciona informacin general sobre cmo configurar el regulador de recursos y cmo se pueden utilizar sus recursos. Los escenarios contemplados incluyen ejemplos de cdigo de Transact-SQL para crear y cambiar los grupos de cargas de trabajo y los grupos de recursos de servidor.

Configuracin del regulador de recursos

Una vez instalado SQL Server 2008, el regulador de recursos estar disponible para su uso pero no estar habilitado. Estn presentes los grupos de cargas de trabajo interno y predeterminado, as como sus correspondientes grupos de recursos de servidor. Para crear y utilizar sus propios grupos de recursos de servidor y grupos de cargas de trabajo, debe completar los pasos siguientes:

Cree un grupo de recursos de servidor con los lmites que especifique.

301

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Cree un grupo de cargas de trabajo con los lmites y directivas que especifique e identifique el grupo de recursos de servidor al que el grupo de cargas de trabajo pertenece. Defina y active la funcin clasificadora que desee utilizar para las solicitudes entrantes.

Una vez completados los pasos anteriores, puede ver la configuracin activa del regulador de recursos y el estado de todas las solicitudes activas que estn clasificadas.

Determinacin de los requisitos del grupo de recursos de servidor y el grupo de cargas de trabajo Su objetivo consiste en determinar la configuracin del grupo de cargas de trabajo y el grupo de recursos de servidor que desee utilizar para su entorno SQL Server. Para ello, debe tener informacin sobre la forma en que una aplicacin utiliza los recursos de SQL Server. La solucin consiste en crear un grupo de cargas de trabajo que est en el grupo de recursos de servidor predeterminado. Ejecute la aplicacin durante varios das y utilice la informacin que recopile para responder a las preguntas siguientes. Cules son los requisitos de CPU? Haga una estimacin del ancho banda de CPU multiplicando el uso medio total por solicitud de la CPU por el nmero medio de solicitudes por segundo. El mximo, la media y la desviacin estndar del uso de la CPU se pueden utilizar para determinar si es necesario establecer un lmite mximo para la CPU. Cul es el nmero de solicitudes simultneas? Utilice las estadsticas del nmero mximo y medio de solicitudes simultneas para determinar el factor mnimo de simultaneidad. Cul es la cantidad memoria total necesaria? Utilice las cantidades mxima y media de memoria total utilizada para determinar los requisitos de memoria. Cunta memoria se necesita para una sola consulta? Utilice la estadstica de cantidades mxima y media de memoria por consulta para determinar cunta memoria se necesita. Hay alguna consulta que no se est ejecutando por falta de memoria? Utilice la estadstica del tiempo medio de espera en la cola de memoria para determinar si se bloquea alguna consulta debido a problemas de disponibilidad de la memoria.

Escenarios Hemos preparado siete escenarios como ejemplos. Los escenarios 1 a 5 son acumulativos; cada uno se basa en el escenario anterior. El escenario 6 no est relacionado con los escenarios precedentes, mientras que el escenario 7 se basa en el escenario 6.

Escenario 1 P: Acabo de instalar una nueva versin de SQL Server y deseara utilizar el regulador de recursos. Cmo puedo utilizarlo en mi entorno? R: Considere utilizar el regulador de recursos para supervisar el consumo de recursos por parte de las cargas de trabajo. Siga los pasos siguientes para preparar un entorno del regulador de recursos. Se le proporciona un ejemplo de configuracin. 1. 2. 3. 4. 5. Cree grupos de cargas de trabajo para sus cargas de trabajo. Cree una funcin de clasificacin. Registre la funcin de clasificacin en el regulador de recursos. Habilite el regulador de recursos. Supervise los contadores de rendimiento del regulador de recursos y haga una consulta de los DMVs que devuelva informacin sobre el uso de recursos por parte de un grupo de cargas de trabajo.

Ejemplo Nota: La configuracin siguiente no especifica ningn grupo de recursos de servidor que el grupo de cargas de trabajo deba usar. De forma predeterminada, los grupos de cargas de trabajo utilizarn el grupo de recursos de servidor predeterminado. BEGIN TRAN; -- Create 3 workload groups based on the nature of their workload. -- One handles ad hoc requests, the second handles reports, and the -- third handles admin requests. These groups all use the default -- settings for workload groups. -- These workloads are divided into groups that cover ad hoc queries, -- reports, and administration jobs. CREATE WORKLOAD GROUP GroupAdhoc; CREATE WORKLOAD GROUP GroupReports; CREATE WORKLOAD GROUP GroupAdmin; GO COMMIT TRAN; -- Create a classification function.

302

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
-- Note that any request that does not get classified goes into -- the 'default' group. CREATE FUNCTION dbo.rgclassifier_v1() RETURNS sysname WITH SCHEMABINDING AS BEGIN DECLARE @grp_name sysname IF (SUSER_NAME() = 'sa') SET @grp_name = 'GroupAdmin' IF (APP_NAME() LIKE '%MANAGEMENT STUDIO%') OR (APP_NAME() LIKE '%QUERY ANALYZER%') SET @grp_name = 'GroupAdhoc' IF (APP_NAME() LIKE '%REPORT SERVER%') SET @grp_name = 'GroupReports' RETURN @grp_name END; GO -- Register the classifier function with Resource Governor ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION= dbo.rgclassifier_v1); GO -- Start Resource Governor ALTER RESOURCE GOVERNOR RECONFIGURE; GO Escenario 2 P: En funcin de los resultados de supervisin obtenidos en el escenario 1, deseara ver un evento cada vez que una consulta del grupo ad hoc (GroupAdhoc) se ejecute durante ms de 30 segundos. R: Siga los pasos siguientes para modificar la actual configuracin del regulador de recursos. Se le proporciona un ejemplo de configuracin. 1. 2. 3. Establezca un lmite sobre el uso de la CPU para el grupo ad hoc. Supervise los eventos de seguimiento de SQL (evento de clase de administracin del regulador de recursos). Realice una accin sobre el evento. Por ejemplo, omita el evento, enve un correo electrnico, enve una pgina o ejecute el comando KILL sobre la solicitud.

Ejemplo -- Specify a limit on CPU usage for the ad hoc workload group. -- An event is automatically generated when the limit is reached. ALTER WORKLOAD GROUP GroupAdhoc WITH (REQUEST_MAX_CPU_TIME_SEC = 30); GO -- Apply the changes to the Resource Governor in-memory configuration. ALTER RESOURCE GOVERNOR RECONFIGURE; GO Escenario 3 P: Deseo restringir el grupo ad-hoc de manera que no supere el 50 por ciento del uso de la CPU cuando se acumulen todas las solicitudes. R: Dado que los escenarios anteriores utilizaron el grupo predeterminado, deber crear un nuevo grupo de recursos de servidor. Siga los pasos siguientes para modificar la actual configuracin del regulador de recursos. Se le proporciona un ejemplo de configuracin. 1. 2. Cree un nuevo grupo de recursos de servidor y configure los lmites de la CPU. Configure el grupo de cargas de trabajo ad hoc para utilizar el nuevo grupo de recursos de servidor.

Ejemplo BEGIN TRAN; -- Create a new resource pool and set a maximum CPU limit. CREATE RESOURCE POOL PoolAdhoc WITH (MAX_CPU_PERCENT = 50); -- Configure the workload group so it uses the new resource pool. -- The following statement moves 'GroupAdhoc' from the 'default' pool --- to 'PoolAdhoc' ALTER WORKLOAD GROUP GroupAdhoc USING PoolAdhoc; COMMIT TRAN; GO -- Apply the changes to the Resource Governor in-memory configuration. ALTER RESOURCE GOVERNOR RECONFIGURE; GO Escenario 4 P: Ahora deseo garantizar que el grupo de administracin disponga siempre de recursos para ejecutar consultas de diagnstico, pero dichas consultas no deben ocupar ms del 10 por ciento de los recursos de memoria del servidor. R: Para ello debe crear un nuevo grupo de recursos de servidor. Siga los pasos siguientes para modificar la actual configuracin del regulador de recursos. Se le proporciona un ejemplo de configuracin. 1. Cree un nuevo grupo de recursos de servidor y establezca los lmites sobre los recursos.

303

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
2. Configure el grupo de cargas de trabajo de administracin para utilizar el nuevo grupo de recursos de servidor.

Ejemplo BEGIN TRAN; -- Create a new resource pool and set resource limits. CREATE RESOURCE POOL PoolAdmin WITH ( MIN_CPU_PERCENT = 10, MIN_MEMORY_PERCENT = 10, MAX_MEMORY_PERCENT = 10); -- Note that no limit is specified for MAX CPU on this pool. -- Configure the admin group to use the new pool. -- The following statement moves 'GroupAdmin' from the 'default' pool -- to 'PoolAdmin'. ALTER WORKLOAD GROUP GroupAdmin USING PoolAdmin; COMMIT TRAN; GO -- Apply the changes to the Resource Governor in-memory configuration. ALTER RESOURCE GOVERNOR RECONFIGURE; GO Escenario 5 P: Puesto que mis informes se encuentran actualmente en el grupo de recursos de servidor predeterminado, aunque utilizan un grupo de cargas de trabajo independiente (GroupReports), me gustara asegurarme de que todo lo que se encuentre en el grupo de recursos de servidor predeterminado tendr una prioridad de uso de recursos menor que los informes. R: Para ello debe configurar el parmetro IMPORTANCE en el grupo predeterminado. Nota: Puede cambiar los valores para el grupo predeterminado, pero no para el grupo de recursos de servidor predeterminado. Si cree que se necesita un cambio en el grupo de recursos de servidor predeterminado, est ante un claro indicador de que necesita crear un nuevo grupo de recursos de servidor. Siga el siguiente paso para modificar la actual configuracin del regulador de recursos. Se le proporciona un ejemplo de configuracin. 1. Cambie el valor para el grupo predeterminado.

Ejemplo -- Configure the IMPORTANCE setting. ALTER WORKLOAD GROUP [default] WITH (IMPORTANCE = LOW); GO -- Apply the changes to the Resource Governor in-memory configuration. ALTER RESOURCE GOVERNOR RECONFIGURE; GO Escenario 6 P: Deseo crear un nuevo grupo de cargas de trabajo que utilice un grupo de recursos de servidor existente. A continuacin, deseo cambiar la funcin clasificadora de manera que traslade el grupo a un nuevo grupo de recursos de servidor. R: Siga los pasos siguientes para preparar este nuevo entorno del regulador de recursos. Se le proporciona un ejemplo de configuracin. 1. 2. 3. Cree un nuevo grupo de recursos de servidor con la configuracin predeterminada. Cree un nuevo grupo de cargas de trabajo que resida en un grupo de recursos de servidor existente. Cree y registre una nueva funcin clasificadora para administrar solicitudes.

Ejemplo BEGIN TRAN; -- Create a new resource pool with the default pool settings. CREATE RESOURCE POOL MyNewPool; -- Create a new workload group that is in an existing -- resource pool named 'MyPool'. CREATE WORKLOAD GROUP MyNewGroup USING MyPool; GO COMMIT TRAN; GO -- Create a classifier function that is based on a user login. CREATE FUNCTION dbo.rgclassifier_v2 () RETURNS sysname WITH SCHEMABINDING AS BEGIN DECLARE @grp_name sysname IF SUSER_SNAME() = 'DOMAIN\username' SET @grp_name = 'MyNewGroup' ELSE SET @grp_name = 'MyGroup'

304

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
RETURN @grp_name END; GO -- Register the function with Resource Governor and -- then start Resource Governor. ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rgclassifier_v2); GO ALTER RESOURCE GOVERNOR RECONFIGURE; GO Escenario 7 P: He decidido que ya no requiero un grupo de cargas de trabajo (creado en el escenario 6) , por lo que deseo eliminar el grupo de cargas de trabajo y el grupo de recursos de servidor en l contenido. R: Siga los pasos siguientes para cambiar el entorno del regulador de recursos. Se le proporciona un ejemplo de configuracin. 1. 2. 3. 4. Cree y registre una nueva funcin clasificadora que clasificar las solicitudes en el grupo de cargas de trabajo restante. Quite el grupo de cargas de trabajo. Quite el grupo de recursos de servidor. Aplique los cambios en la configuracin.

Ejemplo BEGIN TRAN; GO -- Create a new classifier function. CREATE FUNCTION dbo.rgclassifier_v3 () RETURNS sysnameE WITH SCHEMABINDING AS BEGIN DECLARE @grp_name sysname IF suser_sname() = 'DOMAIN\username' SET @grp_name = 'MyGroup' RETURN @grp_name END; GO COMMIT TRAN; GO -- Register the new function and start Resource Governor. ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rgclassifier_v3); GO -- Wait for all the current sessions that use 'MyNewGroup' to drain, -- or KILL the sessions. BEGIN TRAN; GO -- You have to drop the workload group before you can drop the -- resource pool it is in. DROP WORKLOAD GROUP MyNewGroup; GO DROP RESOURCE POOL MyNewPool; GO COMMIT TRAN; -- Update the Resource Governor in-memory configuration ALTER RESOURCE GOVERNOR RECONFIGURE; GO DDL del regulador de recursos y vistas del sistema Puede utilizar comandos DLL del regulador de recursos, vistas de catlogo y vistas de administracin dinmica para todos los aspectos del regulador de recursos. Adems de las vistas nuevas especficas del regulador de recursos, se han modificado las vistas de sistema existentes para incluir informacin acerca del regulador de recursos. En este tema se resumen las instrucciones y vistas siguientes:

Comandos DDL, incluyendo los comandos para grupos de cargas de trabajo, grupos de recursos de servidor y para el regulador de recursos. Vistas de sistema del regulador de recursos, incluyendo las vistas de catlogo y de administracin dinmica.

Las vistas de sistema de SQL Server que se han actualizado para ser compatibles con el regulador de recursos. Las actualizaciones de la clase de eventos de SQL Server as como las nuevas clases de eventos que son compatibles con el regulador de recursos.

Instrucciones de DDL

305

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
El regulador de recursos proporciona siete comandos DDL que puede utilizar para configurar todos los aspectos de una sesin del regulador de recursos. Existen comandos CREATE, ALTER y DROP para los grupos de cargas de trabajo y grupos de recursos de servidor. Existe tambin una instruccin ALTER RESOURCE GOVERNOR RECONFIGURE que aplica los cambios en la configuracin. Los aspectos clave a tener en cuenta acerca de los comandos DLL del regulador de recursos son los siguientes:

Las instrucciones CREATE, ALTER y DROP trabajan sobre los metadatos almacenados y son transaccionales. Sin embargo, la ejecucin correcta de estas instrucciones no significa que los cambios sean efectivos; deber ejecutar la instruccin ALTER RESOURCE GOVERNOR RECONFIGURE para aplicar dichos cambios. Las instrucciones anteriores pueden formar parte de una transaccin para evitar que diferentes usuarios puedan modificar simultneamente la misma configuracin. Esto se hace utilizando BEGIN TRANSACTION y COMMIT TRANSACTION con las instrucciones. Cualquier bloqueo retenido en una transaccin es visible en sys.dm_tran_locks y la transaccin se puede detener si es necesario. Nota: Aunque no es necesario, recomendamos encarecidamente el uso de la sintaxis transaccional cuando utilice las instrucciones de DDL del regulador de recursos. Sin embargo, ALTER RESOURCE GOVERNOR DISABLE, ALTER RESOURCE GOVERNOR RECONFIGURE y ALTER RESOURCE GOVERNOR RESET STATISTICS no pueden formar parte de una transaccin de usuario.

La instruccin ALTERRECONFIGURE carga los metadatos en la memoria y puede producir un error. No puede revertir la instruccin. Si la instruccin produce un error, los cambios en los metadatos no se copiarn en la memoria. Si la instruccin se ejecuta correctamente, los cambios sern efectivos. ALTERRECONFIGURE no es transaccional y no se pueden revertir los cambios.

Comandos del grupo de recursos de servidor Utilice los comandos descritos en la tabla siguiente para configurar los grupos de recursos de servidor. Instruccin DDL Descripcin

CREATE RESOURCE POOL

Crea un grupo de recursos de servidor.

ALTER RESOURCE POOL

Cambia la configuracin de un grupo de recursos de servidor. Esta instruccin escribe los cambios en los metadatos de la configuracin almacenada. Despus de ejecutar esta instruccin, debe ejecutar la instruccin ALTER RESOURCE GOVERNOR para escribir la informacin de los metadatos en la configuracin almacenada en memoria.

DROP RESOURCE POOL

Quita un grupo de recursos de servidor.

El regulador de recursos proporciona cuatro parmetros para configurar un grupo de recursos de servidor. Estos valores son:

Un porcentaje mnimo y mximo para el uso de la CPU.

Un porcentaje mnimo y mximo para el uso de la memoria.

Dependiendo del cambio que realice en la configuracin de un grupo de recursos de servidor, es posible que transcurra un perodo de transicin y se produzcan comportamientos conocidos por controlar el activo o por haber esperado solicitudes durante esta transicin.

Comandos del grupo de cargas de trabajo Utilice los comandos descritos en la tabla siguiente para configurar los grupos de cargas de trabajo. Comando DDL Descripcin

CREATE WORKLOAD GROUP

Crea un grupo de cargas de trabajo y lo asocia a un grupo de recursos de servidor.

ALTER WORKLOAD GROUP

Cambia la configuracin de un grupo de cargas de trabajo. Esta instruccin escribe los cambios en los metadatos de la configuracin almacenada. Despus de ejecutar esta instruccin, debe ejecutar la instruccin ALTER RESOURCE GOVERNOR para escribir la informacin de los metadatos en la configuracin almacenada en memoria.

DROP

Quita un grupo de cargas de trabajo.

306

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

WORKLOAD GROUP El regulador de recursos proporciona los seis parmetros siguientes para configurar un grupo de cargas de trabajo:

La cantidad de memoria mxima para una solicitud. El porcentaje mximo de CPU a utilizar para una solicitud.

El tiempo de espera de recurso para una solicitud. La importancia relativa de una solicitud.

El nmero mximo de solicitudes para un grupo de cargas de trabajo. El grupo de recursos de servidor en el que se encontrar el grupo de cargas de trabajo.

Dependiendo del cambio que realice en la configuracin de un grupo de cargas de trabajo, existen comportamientos conocidos para controlar las solicitudes activas o en espera cuando se aplican los cambios.

Comando del regulador de recursos Utilice el comando descrito en la tabla siguiente para configurar el regulador de recursos. Comando DDL Descripcin

ALTER

RESOURCE Aplica los cambios de configuracin especificados con un comando ALTER, habilita o deshabilita RESOURCE GOVERNOR, registra una funcin de clasificador o restablece las estadsticas.

GOVERNOR

La instruccin ALTER RESOURCE GOVERNOR se utiliza para realizar las acciones siguientes:

Aplicar los cambios de configuracin especificados cuando se emiten las instrucciones ALTER WORKLOAD GROUP o ALTER RESOURCE POOL. Habilitar o deshabilitar el regulador de recursos. Esto tambin se utiliza para aplicar los cambios de configuracin.

Registra una funcin para la clasificacin de la solicitud. Restablecer las estadsticas en todos los grupos de cargas de trabajo y grupos de recursos de servidor.

Segn el cambio que realice en la configuracin del regulador de recursos, existen comportamientos conocidos para controlar las solicitudes activas o en espera cuando se aplican los cambios.

Vistas del regulador de recursos Las vistas de catlogo y de administracin dinmica siguientes son especficas del regulador de recursos.

Vistas de catlogo Las vistas de catlogo del regulador de recursos se describen en la tabla siguiente. Nombre Descripcin

sys.resource_governor_configuration

Devuelve el estado del regulador de recursos almacenado.

sys.resource_governor_resource_pools

Devuelve la configuracin del grupo de recursos de servidor almacenada. Cada fila de la vista determina la configuracin de un grupo.

sys.resource_governor_workload_group s

Devuelve la configuracin del grupo de cargas de trabajo almacenada.

Vistas de administracin dinmica Las vistas de la administracin dinmica del regulador de recursos se describen en la tabla siguiente.

307

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Nombre Descripcin

sys.dm_resource_governor_workload_group s

Devuelve las estadsticas del grupo de cargas de trabajo y la configuracin actual en memoria de ste.

sys.dm_resource_governor_resource_pools

Devuelve informacin acerca del estado actual del grupo de recursos de servidor, la configuracin actual de los grupos de recursos de servidor y estadsticas del grupo de recursos de servidor.

sys.dm_resource_governor_configuration

Devuelve una fila que contiene el estado actual de la configuracin en memoria para el regulador de recursos.

Vistas de SQL Server Se han actualizado varias vistas de sistema de SQL Server y proporcionan informacin acerca del regulador de recursos.

Vistas de administracin dinmica Las vistas de administracin dinmica de SQL Server se describen en la tabla siguiente. Nombre Descripcin

sys.dm_exec_query_memory_grants

Devuelve informacin acerca de las consultas que han adquirido una concesin de memoria o que an requieren una concesin de memoria para ejecutarse. Las consultas que no estn a la espera de una concesin de memoria no aparecern en esta vista. Se han agregado las siguientes columnas al regulador de recursos:

group_id

pool_id

is_small

ideal_memory_kb

sys.dm_exec_query_resource_semaphores Devuelven informacin acerca del estado actual del semforo de recursos de consulta. sys.dm_exec_query_resource_semaphores proporciona el estado general de ejecucin de las consultas y permite determinar si el sistema tiene acceso a suficiente memoria. Se ha agregado la siguiente columna al regulador de recursos:

sys.dm_exec_sessions

pool_id

Devuelve una fila por cada sesin autenticada en SQL Server. Se ha agregado la siguiente columna al regulador de recursos:

sys.dm_exec_requests

group_id

Devuelve informacin acerca de cada solicitud que se ejecute en SQL Server. Se ha agregado la siguiente columna al regulador de recursos:

sys.dm_exec_cached_plans

group_id

Devuelve una fila para cada plan de consulta que SQL Server almacena en cach para agilizar la ejecucin. Se ha agregado la siguiente columna al regulador de recursos:

308

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

sys.dm_os_memory_brokers

pool_id

Las asignaciones internas de SQL Server utilizan el administrador de memoria de SQL Server. Se han agregado las siguientes columnas al regulador de recursos:


sys.dm_os_wait_stats

pool_id

allocations_kb_per_sec

predicated_allocations_kb

overall_limit_kb

Devuelve informacin acerca de las esperas encontradas por los subprocesos en ejecucin. Puede utilizar esta vista para diagnosticar problemas de rendimiento con SQL Server y tambin con lotes y consultas especficas.

Referencia de las clases de eventos de SQL Server Se han actualizado varias clases de eventos de SQL Server y se han agregado nuevas clases de eventos que son compatibles con el regulador de recursos. Nombre Descripcin

Clase de evento Umbral de la Esta clase de eventos indica que el regulador de recursos ha detectado una consulta que supera el CPU superado umbral de la CPU especificado para REQUEST_MAX_CPU_TIME_SEC.

Clase

de

evento Esta clase de eventos indica que se ha comenzado a ejecutar un desencadenador de LOGON o una funcin de clasificador del regulador de recursos.

PreConnect:Starting

Clase

de

evento Esta clase de eventos indica que se ha finalizado la ejecucin de un desencadenador de LOGON o una funcin de clasificador del regulador de recursos.

PreConnect:Completed

23 Disear Polticas. Considerar: Disear polticas y condiciones

El manejo basdo en polticas PBM se trata de una nueva caracterstica que facilita la administracin de SQL Server 2008 a travs de la definicin de una serie de polticas claras y concisas, reduciendo la carga de trabajo de los administradores y los errores potenciales de administracin. PBM se trata de un framework basado en polticas que permite implementarlas en base a un motor de polticas, el agente SQL, el CLR de SQL, triggers DDL (Data Definition Language) y el Service Broker. Estas polticas se pueden aplicar y evaluar en un slo servidor o bien en un grupo de servidores, de manera que se mejora la escalabilidad de la administracin y monitorizacin de SQL Server 2008. Trminos empleados En el manejo de PBM se utiliza target (meta), facet (faceta), condition (condicin), policy (poltica), y category (categora). Antes de crear una poltica, debe definirse claramente sobre cuales objetos del servidor SQL aplicarn. Los objetos son los targets de la poltica. Un target puede ser una instancia de SQL Server, una base de datos, una tabla, o un inicio de seccin, etc. Tambin se pueden aplicar filtros a los the targets en una instancia de SQL Server para obtener un conjunto de targets. Los targets poseen propiedades lgicas. Por ejemplo, un inicio de seccin tiene un nombre, un tipo (SQL Server o Windows), una base de datos por defecto y una poltica de forzado de password. Un conjunto de propiedades lgicas modelando el comportamiento o caractersticas de un targe se conoce como un facet. Un target puede tener una o ms facetas. Por ejemplo, un target de servidor puede tener una faceta de configuracin que incluye las opciones configuradas por sp_configure, y una faceta de auditora incluyendo la parametiracin de la auditora de los inicios de seccin. Se pued definir una expression booleana para especificar los estados vlidos de las popiedades en una faceta. Esta expresin booleana es llamada condition. Una vez definido un target y una condition, se puede definer un policy para chequar la condicin en contra de los targets. La poltica puede ser asignada a una category. Las categories permiten organizar las polticas.

Administar Categoras de Polticas y Subscripciones de Bases de Datos Expadir Administracin en el Explorador de objetos, click en Administracin de Polticas y luego click en Administrar Categoras.

309

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Una catagora de polticas puede ser aplicada a todas las Bases de Datos o sobre Bases de Datos particulares colocando en on o off the la opcin Mandate Database Subscriptions en la caja de dilogo Manage Policy Categories. Asuma en este ejemplo se est trabajando con la Base de Datos llamada Matrix. Se definen un cojunto de polticas las cuales incident sobre la seguridad y los objetos de Base de Datos de Matriz; estas polticas sern clasificadas en la categora Matrix Policies. Por lo tango, se aplicarn las polticas definidas en la categora Matrix Policies sobre la Base de Datos Matrix. En la caja de dilogo Manage Policy Categories, se desmarca la opcin Mandate Database Subscription.

Tambin se puede ejecutar el procedimiento almacenado msdb.dbo.sp_syspolicy_update_policy_category para desmarcar la subscripcin. EXEC msdb.dbo.sp_syspolicy_update_policy_category @name=N'Matrix Policies', @mandate_database_subscriptions=False

310

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Una Base de Datos se subscribe a una categora y solo las polticas suscritas en la categora controlan la Base de Datos. En el ejemplo, la Base de Datos Matriz se subsribe a la categora Matrix. En el explorador de Objetos, botn derecho sobre la Base de Datos Matrix, escoger Policies, y luego seleccionar Categories. En la caja de dilogo Categories, marcar la Categora a subscribir.

Modos de Ejecucin de las Policies Una poltica puede ser ejecutada manualmente o automticamente. Los cuatro posibles modos de ejecucin son indicados a continuacin.

On Demand. Este modo evala la poltica solo cuando el usuario lo requiere.

On Change - Prevent. Este modo automatizado emplea triggers para evitar las violaciones de las polticas. On Change - Log Only. Este modo automatizado emplea notificacin de eventos para evaluar una poltica cuando un cambio relevante ocurre y realize un log de la violacin de la poltica. On Schedule. Este modo automatizado, utiliza un Job del Agente para evaluar la poltica. Este modo lleva traza (log) de las violaciones de la poltica.

Desde el punto de vista de administracin de Bases de Datos (DBA), los modos ms tiles son On Change Prevent y On Change Log Only. Estos modos permiten al DBA tanto capturer como prevenir incumplimiento en tiempo real. En un ambiente empresarial, solo se evaluara una poltica manualmente muy rara vez. A continuacin, se muestar un ejemplo del modo de ejecucin On Change Prevent para evitar el incumplimiento de la poltica. Por defecto, el grupo BUILTIN\Administrators es un miembro del rol sysadmin server. Todos los miembros de este grupo tienen los privilegios de sysadmin sobre todas las instancias de SQL Server en el servidor. Sin embago, en los ambientes empresariales, los administradores de sistemas y los DBAs pertenecen por lo general a diferentes grupos y tienen responsabilidades separadas. Los administradores de sistemas no deberan tener acceso al servidor de SQL Server. Como primer paso de debe remover el inicio de seccin BUILTIN\Administrators del sevidor SQL Server. Luego, se crea una poltoca para prevenir agregar este usuario nuevamente. 1. Expandir Administracin en el Explorador de Objetos, expandir administrador de Polticas, botn derecho sobre Conditions, y seleccionar New Condition. En la caja de dilogo de New Condition, colocar un nombe No server access a la nueva poltica. Seleccionar la faceta Login. En el area Expression, en el campo colocar @HasAccess, en el Operator colocar =, y en el valor seleccionar False. Esto crea una condicin para chequear si el inicio de seccin puede entrar en el servidor SQL Server.

311

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

2. Esta nueva poltica solo debe ser aplicada el inicio de seccin 'BUILTIN\Administrators, por lo tanto se debe crear otra condicin para filtrar los inicios de seccin. En la caja de dilogo New Condition, en el nombre, escribir BUILTIN\Administrators Login. Seleccionar la faceta Login. En el area de Expression en el campo coloacar @Name, en el Operator colocar =, y en el valor colocar BUILTIN\Administrators.

3. Seleccionar Policies, escoger New Policy. En la caja de dilogo de New Policy, en el nombre colocar Local Admin Has No Server Access. Marcar la caja Enabled para habilitar la ejecucin de modos automticos. En la caje de Check condition, seleccionar la condicin No server access debajo de Login. En la caja Against targets, seleccionar la condicin BUILTIN\Administrators Login como filtro para los inicios de seccin. En la caja de modo de Ejecucin, seleccionar On Change Prevent como modo de ejecucin. Esta poltica detendr cualquier intencin de acceder por parte del grupo de administradores locales.

312

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Para ver el funcionamiento de la poltica, trate de agregar el grupo BUILTIN\Administrators a los usuarios de SQL Server. Ejecutar este comando en SQL Server CREATE LOGIN [BUILTIN\Administrators] FROM WINDOWS Un mensaje de error sera presentado: Policy 'Local Admin Has No Server Access' has been violated by '/Server/(local)/Login/BUILTIN\Administrators'. This transaction will be rolled back. Policy description: '' Additional help: '' : ''. Msg 3609, Level 16, State 1, Procedure sp_syspolicy_dispatch_event, Line 50 The transaction ended in the trigger. The batch has been aborted. Del mensaje se desprende lo siguiente, la transaccin se ha desecho y el inicio de seccin no fue agregado debido a violacin de la poltica Local Admin Has No Server Access. El modo de ejecucin de cada poltica es determinado por las caractersticas del la faceta utilizada en la condicin de la poltica. En la prctica, se observar que muchas de las facetes no permiten el modo On Change Prevent.

Creando una poltica en SQL Server 2008 A manera de ejemplo se muestra cmo crear polticas de nombrado especificando las pautas a seguir a la hora de crear objetos en la BD y asignarles un nombre apropiado. Por ejemplo, una posible poltica es que slo se podrn crear tablas que empiecen con el prefijo tbl. Para crear una poltica con estas caractersticas:

En SQL Server Management Studio vaya a la seccin Management -> Policy Management -> Facets. Vaya a la seccin Table, haga clic con el botn derecho del ratn y seleccione la opcin New Condition. En la ventana que se abre especifique los siguientes parmetros:

o o o

Name: El nombre de tabla empieza por tbl.

Facect: Est seleccionada la opcin Table.

Expression: especifique:

@Name LIKE

313

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
tbl%

En el explorador de objetos, vaya a la seccin Policies, haba clic con el botn derecho del ratn y seleccione la opcin New Policy. Especifique los siguientes parmetros:

o o o o

Name: Convenciones en el nombrado de tablas (la condicin creada).

Marque el check box Enabled (Habilitando de esta manera la poltica de manera inmediata).

Against Targets, verifique que est seleccionada la opcin El nombre de la tabla empieza por tbl.

Execution Mode, seleccione On Change_Prevent.

Al seguir estos pasos se creo la poltica con PBM. Validando la poltica Para validar que la poltica funciona, cree una tabla mediante el siguiente script T-SQL: CREATE TABLE failedpolicy (policyid int) Como el nombre de la tabla no cumple con la poltica creada, se produce un error:

314

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009

Por el contrario, el siguiente query de creacin de tabla debera funcionar sin problemas: CREATE TABLE tbl_passedpolicy (policyid int)

24 Disear una estrategia de compresin de datos. Considerar: nivel de fila o de pgina, frecuencia de actualizaciones, tasa de compresin, comprimir particiones, ndices especficos Compresin de datos SQL Server 2008 admite la compresin de filas y pginas tanto para tablas como para ndices. La compresin de datos se puede configurar para los objetos de base de datos siguientes:

Una tabla entera que est almacenada como un montn. Una tabla entera que est almacenada como un ndice clster.

Un ndice no clster entero. Una vista indizada entera.

Para tablas e ndices con particiones, la opcin de compresin se puede configurar para cada particin y las diferentes particiones de un objeto no tienen por qu tener la misma configuracin de compresin.

La configuracin de compresin de una tabla no se aplica automticamente a sus ndices no clster. Cada ndice se debe establecer individualmente. La compresin no est disponible para las tablas del sistema. Las tablas y los ndices se pueden comprimir cuando se crean utilizando las instrucciones CREATE TABLE y CREATE INDEX. Para cambiar el estado de compresin de una tabla, ndice o particin, utilice las instrucciones ALTER TABLE o ALTER INDEX. Nota: Si se fragmentan los datos existentes, es posible que pueda reducir el tamao del ndice volvindolo a generar en lugar de utilizar la compresin. El factor de relleno de un ndice se aplicar durante el proceso de volver a generarlo; esto puede dar lugar a un aumento de su tamao. Consideraciones sobre el uso de la compresin de filas y pginas Cuando utilice la compresin de filas y pginas, tenga en cuenta las consideraciones siguientes:

La compresin slo est disponible en las ediciones Enterprise y Developer de SQL Server 2008.

La compresin puede permitir que se almacenen ms filas en una pgina, pero no cambia el tamao mximo de filas de una tabla o ndice.

315

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Una tabla no se puede habilitar para su compresin cuando el tamao mximo de filas ms la sobrecarga de compresin supera el tamao mximo de filas de 8060 bytes. Por ejemplo, una tabla que tiene las columnas c1 char(8000) y c2 char(53) no se puede comprimir debido a la sobrecarga de compresin adicional. Cuando se utiliza el formato de almacenamiento vardecimal, la comprobacin del tamao de filas se realiza cuando se habilita el formato. Para la compresin de filas y pginas, la comprobacin del tamao de filas se realiza cuando el objeto se comprime inicialmente, y despus se comprueba cuando se inserta o modifica cada fila. La compresin exige las dos reglas siguientes:

o o

Una actualizacin a un tipo de longitud fija siempre debe tener xito.

La deshabilitacin de la compresin de datos siempre debe tener xito. Aunque la fila comprimida quepa en la pgina, lo que significa que tiene menos de 8060 bytes, SQL Server evita actualizaciones que no cabran en la fila al descomprimirla.

Cuando se especifica una lista de particiones, el tipo de compresin se puede establecer en ROW, PAGE o NONE en particiones individuales. Si no se especifica la lista de particiones, todas las particiones se establecen con la propiedad de compresin de datos que se especifica en la instruccin. Cuando se crea una tabla o ndice, la compresin de datos se establece en NONE, a menos que se especifique lo contrario. Cuando se modifica una tabla, se conserva la compresin existente, a menos que se especifique lo contrario. Si se especifica una lista de particiones o una particin que estn fuera del intervalo, se generar un error. Los ndices no clster no heredan la propiedad de compresin de la tabla. Para comprimir ndices, se debe establecer explcitamente la propiedad de compresin de los ndices. De forma predeterminada, el valor de compresin de ndices se establecer en NONE cuando se crea el ndice. Cuando se crea un ndice clster en un montn, el ndice clster hereda el estado de compresin del montn, a menos que se especifique otro estado de compresin. Cuando un montn se configura para la compresin en el nivel de pgina, las pginas slo reciben la compresin en el nivel de pgina de las formas siguientes:

o o o

Los datos se insertan utilizando la sintaxis de BULK INSERT.

Los datos se insertan utilizando la sintaxis INSERT INTO ... WITH (TABLOCK).

Una tabla se vuelve a generar ejecutando la instruccin ALTER TABLE... REBUILD con la opcin de compresin PAGE.

Las nuevas pginas asignadas en un montn como parte de las operaciones DML no usarn la compresin PAGE hasta que se vuelva a generar el montn. Para volver a generar el montn, quite y vuelva a aplicar la compresin, o cree y quite un ndice clster. El cambio del valor de compresin de un montn requiere que todos los ndices no clster de la tabla se vuelvan a generar de modo que tengan punteros a las nuevas ubicaciones de fila en el montn. Puede habilitar o deshabilitar la compresin ROW o PAGE conectado o sin conexin. La habilitacin de la compresin en un montn es de un solo subproceso para una operacin en lnea. Los requisitos de espacio en disco para habilitar o deshabilitar la compresin de filas o pginas son los mismos que los necesarios para crear o volver a generar un ndice. Para los datos con particiones, puede reducir el espacio que se requiere habilitando o deshabilitando la compresin para una particin cada vez. Para determinar el estado de compresin de particiones en una tabla con particiones, consulte la columna data_compression de la vista de catlogo sys.partitions. Cuando se comprimen ndices, las pginas en el nivel hoja se pueden comprimir tanto con la compresin de filas como con la compresin de pginas. Las pginas que no estn en el nivel hoja no reciben la compresin de pginas. Debido a su tamao, los tipos de datos de valores grandes suelen almacenarse independientemente de los datos de fila normales en pginas con un fin especfico. La compresin de datos no est disponible para los datos que se almacenan independientemente. Las tablas que implementaron el formato de almacenamiento vardecimal en SQL Server 2005 conservarn ese valor cuando se actualicen. Puede aplicar la compresin de filas a una tabla que tenga el formato de almacenamiento vardecimal. Sin embargo, como la compresin de filas es un superconjunto del formato de almacenamiento vardecimal, no hay ninguna razn para conservar el formato de almacenamiento vardecimal. Los valores decimales no obtienen una compresin adicional cuando se combina el formato de almacenamiento vardecimal con la compresin de filas. Puede aplicar la compresin de pginas a una tabla que tenga el formato de almacenamiento vardecimal; sin embargo, es probable que las columnas con formato de almacenamiento vardecimal no consigan una compresin adicional. Nota:

316

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
SQL Server 2008 admite el formato de almacenamiento vardecimal; sin embargo, como la compresin en el nivel de fila consigue los mismos objetivos, el formato de almacenamiento vardecimal ha quedado obsoleto. Esta caracterstica se quitar en una versin futura de Microsoft SQL Server. Evite utilizar esta caracterstica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.

Evaluar los ahorros de la compresin Para determinar cmo afecta el cambio del estado de compresin a una tabla o a un ndice, utilice el procedimiento almacenado sp_estimate_data_compression_savings. El procedimiento almacenado sp_estimate_data_compression_savings slo est disponible en las ediciones de SQL Server que admiten la compresin de datos.

Cmo afecta la compresin a tablas e ndices con particiones Cuando utilice la compresin de datos con tablas e ndices con particiones, tenga en cuenta las consideraciones siguientes:

Dividir un intervalo Cuando se divide una particin utilizando la instruccin ALTER PARTITION, ambas particiones heredan el atributo de compresin de datos de la particin original. Combinar un intervalo Cuando se combinan dos particiones, la particin resultante hereda el atributo de compresin de datos de la particin de destino. Cambiar particiones Para cambiar una particin, la propiedad de compresin de datos de la particin debe coincidir con la propiedad de compresin de la tabla. Volver a generar una particin o todas las particiones Hay dos variaciones de sintaxis que se pueden utilizar para modificar la compresin de una tabla o ndice con particiones:

o o o o o o

La

sintaxis

siguiente

vuelve

generar

slo

la

particin

la

que

se

hace

referencia:

ALTER TABLE <table_name> REBUILD PARTITION = 1 WITH (DATA_COMPRESSION = <option>) La sintaxis siguiente vuelve a generar la tabla completa utilizando el valor de compresin existente para las particiones a las que no se haga referencia:

ALTER TABLE <table_name> REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE ON PARTITIONS(<range>), ... )

Los ndices con particiones siguen el mismo principio mediante el uso de ALTER INDEX. Quitar un ndice clster con particiones Cuando se quita un ndice clster, las particiones del montn correspondientes retienen su valor de compresin de datos, a menos que se modifique el esquema de particin. Si se cambia el esquema de particin, todas las particiones se vuelven a generar en un estado sin comprimir. Para quitar un ndice clster y cambiar el esquema de particin es necesario realizar los pasos siguientes: 1. Quitar el ndice clster. 2. Modificar la tabla utilizando la opcin ALTER TABLE ... REBUILD ... que especifica la opcin de compresin. La operacin de quitar un ndice clster OFFLINE es muy rpida porque slo se quitan los niveles superiores de ndices clsteres. Cuando se quita un ndice clster ONLINE, SQL Server debe volver a generar el montn dos veces, una vez para el paso 1 y otra para el paso 2.

Cmo afecta la compresin a los dems componentes de SQL Server La compresin se produce en el motor de almacenamiento y los datos se presentan a la mayora de los dems componentes de SQL Server en un estado sin comprimir. Esto limita los efectos de la compresin en los dems componentes para lo siguiente:

Operaciones de exportacin e importacin masivas Cuando se exportan datos, incluso en formato nativo, los datos se envan en formato de fila sin comprimir. Esto puede hacer que el tamao del archivo de datos exportados sea significativamente mayor que el de los datos de origen. Cuando se importan datos, si la tabla de destino se ha habilitado para la compresin, el motor de almacenamiento convierte los datos a formato de fila comprimida. Esto puede implicar un mayor uso de la CPU si se compara con la importacin de datos en una tabla sin comprimir. Cuando los datos se importan de forma masiva a un montn con compresin de pgina, la operacin de importacin masiva intentar comprimir los datos con compresin de pgina cuando se inserten los datos.

317

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
La compresin no afecta a las acciones de copias de seguridad y restauracin. La compresin no afecta al trasvase de registros.

Al habilitar la compresin, se puede hacer que los planes de consulta cambien porque los datos se almacenan utilizando un nmero diferente de pginas y de filas por cada pgina. La compresin de datos se admite en SQL Server Management Studio mediante el Asistente para compresin de datos.

Para iniciar el Asistente para compresin de datos

En el Explorador de objetos, haga clic con el botn secundario en una tabla, un ndice o una vista indizada, seleccione Almacenamiento y, a continuacin, haga clic en Comprimir.

Supervisar la compresin Para supervisar la compresin de la instancia completa de SQL Server, utilice los contadores de intentos de compresin de pgina por segundo y de pginas comprimidas por segundo del objeto Access Methods de SQL Server. Para obtener las estadsticas de compresin de pgina de las particiones individuales, consulte la funcin de administracin dinmica sys.dm_db_index_operational_stats.

Ejemplos Algunos de los ejemplos siguientes usan tablas con particiones y requieren una base de datos que tenga grupos de archivos. Para crear una base de datos que tenga grupos de archivos, ejecute la instruccin siguiente: CREATE DATABASE TestDatabase ON PRIMARY ( NAME = TestDatabase, FILENAME = 'C:\Program Files\Microsoft FILEGROUP test1fg ( NAME = TestDBFile1, FILENAME = 'C:\Program Files\Microsoft FILEGROUP test2fg ( NAME = TestDBFile2, FILENAME = 'C:\Program Files\Microsoft FILEGROUP test3fg ( NAME = TestDBFile3, FILENAME = 'C:\Program Files\Microsoft FILEGROUP test4fg ( NAME = TestDBFile4, FILENAME = 'C:\Program Files\Microsoft GO Para cambiar a la nueva base de datos: USE TestDatabase GO A. Crear una tabla que utiliza la compresin de fila En el ejemplo siguiente se crea una tabla y se establece la compresin en ROW. CREATE TABLE T1 (c1 int, c2 nvarchar(50) ) WITH (DATA_COMPRESSION = ROW); GO B. Crear una tabla que utiliza la compresin de pgina En el ejemplo siguiente se crea una tabla y se establece la compresin en PAGE. CREATE TABLE T2 (c1 int, c2 nvarchar(50) ) WITH (DATA_COMPRESSION = PAGE); GO C. Establecer la opcin DATA_COMPRESSION en una tabla con particiones En el ejemplo siguiente se usa la tabla TestDatabase que se crea utilizando el cdigo proporcionado anteriormente en esta seccin. En el ejemplo se crean un esquema de particin y una funcin de particin y, a continuacin, se crea una tabla con particiones y se especifican las opciones de compresin para las particiones de la tabla. En este ejemplo, la particin 1 se configura para compresin ROW, y las particiones restantes se configuran para compresin PAGE. Para crear una funcin de particin: CREATE PARTITION FUNCTION myRangePF1 (int) AS RANGE LEFT FOR VALUES (1, 100, 1000) ; GO Para crear un esquema de particin: CREATE PARTITION SCHEME myRangePS1 AS PARTITION myRangePF1 TO (test1fg, test2fg, test3fg, test4fg) ; GO

SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\TestDB.mdf'), SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\TestDBFile1.mdf'), SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\TestDBFile2.ndf'), SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\TestDBFile3.ndf'), SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\TestDBFile4.ndf') ;

318

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
Para crear una tabla con particiones que estn comprimidas: CREATE TABLE PartitionTable1 (col1 int, col2 varchar(max)) ON myRangePS1 (col1) WITH ( DATA_COMPRESSION = ROW ON PARTITIONS (1), DATA_COMPRESSION = PAGE ON PARTITIONS (2 TO 4) ); GO D. Establecer la opcin DATA_COMPRESSION en una tabla con particiones En el ejemplo siguiente se usa la base de datos del ejemplo C y se crea una tabla utilizando la sintaxis para particiones no contiguas. CREATE TABLE PartitionTable2 (col1 int, col2 varchar(max)) ON myRangePS1 (col1) WITH ( DATA_COMPRESSION = ROW ON PARTITIONS (1,3), DATA_COMPRESSION = NONE ON PARTITIONS (2,4) ); GO E. Modificar una tabla para cambiar la compresin En el ejemplo siguiente se cambia la compresin de la tabla sin particiones creada en el ejemplo A. ALTER TABLE T1 REBUILD WITH (DATA_COMPRESSION = PAGE); GO F. Modificar la compresin de una particin en una tabla con particiones En el ejemplo siguiente se cambia la compresin de la tabla con particiones creada en el ejemplo C. La sintaxis REBUILD PARTITION = 1 hace que slo se vuelva a generar la particin nmero 1. ALTER TABLE PartitionTable1 REBUILD PARTITION = 1 WITH (DATA_COMPRESSION = NONE) ; GO La misma operacin que utiliza la sintaxis alternativa siguiente hace que se vuelvan a generar todas las particiones de la tabla. ALTER TABLE PartitionTable1 REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE ON PARTITIONS(1) ) ; GO G. Modificar la compresin de varias particiones en una tabla con particiones La sintaxis REBUILD PARTITION = ... puede volver a generar slo una particin. Para volver a generar ms de una particin se deben ejecutar varias instrucciones, o ejecutar el ejemplo siguiente para volver a generar todas las particiones, utilizando los valores de compresin actuales para las particiones no especificadas. ALTER TABLE PartitionTable1 REBUILD PARTITION = ALL WITH ( DATA_COMPRESSION = PAGE ON PARTITIONS(1), DATA_COMPRESSION = ROW ON PARTITIONS(2 TO 4) ); GO H. Modificar la compresin en un ndice En el ejemplo siguiente se utiliza la tabla creada en el ejemplo A y se crea un ndice en la columna C2. CREATE NONCLUSTERED INDEX IX_INDEX_1 ON T1 (C2) WITH ( DATA_COMPRESSION = ROW ) ; GO Ejecute el cdigo siguiente para cambiar el ndice en la compresin de pgina: ALTER INDEX IX_INDEX_1 ON T1 REBUILD WITH ( DATA_COMPRESSION = PAGE ) ; GO I. Modificar la compresin de una sola particin en un ndice con particiones En el ejemplo siguiente se crea un ndice en una tabla con particiones que utiliza la compresin de fila en todas las particiones del ndice. CREATE CLUSTERED INDEX IX_PartTab2Col1 ON PartitionTable1 (Col1) WITH ( DATA_COMPRESSION = ROW ) ; GO Para crear el ndice de modo que use valores de compresin diferentes para particiones diferentes, utilice la sintaxis ON PARTITIONS. En el ejemplo siguiente se crea un ndice en una tabla con particiones que utiliza la compresin de fila en la particin 1 del ndice y la compresin de pgina en las particiones 2 a 4 del ndice.

319

CURSO SQL 70-450 Administracin de Bases de Datos SQL Server 2008 Elaborado por : Manuel Vzquez Outomuro, 2009
CREATE CLUSTERED INDEX IX_PartTab2Col1 ON PartitionTable1 (Col1) WITH (DATA_COMPRESSION = ROW ON PARTITIONS(1), DATA_COMPRESSION = PAGE ON PARTITIONS (2 TO 4 ) ) ; GO En el ejemplo siguiente se cambia la compresin del ndice con particiones. ALTER INDEX IX_PartTab2Col1 ON PartitionTable1 REBUILD PARTITION = ALL WITH ( DATA_COMPRESSION = PAGE ON PARTITIONS(1) ) ; GO J. Modificar la compresin de varias particiones en un ndice con particiones La sintaxis REBUILD PARTITION = ... puede volver a generar slo una particin. Para volver a generar ms de una particin se deben ejecutar varias instrucciones, o ejecutar el ejemplo siguiente para volver a generar todas las particiones, utilizando los valores de compresin actuales para las particiones no especificadas. ALTER INDEX IX_PartTab2Col1 ON PartitionTable1 REBUILD PARTITION = ALL WITH ( DATA_COMPRESSION = PAGE ON PARTITIONS(1), DATA_COMPRESSION = ROW ON PARTITIONS(2 TO 4) ); GO

320

You might also like