Вы находитесь на странице: 1из 208

DERECHOSRESERVADOS2008porJosM.

CortsEslava
ISBN:9781409230991
Microsoft, Windows, Internet Explorer, Visual Studio and SQL Server are trademarks of the Microsoft
group of companies.

Guaprcticade
Administracinde
SQLServer 2005

ChemaCorts

A Olga.

ndice.

ndice.

Introduccin. _________________________________________________________ 1
Unidad1.InstalacinyconfiguracindedeSQLServer2005. _________________ 3
Objetivosdeestaunidad.____________________________________________ 3
Leccin1.Prepararlainstalacin._______________________________________ 3
Despusdeestaleccinsercapazde....________________________________ 3
EdicionesdeSQLServer2005. _______________________________________ 3
Requisitosdehardware._____________________________________________ 4
Requisitosdesoftware.______________________________________________ 5
InstanciasdeSQLServer2005._______________________________________ 5
Serviciosycuentasdeservicio.________________________________________ 6
Modosdeautenticacin. ____________________________________________ 7
Intercalaciones.____________________________________________________ 7
Leccin2.InstalarSQLServer2005. ____________________________________ 8
Despusdeestaleccinsercapazde....________________________________ 8
Elprocesodeinstalacin.____________________________________________ 8
Prctica.InstalacindeSQLServer2005._______________________________ 9
Unidad2.LasherramientasdeadministracindeSQLServer2005. ___________ 17
Objetivosdeestaunidad.___________________________________________ 17
Leccin1.SQLServerConfigurationManager.___________________________ 17
Despusdeestaleccinsercapazde...._______________________________ 17
Administracindeservicios._________________________________________ 17
Administracindeprotocolos. _______________________________________ 19
Administracindealias. ____________________________________________ 21
Leccin2.SurfaceAreaConfigurationTool.______________________________ 22
Despusdeestaleccinsercapazde... _______________________________ 22
Habilitarconexionesremotas. _______________________________________ 22
Habilitarcorreoelectrnicodebasededatos(DatabaseMail). _____________ 24
Leccin3.SQLServerManagementStudio._____________________________ 25
Despusdeestaleccinsercapazde... _______________________________ 25

ndice.

IniciarSQLServerManagementStudio._______________________________ 25
Descripcindelentorno.____________________________________________ 26
Prctica.CrearyorganizarscriptsconSQLServerManagementStudio. _____ 30
Unidad3.Creacinyadministracindebasesdedatos._____________________ 35
Objetivosdeestaunidad.___________________________________________ 35
Leccin1.Crearbasesdedatos._______________________________________ 35
Despusdeestaleccinsercapazde...._______________________________ 35
Losarchivosdedatos.______________________________________________ 35
Filegroups._______________________________________________________ 37
Elregistro(log)detransacciones._____________________________________ 38
Reducirbasesdedatos. ____________________________________________ 39
Prctica.Crearunabasededatos.____________________________________ 39
Leccin2.Administrarbasesdedatos.__________________________________ 42
Despusdeestaleccinsercapazde...._______________________________ 42
Opcionesdebasededatos. _________________________________________ 42
Metadatosdelabasededatos. ______________________________________ 43
Prctica.Modificaropcionesdelabasededatos.________________________ 46
Unidad4.ElagentedeSQLServer.______________________________________ 49
Objetivosdeestaunidad.___________________________________________ 49
Leccin1.ImplementartrabajosenelAgentedeSQLServer. ______________ 49
Despusdeestaleccinsercapazde...._______________________________ 49
Trabajos. ________________________________________________________ 49
Prctica.Crearuntrabajo. __________________________________________ 51
Leccin2.Operadoresynotificaciones._________________________________ 64
Despusdeestaleccinsercapazde...._______________________________ 64
Operadores.______________________________________________________ 64
Notificaciones.____________________________________________________ 64
Prctica.Registrarunoperador.______________________________________ 65
Leccin3.Alertas. __________________________________________________ 66
Despusdeestaleccinsercapazde...._______________________________ 66
Definicinytipos._________________________________________________ 67
AlertasbasadaseneventosdeSQLServer. ____________________________ 67

ndice.

AlertasbasadasencondicionesderendimientodeSQLServer.____________ 69
AlertasbasadasenalertasdeeventodeWMI. __________________________ 71
Prctica.CrearunaalertadesucesoSQLServer.________________________ 71
Prctica.Crearunaalertadecondicinderendimiento.___________________ 74
Unidad5.Copiasdeseguridaddebasesdedatos. __________________________ 77
Objetivosdeestaunidad.___________________________________________ 77
Leccin1.Planificacindecopiasdeseguridad. __________________________ 77
Despusdeestaleccinsercapazde...._______________________________ 77
Disearunplandecopiasdeseguridad. _______________________________ 77
Leccin2.Modelosderecuperacindebasesdedatos.____________________ 78
Despusdeestaleccinsercapazde...._______________________________ 78
Modelosderecuperacin. __________________________________________ 78
Prctica.Cambiarelmodeloderecuperacin.___________________________ 80
Leccin3.Dispositivosytiposdecopiadeseguridad.______________________ 81
Despusdeestaleccinsercapazde...._______________________________ 81
Dispositivosdecopia.______________________________________________ 81
Tiposdecopiadeseguridad._________________________________________ 82
Prctica.CopiadeseguridaddeAdventureWorks. _______________________ 83
Unidad6.Restauracindebasesdedatos. ________________________________ 89
Objetivosdeestaunidad.___________________________________________ 89
Leccin1.Estrategiasderecuperacin. _________________________________ 89
Despusdeestaleccinsercapazde...._______________________________ 89
Estadosdelabasededatos._________________________________________ 89
Secuenciasderestauracin._________________________________________ 90
Leccin2.Databasesnapshot._________________________________________ 92
Despusdeestaleccinsercapazde...._______________________________ 92
Quesunsnapshotycmofunciona?________________________________ 92
Restaurardatosapartirdeunsnapshot._______________________________ 93
Prctica.Copiasdeseguridadyrestauracindeunabasededatos.__________ 94
Prctica.Crearunabasededatosparaunentornodedesarrollo. ___________ 96
Unidad7.LaseguridadenSQLServer2005. _____________________________ 101
Objetivosdeestaunidad.__________________________________________ 101

ndice.

Leccin1.IntroduccinalaseguridadenSQLServer2005. _______________ 101


Despusdeestaleccinsercapazde....______________________________ 101
Principales. _____________________________________________________ 101
Asegurables. ____________________________________________________ 101
Permisos._______________________________________________________ 102
Leccin2.Seguridadaniveldeservidor. _______________________________ 102
Despusdeestaleccinsercapazde....______________________________ 102
Modosdeautenticacin. __________________________________________ 102
Polticasdecontraseas.___________________________________________ 103
Iniciosdesesin(logins).___________________________________________ 104
Funcionesorolesfijosdeservidor.___________________________________ 104
Permisosaniveldeservidor. _______________________________________ 105
Prctica.Administracindeiniciosdesesin. __________________________ 105
Leccin3.Seguridadaniveldebasededatos.___________________________ 111
Despusdeestaleccinsercapazde....______________________________ 111
Gestindeusuarios.______________________________________________ 112
Usuariosespeciales. ______________________________________________ 112
Usuarioshurfanos. ______________________________________________ 113
Funcionesorolesdebasededatos.__________________________________ 114
Funcionesorolesdeaplicacin._____________________________________ 114
Permisosaniveldebasededatos.___________________________________ 115
Esquemas.______________________________________________________ 115
Prctica.Gestindeusuariosyesquemas._____________________________ 116
Leccin4.ClavesycertificadosenSQLServer2005._____________________ 122
Despusdeestaleccinsercapazde....______________________________ 122
Arquitecturadecriptografa. _______________________________________ 122
Cifrarinformacin. _______________________________________________ 124
Prctica.Utilizaruncertificadoparacifrardatos. _______________________ 125
Unidad8.MonitorizacindeSQLServer2005. ___________________________ 127
Objetivosdeestaunidad.__________________________________________ 127
Leccin1.Elmonitordeactividadylasvistasdinmicas.__________________ 127
Despusdeestaleccinsercapazde....______________________________ 127

ndice.

Procesosybloqueosenelmonitordeactividad.________________________ 127
Vistasdinmicasdeadministracin.__________________________________ 128
Prctica.Utilizarelmonitordeactividad.______________________________ 128
Leccin2.SQLServerProfiler._______________________________________ 133
Despusdeestaleccinsercapazde....______________________________ 133
Lastrazas. ______________________________________________________ 134
Prctica.MonitorizacinconSQLServerProfiler. ______________________ 135
Leccin3.Disparadores(triggers)DDL._________________________________ 139
Despusdeestaleccinsercapazde....______________________________ 139
AuditoramediantetriggersDDL.____________________________________ 139
CreartriggersDDL. _______________________________________________ 139
Prctica.AuditarmediantetriggersDDL.______________________________ 142
Unidad9.Altadisponibilidad.__________________________________________ 145
Objetivosdeestaunidad.__________________________________________ 145
Leccin1.AltadisponibilidadenSQLServer2005. ______________________ 145
Despusdeestaleccinsercapazde....______________________________ 145
Puntosdefallo.__________________________________________________ 145
CmoconseguiraltadisponibilidadenSQLServer2005. ________________ 145
Leccin2.Reflejodebasededatos(Databasemirroring). _________________ 146
Despusdeestaleccinsercapazde....______________________________ 146
Quesycmofunciona.___________________________________________ 146
Prctica.Configurarunasesindedatabasemirroring.___________________ 148
Leccin3.Trasvasederegistros.______________________________________ 159
Despusdeestaleccinsercapazde....______________________________ 159
Descripcindeltrasvasederegistros._________________________________ 159
Prctica.Configurareltrasvasederegistros.___________________________ 160
Unidad10.Replicacin._______________________________________________ 171
Objetivosdeestaunidad.__________________________________________ 171
Leccin1.Componentesenlareplicacin.______________________________ 171
Despusdeestaleccinsercapazde....______________________________ 171
Tiposdeservidores. ______________________________________________ 171
Artculosypublicaciones.__________________________________________ 172

ndice.

Suscripcionesdeinsercinydeextraccin.____________________________ 172
Leccin2.Tiposdereplicacin._______________________________________ 172
Replicacindeinstantneas(snapshots).______________________________ 173
Replicacintransaccional.__________________________________________ 173
Replicacindemezcla. ____________________________________________ 173
Losagentesdereplicacin._________________________________________ 173
Prctica.Configurarlareplicacindeinstantneas.______________________ 174

Introduccin.

Introduccin.
Este es un curso eminentemente prctico encaminado a mostrar los fundamentos
bsicos de administracin de SQL Server 2005 y a travs del uso de la herramienta
SQL Server Management Studio. Los temas siempre podr ampliarlos a travs de la
weboficialdeMicrosoftymediantelaayudadelproductoparaobtenerejemplosde
instrucciones, explicaciones ampliadas de la funcionalidad de algunos componentes,
etc.
Las prcticas de este curso se desarrollaron utilizando el software Virtual PC 2007 el
cualpuededescargarenlasiguientedireccin:
http://www.microsoft.com/downloads/details.aspx?displaylang=es&FamilyID=04d264
02319948a3afa22dc0b40a73b6
Desde el rea de descarga en el sitio oficial del producto puede acceder a mquinas
virtuales (generalmente en ingls), que aunque tienen una fecha de caducidad
establecida,podrperfectamentedesarrollarlasprcticasdelcurso:
http://www.microsoft.com/spain/sql/downloads/default.mspx

Introduccin.

Unidad1.InstalacinyconfiguracindedeSQLServer2005.

Unidad1.InstalacinyconfiguracindedeSQLServer2005.
En esta unidad se describen cada una de las ediciones de SQL Server 2005 y sus
caractersticas bsicas as como los requisitos mnimos de cada una de ellas.
Finalmenteinstalarunainstanciapordefecto.Esteprocesodeinstalacintendrque
repetirlo en distintas unidades del curso para implementar funcionalidades que
requierendevariasinstanciasinstaladas.
Objetivosdeestaunidad.
ConocerlasherramientasdeadministracindeSQLServer2005.
Configurarservicios.
Activarydesactivarcaractersticas.
Crearsolucionesyproyectos.

Leccin1.Prepararlainstalacin.
En esta leccin aprender los conceptos bsicos necesarios para llevar a cabo la
instalacindeSQLServer2005enunservidor.
Despusdeestaleccinsercapazde....
Elegirquversininstalarparaundeterminadoentorno.
DescribirlosrequisitosdehardwareysoftwaredeSQLServer2005.
DescribircmoSQLServersoportamltiplesinstancias.
Describir las consideraciones de seguridad para las cuentas de servicio
utilizadasenSQLServer2005.
DescribirlasintercalacionesenSQLServer2005.
Describir las consideraciones para actualizar desde versiones previas de SQL
Server.
EdicionesdeSQLServer2005.
ExpressEdition.
Slo disponible en versin 32 bits. Pensada para facilitar el trabajo de los
desarrolladoresproporcionandounmotordebasededatosfiable,gratuitoydelibre
distribucin.
WorkgroupEdition.
Slo disponible en versin 32 bits. Es una versin para pequeas organizaciones que
requierendeunabasededatossinlmitesencuantoatamaoynmerodeusuarios.
StandardEdition.
TambinDisponibleenversiones32y64bits.Dirigidaaserutilizadaporaplicaciones
departamentales en entornos donde no se requiere un alto nivel de escalabilidad,
rendimientoydisponibilidad.

Unidad1.InstalacinyconfiguracindedeSQLServer2005.

EnterpriseEdition.
Disponibleenversiones32y64bits,estpensadaparaproporcionaraltosnivelesde
escalabilidad y rendimiento. Dirigida a grandes instalaciones con aplicaciones de
misincrtica.ContienelasmismascaractersticasquelaedicinStandardyadems,
entreotras,lassiguientes:

Indexacinonline
Operacionesdeindexacinenparalelo
Restauracinonlinedepginasyarchivos
Replicacinheterognea
Replicacinpeertopeer

DeveloperEdition.
Incluye todas las caractersticas de la versin Enterprise pero con un acuerdo de
licenciaqueimpideutilizarloenunentornodeproduccin.
CompactEdition.
Slodisponibleenversin32bits.Versinligeradelmotordebasededatosparaser
utilizadaendispositivosmviles.
Nota:Sideseaobtenerinformacindetalladaacercadelasversionesdisponiblesvisite
lasiguientepgina:http://www.microsoft.com/spain/sql/editions/default.mspx.
Requisitosdehardware.
Antes de instalar SQL Server 2005 debemos asegurarnos de que el servidor donde
vamosarealizarlainstalacincumpleconunosrequisitosmnimos.Noslohayque
tener en cuenta las necesidades de SQL Server 2005 de cara a la instalacin, sino
tambin las de nuestras aplicaciones (usuarios concurrentes, tiempos de respuesta,
ratiodeconsultas,etc).
En la siguiente tabla se muestran los requisitos mnimos en cuanto a procesador,
memoriaydisco.
Hardware
Procesador
Memoria

Disco

Requisitosmnimos
IntelPentium600Mhzomayor
1Ghzomsrecomendado.
512 Mb en versiones Enterprise,
Developer,WorkgroupyStandard.
192MbenversinExpress
Componentes de base de datos: entre
150y750Mb
AnalisysServices:35Mb
ReportingServices:40Mb.

Unidad1.InstalacinyconfiguracindedeSQLServer2005.

Requisitosdesoftware.
La versin de Windows requerida depende de la edicin de SQL Server 2005 que
queramosinstalar.Lasiguientetablamuestralasdistintasposibilidades:

Windows Server
2003
Windows XP SP2
(HomeEd.)
Windows XP SP2
(Professional,
Media Center y
Tablet)
Windows 2000
ProfessionalSP4
Windows 2000
ServerSP4

Express

Standard

Workgroup

Enterprise

Developer

Para obtener informacin ms detallada visite la siguiente


http://www.microsoft.com/spain/sql/productinfo/sysreqs/default.mspx

pgina:

SQLServer2005requiereademsdelsiguientesoftwareadicional:

MicrosoftInternetExplorer6.0ServicePack1osuperior
InternetInformacionServices5.06.0
Microsoft.NETFramework2.0.(SeinstalajuntoconSQLServer2005)
MicrosoftWindowsInstaller3.1(SeinstalajuntoconSQLServer2005)
MicrosoftDataAccesComponents(MDAC)2.8ServicePack1osuperior

InstanciasdeSQLServer2005.
Quesunainstancia?
Cuando hablamos de instalar SQL Server 2005 estamos hablando de instalar una
instancia del motor de datos. En un servidor podemos instalar varias instancias
teniendocadaunadeellasunaseriedecaractersticasycomponentespropioscomo
sonlosserviciosasociados,caractersticasdeseguridadeintercalacin,estructurade
carpetas en disco, etc. Existen otros componentes que son comunes a todas las
instancias instaladas en un servidor como son los Servicios de Anlisis (Analysis
Services)ylosServiciosdeInformes(ReportingServices).
Tiposdeinstancia.
Hayquedistinguirdostiposdeinstancia:
Instanciapordefecto.Eslaprimerainstanciaqueseinstalaenunservidoryse
identificaconelnombredereddelequipodondeestinstalada.ElservicioSQL
ServerasociadoalainstanciasellamaMSSQLSERVER.

Unidad1.InstalacinyconfiguracindedeSQLServer2005.

Instanciaconnombre.Eslasegundaosucesivasinstanciasqueseinstalanen
unservidor.Sunombreestformadoporelnombredereddelservidormsel
nombre de la instancia (por ejemplo: SERVIDOR1\Instancia2). El servicio SQL
Server asociado a una instancia con nombre se llama
MSSQLSERVER$nombreDeInstancia.
SQL Server 2005 se puede instalar en un servidor donde ya estn instaladas una o
variasinstanciasdeversionesanteriores(SQLServer7.02000).Estasituacinnos
obligarainstalarSQLServer2005comounainstanciaconnombre.
Serviciosycuentasdeservicio.
Servicios.
Al instalar SQL Server 2005 se generan una serie de servicios (en funcin de los
componentes que se seleccionen) que se ejecutan en un contexto de seguridad
concretoyqueestasociadoalacuentaconlaqueseejecutandichosservicios.Silos
serviciosnecesitanaccederarecursosderedesnecesarioutilizarcuentasdedominio.
En caso contrario pueden utilizarse cuentas locales, como por ejemplo la cuenta
predefinidaServicioLocal.
LasiguientetablamuestralosserviciosquesegenerandurantelainstalacindeSQL
Server2005.
Nombredelservicio
SQLServer
SQLServerAgent
AnalysisServices
ReportServer
SQLServerBrowser

Descripcin
Motordebasededatos
Servicio que ejecuta trabajos y permite la
automatizacindetareasadministrativas.
Proporcionafuncionalidadparaelanlisisde
lainformacinymineradedatos.
Las cuentas de servicio se utilizan para
conectarseaunabasededatosdeinformes.
Permite mostrar los nombres de las
instancias con nombre instaladas en un
servidor.

Cuentasdeservicio.
Como vimos en el apartado anterior, cada servicio se ejecuta en el contexto de una
cuentadeseguridaddenominadacuentadeservicio.Paracadaunodelosserviciosse
puedenemplearlassiguientescuentas:
Cuenta de dominio. Se emplea una cuenta de usuario del dominio para
conectarseaSQLServer2005.Eslaopcinrecomendada.
Cuenta Servicio Local (Local Service Account). Es una cuenta predefinida y
tienelosmismospermisosdeaccesoalosrecursosquelosmiembrosdelgrupo
Usuarios(Users).

Unidad1.InstalacinyconfiguracindedeSQLServer2005.

Cuenta SistemaLocal (Local System Account). Es otracuenta predefinida con


permisos de administrador en el equipo local. No se recomienda, ya que un
hackerpodrahacerusodeestascredencialesparadaarnuestrainstalacin.
ServiciodeRed(NetworkServiceAccount).Estambinunacuentapredefinida
y tiene los mismos permisos de acceso a los recursos que los miembros del
grupoUsuarios(Users).Permitelaconexinarecursosderedutilizandopara
ellolascredencialesdelacuentadelequipo.

Modosdeautenticacin.
Parapermitiralasaplicacionesaccederalainformacinalmacenadaenunabasede
datos, SQL Server debe validar las credenciales proporcionadas por dichas
aplicaciones.Estascredencialespuedenserdedostipos:
CredencialWindows.LacredencialqueseenvaaSQLServerhasidodefinida
previamente en el sistema operativo y en l recae la tarea de validarla.
Generalmenteeslacuentaasociadaalusuarioqueutilizalaaplicacin,esdecir,
lacuentaconlaqueelusuariohaaccedidoalsistema.
CredencialSQLServer.Esunacredencialdefinidapreviamenteenlainstancia
yelencargadodevalidarlaeselpropioSQLServer.
Pues bien, asociados a estos dos tipos de credenciales existen dos modos de
autenticacin:
Autenticacin Windows. Es el modo por defecto y nicamente se permiten
credencialesWindowsparaaccederalainstancia.
AutenticacinMixta.Sepermitenlosdostiposdecredencialescitados.
EsrecomendableelusodelmododeautenticacinWindowsyaqueeselquemayor
nivel de seguridad proporciona. Sin embargo no siempre es posible, por ejemplo en
casos en que las aplicaciones cliente se ejecutan en sistemas operativos distintos a
Windows, como Macintosh o Unix. Hay que tener en cuenta que habilitar el modo
mixto obliga a establecer una contrasea fuerte para la cuenta sa. Esta cuenta tiene
privilegiosadministrativosyesfundamentalprotegerladeusosnoautorizados.
Intercalaciones.
QusonlasintercalacionesenSQLServer?
Lasintercalaciones(collations)establecenunconjuntodereglasquedeterminancomo
sehandecompararyordenarlosdatosademsdeestablecerelgradodesensibilidad
anteacentosymaysculas,tiposdecaractereskana,etc.

Unidad1.InstalacinyconfiguracindedeSQLServer2005.

IntercalacionesWindows.
Las intercalaciones Windows estn definidas en el propio sistema operativo y
especificanqualfabetoylenguajeseutilizanparaordenaryqucdigodepginase
empleaparaalmacenarcaracteresnoUnicodeencadaconfiguracinregionalposible.
La intercalacin Windows por defecto utiliza el cdigo de pgina Latin1_General el
cualsoportaelalfabetolatino,ordenasegneldiccionarioyessensibleamaysculas.
Esta intercalacin es soportada por 33 configuraciones regionales (localizaciones)
Windows.
IntercalacionesSQL.
Las intercalaciones de SQL se incluyen por razones de compatibilidad con versiones
anteriores de SQL Server. Las intercalaciones de Windows son preferibles a menos
que haya problemas de compatibilidad hacia atrs o problemas especficos que
requierenunaintercalacindeSQL.

Leccin2.InstalarSQLServer2005.
Enestaleccinsedescribebrevementeelprocesodeinstalacincomointroduccina
laprcticadondesedetallancadaunodelospasos.
Despusdeestaleccinsercapazde....
Describirelprocesodeinstalacin.
LlevaracabounainstalacindeSQLServer2005.
Elprocesodeinstalacin.
Enunaprimerafasesecompruebasiexistenlossiguientescomponentes,ydenoser
asseinstalan:
.NETFramework2.0
WindowsInstaller3.1
ArchivosdesoporteparalainstalacindeSQLServer
Siporcualquiermotivolainstalacinnofinaliza,estoscomponentesnoseeliminany
porlotantonoesnecesariovolverainstalarloscuandoseinicieotravezelprocesode
instalacin.
DespusdelafasedeactualizacindecomponentescomienzaeltrabajodeWindows
InstallerparainstalarelpaqueteMSI.Antesdecomenzarelprocesodeinstalacinen
s mismo el componente System Configuration Cheker analiza el sistema para
determinarsicumpleconlosrequisitosmnimosrequeridosporSQLServer2005en,
almenos,lossiguientesaspectos:
Software. El SSC comprueba, por ejemplo, que el sistema operativo es
compatibleconlaversindeSQLServerquesepretendeinstalar.

Unidad1.InstalacinyconfiguracindedeSQLServer2005.

Hardware. El SCC comprueba si el sistema cumple con los requisitos mnimos


dememoriayCPU.
Seguridad. Comprueba que el usuario con el que se est ejecutando la
instalacin tiene los privilegios suficientes para realizarla y los permisos
necesariosenelsistemadearchivos.

Unavezanalizadoelsistemaelprogramadeinstalacinsolicitarinformacinrelativa
alossiguientesaspectosyunavezproporcionadacomenzarlainstalacin:

Informacinacercadelusuarioyorganizacin.
Seleccindecomponentesainstalar.
Seleccindeltipodeinstanciaainstalar.
Seleccindelascuentasdeservicio.
Seleccindelmododeautenticacin.
Seleccindelaintercalacin.

Prctica.InstalacindeSQLServer2005.
EnestaprcticainstalarlainstanciapordefectodeSQLServer2005.
1. ElprocesodeinstalacincomenzaralintroducirelCDdelproducto,momentoen
queapareceelsiguientemendeopciones.

Unidad1.InstalacinyconfiguracindedeSQLServer2005.

2. En el apartado Instalacin seleccione Componentes de servidor, herramientas,


Librosenpantallayejemplos.
3. AcepteelacuerdodelicenciayhagaclicenelbotnSiguiente.

4. La siguiente ventana le informa de los componentes de software que son


necesariosparalainstalacindeSQLServer2005.HagaclicenelbotnInstalary
una vez finalizada la instalacin de dichos componentes haga clic en el botn
Siguiente.

5. En la ventana de bienvenida del asistente de instalacin haga clic en el botn


Siguiente.

10

Unidad1.InstalacinyconfiguracindedeSQLServer2005.

6. Compruebequeelsistemacumpleconlosrequisitosmnimos.Estainformacinse
muestraenlasiguienteventanagraciasalSystemConfigurationChecker(SCC).

7. Enelejemploquesemuestraapareceunaadvertenciaindicandoqueesnecesario
instalarIIS.PuedeobtenermsinformacinhaciendoclicenelenlaceMessages.
HagaclicenelbotnNext.
8. Introduzca los nombres de usuario y organizacin en las cajas de texto que se
muestranyhagaclicenelbotnSiguiente.

11

Unidad1.InstalacinyconfiguracindedeSQLServer2005.

9. Seleccione los componentes que desea instalar. En este ejemplo han sido
seleccionadostodos.PulseacontinuacinelbotnAvanzadas.

10. ExpandaelelementoDocumentacin,ejemplosybasesdedatosdeejemplo.
11. EneldesplegableasociadoalelementoBasesdedatosdeejemploseleccioneLa
caractersticacompletaseinstalarenlaunidaddediscolocal.

12

Unidad1.InstalacinyconfiguracindedeSQLServer2005.

12. HagaclicenelbotnSiguiente.
13. SeleccioneacontinuacinlaopcinInstanciapredeterminada.Siyaexistieraotra
instancia en el mismo servidor debera seleccionar Instancia con nombre e
indicarlo en la caja de texto correspondiente. En este ejemplo se instalar la
instanciapredeterminada.PulseelbotnSiguiente.

14. Configurelainformacinacercadelascuentasdeservicio.Puedepersonalizarcada
unodelosserviciosainstalaroutilizarlamismacuentaparatodosellos.Indique
ademsquserviciosserniniciadosunavezfinalicelainstalacinypulseelbotn
Siguiente.

15. Seleccione el modo de autenticacin mixto e introduzca una contrasea para el


usuariosa.AcontinuacinpulseelbotnSiguiente.

13

Unidad1.InstalacinyconfiguracindedeSQLServer2005.

16. Revise a continuacin la intercalacin propuesta y cmbiela de ser necesario. En


este ejemplo la intercalacin seleccionada es Latin1_General. Pulse el botn
Siguiente.

17. Indiquesideseaenviardeformaautomticainformacindeerroresydatosdeuso
aMicrosoftyhagaclicenelbotnSiguiente.

14

Unidad1.InstalacinyconfiguracindedeSQLServer2005.

18. ReviseloscomponentesqueseinstalaranyhagaclicenelbotnInstalar.

19. Una vez finalizada la instalacin compruebe los componentes que han sido
instaladosyhagaclicenelbotnNext.

20. Reviselassugerenciasqueaparecenenlasiguienteventanayhagaclicenelbotn
Finish.

15

Unidad1.InstalacinyconfiguracindedeSQLServer2005.

16

Unidad2.LasherramientasdeadministracindeSQLServer2005.

Unidad 2. Las herramientas de administracin de SQL Server


2005.
Enestaunidadsedescribentresherramientasfundamentalesenlaadministracinde
SQLServer2005:

SQLServerConfigurationManager
SurfaceAreaConfigurationTool
SQLServerManagementStudio

Con ellas un administrador de base de datos (DBA) puede configurar y establecer


distintas opciones relativas a servicios y caractersticas de las instancias as como
administrarbasesdedatosentodossusaspectos,crearproyectosbasadosenscripts,
etc.
Objetivosdeestaunidad.
ConocerlasherramientasdeadministracindeSQLServer2005.
Configurarservicios.
Activarydesactivarcaractersticas
Crearsolucionesyproyectos.

Leccin1.SQLServerConfigurationManager.
Cada componente de los que conforman el producto est asociado a un servicio. La
configuracinygestindeestosservicioshadehacerseatravsdeestaherramienta.
Despusdeestaleccinsercapazde....
ExplorarlaherramientaSQLServerConfigurationManager.
Configurar,iniciarydetenerservicios.
Configurarprotocolos.
Trabajarconalias.
Administracindeservicios.
Unadelastareasquesepuedenllevaracaboconestaherramientatienequevercon
laadministracindelosdistintosserviciosasociadosaSQLServer.Entrelostrabajos
ms habituales se encuentran iniciar, pausar o detener los servicios, establecer
parmetros de inicio y cambiar la identidad o cuenta con la que dichos servicios se
ejecutan.
Iniciar,pausar,deteneryreiniciarservicios.
1. InicielaherramientadesdeInicio>Todoslosprogramas>MicrosoftSQLServer
2005>Herramientasdeconfiguracin.
2. EnelpaneldelaizquierdaseleccioneSQLServer2005Services.
3. Enelpaneldeladerecha,seleccioneelserviciosobreelquedeseaactuar.

17

Unidad2.LasherramientasdeadministracindeSQLServer2005.

4. Haga clic con el botn derecho del ratn y seleccione la operacin a realizar:
Iniciar,Detener,Pausar,ReanudaroReiniciar.

Cambiarlacuentadeiniciodeunservicio.
1. InicielaherramientadesdeInicio>Todoslosprogramas>MicrosoftSQLServer
2005>Herramientasdeconfiguracin.
2. EnelpaneldelaizquierdaseleccioneServiciosdeSQLServer2005.
3. Enelpaneldeladerecha,seleccioneelserviciosobreelquedeseaactuar.
4. HagaclicconelbotnderechodelratnyseleccionelaopcinPropiedades.
5. SeleccionelapestaaIniciarsesin.

18

Unidad2.LasherramientasdeadministracindeSQLServer2005.

6. SeleccionealgunadelascuentaspredefinidasobienhagaclicenEstacuentae
indique una cuenta distinta. Para finalizar haga clic en el botn Aceptar y
contesteSenelsiguientecuadrodedilogoparareiniciarelservicio.

Importante: al cambiar la cuenta asociada a un servicio se establecen adems los


permisosnecesariosenelregistrodeWindowsparaquelanuevacuentapuedaleer
valores de configuracin de SQL Server. Por este motivo se recomienda siempre
utilizarestaherramientaenlugardelahabitualenlagestindeserviciosenWindows
(WindowsServicesControlManager).
Cambiarlasopcionesdeiniciodeunservicio.
1. InicielaherramientadesdeInicio>Todoslosprogramas>MicrosoftSQLServer
2005>Herramientasdeconfiguracin.
2. EnelpaneldelaizquierdaseleccioneServiciosdeSQLServer2005.
3. Enelpaneldeladerecha,seleccioneelserviciosobreelquedeseaactuar.
4. HagaclicconelbotnderechodelratnyseleccionelaopcinPropiedades.
5. SeleccionelapestaaAvanzadoymodifiquealgunodelosparmetrosdeinicio
que aparecen o aada uno nuevo. Por ejemplo, para iniciar SQL Server en
modo singleuser (usuario nico) aada el parmetro m separndolo del
ltimo con el carcter punto y coma. (Para saber ms sobre las opciones de
inicio
de
SQL
Server
2005
consulte
esta
pgina:
http://msdn.microsoft.com/enus/library/ms190737.aspx

Administracindeprotocolos.
ParaqueSQLServerpuedacomunicarseconaplicacionesclientedebenconfigurarse
yhabilitarselosprotocolosoportunosenambosextremos,esdecir,enelPCclientey
enelservidordonderesidelainstanciaSQLServer.
Importante:SQLServerinicialmentenopermiteconexionesremotasdebidoaquelos
protocolosnecesariosparaelloestndeshabilitados.Laformamssencilladepermitir

19

Unidad2.LasherramientasdeadministracindeSQLServer2005.

conexiones remotas es utilizando la Herramienta de Configuracin de Superficie


(SurfaceAreaConfigurationTool),descritamsadelanteenestecaptulo.
Protocolos.
Sharedmemory.Eselprotocolomssencilloynotieneopcionesconfigurables.
Slo aplicaciones instaladas en el mismo ordenador que la instancia de SQL
Serverpodrnconectarseconella.
TCP/IP.Eselprotocolomscomny,aunquesuconfiguracinpuederesultar
complicada,generalmentenohayquerealizargrandescambiosenlosvalores
establecidos por defecto. El puerto de escucha establecido por defecto para
esteprotocoloesel1433.
Named pipes y VIA. Son menos utilizados que los anteriores y su descripcin
quedafueradelalcancedeestecurso.
Habilitarunprotocolo.
1. InicielaherramientadesdeInicio>Todoslosprogramas>MicrosoftSQLServer
2005>Herramientasdeconfiguracin.
2. En el panel de la izquierda, despliegue el nodo Configuracin de red de SQL
Server2005yseleccioneProtocolosdeMSSQLSERVER.

3. En el panel de la derecha haga clic con el botn derecho sobre el protocolo


TCP/IPyseleccioneHabilitar.Paraqueestecambiosurtaefectodebereiniciar
elservicio.
CambiarelpuertoTCP/IP.
1. InicielaherramientadesdeInicio>Todoslosprogramas>MicrosoftSQLServer
2005>Herramientasdeconfiguracin.

20

Unidad2.LasherramientasdeadministracindeSQLServer2005.

2. En el panel de la izquierda, despliegue el nodo Configuracin de red de SQL


Server2005yseleccioneProtocolosdeMSSQLSERVER.
3. En el panel de la derecha haga clic con el botn derecho sobre el protocolo
TCP/IPyseleccionePropiedades.
4. HagaclicenlapestaaDireccionesIP.EnelgrupodepropiedadesIP1asigneel
valor1620alapropiedadPuertoTCPypulseOK.Paraqueestecambiosurta
efectodebereiniciarelservicio.

Administracindealias.
Un alias es un objeto que almacena los datos necesarios para que una aplicacin
puedaconectarconunainstancia.Estosdatosson:
Nombredeservidor
Protocolo
Puerto
Una vez definido el alias, las aplicaciones cliente en sus cadenas de conexin
sustituyen esa informacin por el nombre del alias, el cual debe estar definido en el
mismoequipoenqueseejecutalaaplicacin.
Crearunalias.
1. InicielaherramientadesdeInicio>Todoslosprogramas>MicrosoftSQLServer
2005>Herramientasdeconfiguracin.
2. En el panel de la izquierda, despliegue el nodo Configuracin de SQL Native
Client.
3. Haga clic con el botn derecho sobre el nodo Alias, seleccione Nuevo Alias e
introduzca la informacin que aparece en la siguiente imagen. Para terminar
pulseelbotnAceptar.

21

Unidad2.LasherramientasdeadministracindeSQLServer2005.

Leccin2.SurfaceAreaConfigurationTool.
Mediante esta herramienta resulta sencillo habilitar ciertos servicios que han sido
deshabilitados por defecto por motivos de seguridad. Tenga en cuenta que una
instanciarecininstaladanitansiquieraadmiteconexionesremotas.Estaesunadelas
primerascaractersticasahabilitarencualquierservidorunavezinstalado.
Despusdeestaleccinsercapazde...
ExplorarlaherramientaSurfaceAreaConfigurationTool.
Habilitarydeshabilitarconexionesremotas.
Habilitarydeshabilitarcaractersticas.
SQL Server 2005 es seguro por defecto. Esta afirmacin quiere decir que una vez
instalado el producto ciertas caractersticas, servicios y conexiones estn
deshabilitados para reducir el rea de exposicin ante posibles ataques. El ejemplo
ms claro tiene que ver con las conexiones remotas: stas estn deshabilitadas por
defecto,porlotantoslolasaplicacionesqueseejecutanenelmismoservidordonde
hasidoinstaladalainstanciadeSQLServerpodrnconectarconella.
UnadelasprimerascosasquehayquehacerdespusdeinstalarSQLServer2005es
ejecutar esta herramienta y comprobar qu caractersticas estn habilitadas, qu
servicios se estn ejecutando y qu tipos de conexiones se admiten y modificar la
configuracinenfuncindelasnecesidades.
Habilitarconexionesremotas.
1. InicielaherramientadesdeInicio>Todoslosprogramas>MicrosoftSQLServer
2005>Herramientasdeconfiguracin.

22

Unidad2.LasherramientasdeadministracindeSQLServer2005.

2. Pordefectolaherramientaconectarconlainstanciainstaladaenelservidor
dondeseestejecutando.Paraconectarconotroservidorhagaclicencambiar
equipo,seleccioneRemotecomputereindiqueelnombrededichoservidor.A
continuacinpulseelbotnOk.

3. HagaclicenConfiguracindesuperficieparaserviciosyconexiones.
4. Enelrboldelaizquierda,seleccioneConexionesremotasyenelpaneldela
derecha indique el protocolo o protocolos a habilitar para la instancia
seleccionada.(MSSQLSERVEReselnombredelservicioasociadoalainstancia
pordefecto).

23

Unidad2.LasherramientasdeadministracindeSQLServer2005.

5. Haga clic en Aceptar para finalizar. Este cambio requiere reiniciar el servicio
MSSQLSERVER.
Habilitarcorreoelectrnicodebasededatos(DatabaseMail).
El componente Database Mail permite enviar mensajes de correo electrnico desde,
por ejemplo, un procedimiento almacenado utilizando SMTP. Para habilitar esta
caractersticahagalosiguiente:
1. InicielaherramientadesdeInicio>Todoslosprogramas>MicrosoftSQLServer
2005>Herramientasdeconfiguracin.
2. HagaclicenConfiguracindesuperficieparacaractersticas.
3. Enelrboldelaizquierda,seleccioneelelementoCorreoelectrnicodebase
de datos y en el panel de la derecha marque la opcin Habilitar
procedimientos almacenados de correo electrnico de base de datos. Haga
clicenelbotnAceptarparafinalizar.

24

Unidad2.LasherramientasdeadministracindeSQLServer2005.

Leccin3.SQLServerManagementStudio.
Despusdeestaleccinsercapazde...
ExplorarlaherramientaSQLServerManagementStudio.
Registrarservidores.
Administrarunainstancia.
EscribiryejecutarsentenciasTSQL.
Crearsolucionesyproyectos.
Management Studio es la nueva herramienta para los administradores de bases de
datos y programadores de SQL Server. Tiene un aspecto muy similar a Microsoft
VisualStudioyofreceherramientasgrficasparalaadministracindebasesdedatos,
juntoconuncompletoentornodedesarrollo.
IniciarSQLServerManagementStudio.
1. Haga clic en Inicio>Todos los programas>Microsoft SQL Server 2005>SQL
ServerManagementStudio.
2. Enlasiguienteventana,compruebesilainformacinqueapareceescorrectay
hagaclicenConectar.LacajadetextoNombredeservidordebecontenerel
nombre del equipo en el que est instalado SQL Server. Puede indicar
localhost para referirseal equipo local. Si desea conectara una instancia con
nombre, al nombre del servidor tendr que aadir el nombre de la instancia
conelformato<nombreDeEquipo>\<nombreDeInstancia>.

25

Unidad2.LasherramientasdeadministracindeSQLServer2005.

Descripcindelentorno.
Elexploradordeobjetos.
Elexploradordeobjetos(ObjectExplorer)eselpanelqueaparecealaizquierdayenl
se muestra una vista en rbol de todos los objetos que contiene la instancia. El
explorador de objetos incluye informacin de todas las instancias a las que est
conectado.

Elpanelprincipal.
El panel dela derechao panel principales el rea de mayor tamaode SQL Server
Management Studio. Esta zona puede contener editores de consulta y ventanas del
explorador. La informacin en este panel se organiza en pestaas. La nica pestaa
que aparece al comienzo es la titulada Detalles del explorador de objetos y su
contenido se actualiza a medida que se seleccionan elementos en el panel de la
izquierda.

26

Unidad2.LasherramientasdeadministracindeSQLServer2005.

Servidoresregistrados.
Otro de los paneles o ventanas que normalmente se muestran es el relativo a
servidoresregistrados.Unservidorseregistraparafacilitarposteriormentelaconexin
a dicho servidor. De esta forma no es necesario recordar el nombre del servidor, de
instancia,puerto,etc.ParamostrarlosservidoresregistradoshagaclicenelmenVer
>Servidores registrados. Generalmente aparece situado encima del panel del
exploradordeobjetos.Paraconectarconalgunodelosservidoresqueaparecenbasta
conhacerdobleclic.

Eleditordeconsultas.
ElAnalizadordeConsultasdeSQLServer2000hasidoreemplazadoenestaversin
por un editor de consultas integrado en el propio SQL Server Management Studio.
UnadelasformasdeiniciaresteeditoreshaciendoclicenelbotnNuevaconsultade
labarradeherramientas:

Si tiene los permisos adecuados se abrir una ventana en la que podr empezar a
escribir instrucciones TSQL (Transact SQL). El contexto en el que se ejecutan las
instrucciones es siempre el de una base de datos. Cada usuario con permisos para
conectarseaunainstanciatieneasignadouncontextopordefecto,loquesetraduce
enqueseconectaaunabasededatosconcretanadamsiniciarlasesin.Enlafigura
que se muestra a continuacin, se puede ver que el contexto establecido es el de la
base de datos de ejemplo AdventureWorks. Observe el control desplegable que
apareceenlapartesuperiordelexploradordeobjetos:

27

Unidad2.LasherramientasdeadministracindeSQLServer2005.

Utilizando dicho control podr cambiar el contexto de ejecucin de las instrucciones


queescribaenlaventanadeleditor.

Otromododeiniciareleditordeconsultaseshaciendoclicconelbotnderechodel
ratn sobre alguna de las bases de datos de la instancia y seleccionando la opcin
Nuevaconsulta.Deestamaneraseestablecealmismotiempolabasededatossobre
laqueseejecutarelscript.

28

Unidad2.LasherramientasdeadministracindeSQLServer2005.

Ejecucindeconsultas.
Una vez escritas las instrucciones TSQL slo resta ejecutarlas para probar el
funcionamiento de las mismas. Esto se puede conseguir pulsando la tecla F5 o
haciendoclicenelbotnEjecutardelabarradeherramientas:

Nota:alrealizarpruebasdeconsultassueleserhabitualtenerdistintasinstrucciones
en el editor y muchas veces no tienen por qu ejecutarse a la vez. Para ejecutar un
bloque de instrucciones seleccione aquellas que le interesa probar y pulse F5 o el
botnmencionadoanteriormente.
Los resultados de la ejecucin se muestran en lo que se denomina panel de
resultados. Es una ventana que se abre automticamente justo debajo del editor de
consultasyquesepuedemostraruocultarconlacombinacindeteclasCtrl+R.

Estepaneldisponededospestaas:enunadeellassemuestranlosresultadosdela
consulta (en el caso de una instruccin SELECT). En la otra, la titulada Mensajes,
aparecen mensajes informativos o de error. Por ejemplo, tras la ejecucin de una
sentenciaSELECTenestapestaasemuestranlasfilasdevueltasporlaconsulta.

29

Unidad2.LasherramientasdeadministracindeSQLServer2005.

Eldiseadordeconsultas.
Management Studio dispone de un diseador de consultas grfico igual al que se
emplea en Microsoft Visual Studio. Este diseador facilita la tarea de creacin de
consultas en las que intervienen varias tablas relacionadas. La forma de iniciar esta
herramientaeshaciendoclicenelsiguientebotn:

Nota: una vez cerrado el diseador, las instrucciones generadas se insertarn en el


editor a partir de la posicin donde estuviera el cursor antes de pulsar el botn que
inicialaherramienta.
Para crear una nueva consulta simplemente pulse el botn descrito anteriormente.
Unavezhayaterminadoconeldiseo,eltextoasociadoalaconsultaseinsertarenel
editordeconsultasapartirdelpuntodondeestuvierasituadoelcursorantesdeiniciar
laherramienta.
Pararedisearalgunadelasconsultasqueyaapareceneneleditorseleccioneeltexto
asociado y pulse el botn de inicio del diseador. Una vez finalice, los cambios se
aplicarneneleditorysustituirneltextoquehubieraanteriormente.
Solucionesyproyectos.
Suele ser habitual que los administradores de bases de datos y desarrolladores
generenscriptsquedeseanguardarparaevitarescribirlosdenuevoenunfuturo.En
versionesanterioresdeSQLServernoexistelaposibilidaddeorganizarestosscripts
deunaformacmodayloseditoresdeconsultadeesasversioneslomsquehacenes
generar archivos de texto. La organizacin o agrupacin de estos archivos hay que
hacerladeformamanual.
ConSQLServerManagementStudiopuedencrearse,aligualqueconVisualStudio,
soluciones y proyectos lo cual simplifica bastante la organizacin de scripts. Una
solucineselobjetodemsaltonivelypuedecontenervariosproyectos.Unproyecto
a su vez contiene generalmente consultas y conexiones aunque se pueden agregar
archivosdediversostipos.OtraventajaqueofreceSQLServerManagementStudioes
laintegracinconVisualSourceSafe,herramientaquefacilitalagestindelasdistintas
versionesdelosproyectosamedidaqueevolucionan.
Enlaprcticadeestaunidadaprenderacrearsolucionesyproyectos.
Prctica.CrearyorganizarscriptsconSQLServerManagementStudio.
En esta prctica crear una solucin y un proyecto al que aadir varias consultas
generadasconeldiseador.
1. Inicie SQL Server Management Studio desde Inicio>Todos los programas
>MicrosoftSQLServer2005.
30

Unidad2.LasherramientasdeadministracindeSQLServer2005.

2. Conctese a la instancia por defecto instalada en la mquina local utilizando


autenticacinWindows.

3. Para crear una solucin y un proyecto vaya al men Archivo y seleccione


Nuevo>Proyecto.Aparecerlasiguienteventana:

4. En el apartado Plantillas seleccione Secuencias de comandos de SQL Server


(apareceseleccionadopordefecto).
5. Indiqueacontinuacinunnombredeproyecto,yunnombreparalasolucin.
La estructura de carpetas se crear en la ubicacin indicada, que por defecto
est establecida en Mis Documentos\SQL Server Management
Studio\Projects.
6. MarquelaopcinCreardirectorioparalasolucinypulseelbotnAceptar.
7. En SQL Server Management Studio aparece un nuevo panelen la zona dela
derecha llamado Explorador de soluciones. Este panel tambin se muestra
mediantelacombinacindeteclasCtrl+Alt+L.

31

Unidad2.LasherramientasdeadministracindeSQLServer2005.

8. Paracrearunaconsulta,enelexploradordesolucioneshagaclicconelbotn
derecho del ratn sobre el nodo Consultas y seleccione la opcin Nueva
consulta.

9. Indique la informacin de conexin asociada a esta consulta. Ms adelante


podr cambiarla si lo desea. Establezca los mismos valores que emple para
conectarconlainstanciaypulseelbotnConectar.

32

Unidad2.LasherramientasdeadministracindeSQLServer2005.

10. Se abrir entonces una ventana de edicin y en el explorador de soluciones


aparecerndoselementosnuevos:unoasociadoalaconexinyotroasociado
alarchivodondesealmacenareltextodelaconsulta.

11. Para disear una consulta comience seleccionando la base de datos


AdventureWorkseneldesplegabledelabarradeherramientas:

12. Haga clic en el editor de consultas y a continuacin en el botn que inicia el


diseador
.
13. El objeto de esta consulta es obtener una relacin de empleados en la que
aparezcan los siguientes datos: nombre, apellidos, cargo que ocupa en la
empresa,direccinyciudadderesidencia.Estainformacinestcontenidaen
las siguientes tablas: Employee, Address, Contact y EmployeeAddress. El
primerpasoconsisteenagregardichastablasalaconsulta.Enlaventanaque
se muestra a continuacin seleccione las tablas en cuestin y pulse el botn
Agregar.

14. PulseacontinuacinelbotnCerrar.
15. En la siguiente ventana seleccione las columnas que se van a tratar en la
consulta.

33

Unidad2.LasherramientasdeadministracindeSQLServer2005.

16. EnlatablaContactmarquelascolumnasFirstNameyLastName.
17. EnlatablaEmployeemarquelacolumnaTitle.
18. EnlatablaAddressmarquelascolumnasAddressLine1yCity.
19. PulseelbotnAceptarpararegresaraleditordeconsultas.
20. ParaverlosresultadospulseelbotnEjecutarolateclaF5.

21. Sideseacambiarelnombredelarchivodeconsulta,seleccionedichoarchivoen
elexploradordesolucionesypulselateclaF2,escribaelnombrequedeseey
pulselateclaEnterparaconfirmarelcambio.
22. Paraguardarloscambiospulseelbotn
herramientas.

34

queseencuentraenlabarrade

Unidad3.Creacinyadministracindebasesdedatos.

Unidad3.Creacinyadministracindebasesdedatos.
EsfundamentalconocercmoseimplementanfsicamentelasbasesdedatosenSQL
Server para que, en el momento de crearlas, el administrador elija la configuracin
ms adecuada en funcin de los medios disponibles y de los requisitos de las
aplicaciones.Enestaunidadaprenderagestionarlosarchivosasociadosalasbases
dedatosyaconfigurarstasatravsdesusmltiplesopciones.
Objetivosdeestaunidad.
Aprenderacrearbasesdedatos.
Distribuir los archivos de datos y de registro de transacciones en distintas
unidadesdediscoparaoptimizarelrendimiento.
Configurarbasesdedatosatravsdesusopciones.
Obtenermetadatosdelasbasesdedatos.

Leccin1.Crearbasesdedatos.
Crear bases de datos es una tarea que se realiza con frecuencia. Aunque
aparentemente es algo sencilla, antes de crearlas hay que tener en cuenta diversos
aspectosquepuedenafectarseveramentealrendimiento.
Despusdeestaleccinsercapazde....
Crearbasesdedatos.
Describirlostiposdearchivoquelasconforman.
Describircmoserealizanlasactualizaciones.
Describirlosmotivosporlosqueorganizarlosarchivosenfilegroups.
Losarchivosdedatos.
Crearunabasededatossepuedereduciraunasimpleinstruccincomoesta:
CREATE DATABASE DBCurso

Pero,quimplicaejecutaresainstruccin?Puesalmenoslacreacindedosarchivos
en disco: un archivo de datos y un archivo de registro de transacciones. Las
caractersticasinicialesdeestosarchivosvienenheredadasdelabasededatosmodel.
EnunaversinmsextendidadelainstruccinCREATEDATABASEsepuedenindicar
losdetallesdeesosarchivos:
CREATE DATABASE [DBCurso] ON PRIMARY
(NAME = 'DBCurso',
FILENAME = 'C:\Datos\DBCurso.mdf',
SIZE = 3072KB, MAXSIZE = 102400KB, FILEGROWTH = 1024KB)
LOG ON
(NAME = 'DBCurso_log',
FILENAME = 'C:\Logs\DBCurso_log.ldf',
SIZE = 1024KB , MAXSIZE = 102400KB, FILEGROWTH = 10%)

Parmetro
NAME

Descripcin
Nombre lgico del archivo de datos. Facilita posteriormente el

35

Unidad3.Creacinyadministracindebasesdedatos.

Parmetro
FILENAME
SIZE
FILEGROWTH

MAXSIZE

Descripcin
tratamientodelarchivoatravsdeinstruccionesTSQL.
Ubicacin fsica del archivo. La cuenta de servicio de SQL Server debe
tenerpermisosdeescrituraenlacarpetaelegida.
SQLServerreservaesteespacioendiscoparaquenoseautilizadopor
otrasaplicaciones.
Cuando el tamao inicial sea totalmente ocupado con informacin, SQL
Server reservar nuevamente en disco la cantidad indicada en este
parmetro,quepuedevenirdadaenKBoenporcentaje.
Tamaomximoelarchivo.Sinoseindica,elarchivocrecerhastallenar
eldisco.

Una base de datos est formada, al menos, por un archivo de datos yun archivo de
registrodetransaccionessinembargo,sisedisponendevariasunidadesdedisco,es
una prctica habitual crear varios archivos de datos. Uno de ellos se denomina
principal y generalmente, aunque no es obligatorio, tiene la extensin mdf. Los
archivosadicionalessedenominansecundariosysuelentenerlaextensinndf.
El siguiente ejemplo muestra la creacin de una base de datos formada por dos
archivos de datos y un solo archivo de registro de transacciones distribuidos en
distintasunidadesdedisco.
CREATE DATABASE [DBCurso] ON PRIMARY
(NAME = 'DBCurso',
FILENAME = 'C:\Datos\DBCurso.mdf',
SIZE = 3072KB, MAXSIZE = 102400KB, FILEGROWTH = 1024KB),
(NAME = 'DBCurso2',
FILENAME = 'E:\Datos\DBCurso2.ndf',
SIZE = 3072KB, MAXSIZE = 102400KB, FILEGROWTH = 1024KB),
LOG ON
(NAME = 'DBCurso_log',
FILENAME = 'F:\Logs\DBCurso_log.ldf',
SIZE = 1024KB , MAXSIZE = 102400KB, FILEGROWTH = 10%)

Pginas.
Los datos se almacenan en bloques contiguos de 8 Kb (8192 bytes) denominados
pginas.Unabasededatosalmacena128pginasporcadaMb.Comonormageneral
una fila de datos nunca puede abarcar ms de una pgina. Esto quiere decir que la
sumadelaslongitudesdelascolumnasquecomponenlatablanopuedeexcederde
8060 bytes (132 bytes de los 8192 que tiene la pgina se emplean para almacenar
datosdecabecera).Estareglaserompesolamentecuando:
Latablacontienecolumnasdetipovarchar,nvarchar,varbinary,sql_varianto
de tipos de datos personalizados basados en CLR (.NET). La suma de las
longitudes de estas columnas puede exceder del lmite de 8060 bytes, pero
ninguna de ellas, de forma individual, puede exceder el lmite mximo
establecidoenSQLServerparaestetipodedatos:8000bytes.
La tabla contiene columnas de tipo varchar, nvarchar o varbinary con el
modificadormax.

36

Unidad3.Creacinyadministracindebasesdedatos.

Cuandosedacualquieradelasdossituacionesanteriores,losdatosdelascolumnasse
almacenanenestructurasdiferentesalasdelapropiapgina.Loquesealmacenaen
lafilaesunpunteroqueindicadondeestnesasestructurasparapoderasextraerla
informacincuandoserequiera.
Extensiones.
Laspginasseagrupanenextensionesycadaunadeellasestformadapor8pginas.
Mientras que una pgina de datos slo puede contener informacin de un nico
objeto (tabla o ndice), una extensin puede estar formada por pginas de diversos
objetos.Estoocurregeneralmentecuandolosobjetostienenuntamaoreducidoyse
hablaentoncesdeextensionesmixtas.Cuandolasochopginaspertenecenaunsolo
objetosehabladeextensionesuniformes.SQLServerintentar,siemprequeseden
las condiciones necesarias, crear extensiones uniformes en lugar de mixtas para
optimizarelrendimiento.
Filegroups.
Los filegroups no tienen una representacin fsica en el disco y sirven para agrupar
archivos de datos. Los archivos de registro de transacciones no pueden asociarse a
filegroups.
Una base de datos al menos tiene un filegroup llamado PRIMARY y en l, o mejor
dicho,enlosarchivosasociadosal,sealmacenaelcatlogodelabasededatos,es
decir,lastablasyobjetosquesedenominandesistema.
Observeelsiguienteejemplodecreacindebasededatos:
CREATE DATABASE [DBCurso] ON PRIMARY
(NAME = 'DBCurso',
FILENAME = 'C:\Datos\DBCurso.mdf' ,
SIZE = 3072KB, FILEGROWTH = 1024KB),
FILEGROUP [FG1]
(NAME = 'DBCurso2',
FILENAME = 'C:\Datos\DBCurso2.ndf',
SIZE = 3072KB, FILEGROWTH = 1024KB),
(NAME = 'DBCurso3',
FILENAME = 'E:\Datos\DBCurso3.ndf',
SIZE = 3072KB, FILEGROWTH = 1024KB)
LOG ON
(NAME = 'DBCurso_log',
FILENAME = 'F:\Logs\DBCurso_log.ldf',
SIZE = 1024KB, FILEGROWTH = 10%)

EnlseespecificaquelabasededatosDBCursoestarformadapordosfilegroups.El
archivo DBCurso estar asociado al filegroup PRIMARY mientras que los archivos
DBCurso2yDBCurso3quedarnasociadosalfilegrupFG1.Estosdosltimosarchivos
seencuentranademsenunidadesdediscodistintas.
Fjeseahoraenelsiguienteejemplodecreacindetabla:
USE DBCurso
GO
CREATE TABLE dbo.Clientes
(
IDCliente int NOT NULL,

37

Unidad3.Creacinyadministracindebasesdedatos.

ON FG1

Nombre nvarchar(50) NOT NULL


)

EnestescriptsecrealatablaClientesasociadaalfilegroupFG1.Estoimplicaquelos
datos se almacenarn en los archivos asociados al filegroup. Cuando se da esta
situacin SQL Server almacena los datos en los archivos de forma proporcional. Si
estosarchivosseencuentranendistintasunidadesdediscolamejoradelrendimiento
lgicamente ser notable, ya que habr dos dispositivos fsicos trabajando para
obtenerlainformacinsolicitadaporlasconsultas.
Adems de la optimizacin del rendimiento, otro motivo por el que crear filegroups
adicionaleseseldefacilitarlaadministracin.EnSQLServersepuedenhacercopias
de seguridad no slo de bases de datos completas, sino tambin de filegroups y
archivos concretos. De esta forma, si alguna tabla de la base de datos tiene unos
requisitosdecopiadeseguridaddistintosalresto,ascielaaunfilegroupygestionelas
tareasdecopiayrestauracindeformaindependientealrestodeobjetosdelabase
dedatos.
Puede establecer en cada base de datos un filegroup por defecto. As no ser
necesarioindicarenlainstruccinCREATEdetablasendiceselfilegroupalquedebe
asociarseelobjeto.
Porltimotambintienelaposibilidaddemarcarunfilegroupcomodeslolectura.
Deestaformatodoslosobjetosasociadosaesefilegroupnosufrirnmodificaciones
hastaquevuelvaarestablecerseelvalordedichoatributo.
Elregistro(log)detransacciones.
Una transaccin est formada por una o ms instrucciones TSQL que se ejecutan
comounaunidad,deformaquesialgunadeellasfallasecancelantodosloscambios
que hayan hecho las otras. Por defecto, SQL Server trabaja con transacciones
implcitas,esdecir,noesnecesarioindicarelcomienzoyelfindelatransaccin.Cada
instruccin es una transaccin en s misma. En las transacciones explcitas, por el
contrario, se indica el comienzo y el fin utilizando las instrucciones BEGIN
TRANSACTION para iniciarla, COMMIT TRANSACTION para confirmar los cambios y
ROLLBACKTRANSACTIONparacancelardichoscambios.
Cuandounaaplicacinejecutaunatransaccinocurrelosiguiente:
Las pginas de datos afectadas son cargadas en memoria, en lo que se
denominabuffercache.
SQL Server graba antes cada operacin de cambio en el registro de
transacciones y las modificaciones se producen en las pginas previamente
cargadasenmemoria.

38

Unidad3.Creacinyadministracindebasesdedatos.

SQLServeremiteloquesedenominanpuntosdecomprobacin(checkpoints)
con cierta frecuencia y es entonces cuando los cambios se trasladan a los
archivosdedatosdelabasededatos.

Si ocurre un fallo en el sistema antes de que se apliquen las modificaciones a los


archivos de datos, SQL Server, durante el proceso de recuperacin, es capaz de
reproducir dichos cambios gracias a que la informacin necesaria se encuentra en el
registrodetransacciones.
Por motivos de rendimiento conviene, siempre que se pueda, ubicar el archivo de
registroenunaunidaddediscodistintaalrestodearchivosdelabasededatos.
Reducirbasesdedatos.
Comohavistoanteriormente,SQLServerreservaespacioendiscoparalosarchivos
dedatosyderegistrodetransacciones.Generalmentenotodoeseespacioreservado
est ocupado con datos, incluso en alguna ocasin el espacio reservado puede ser
excesivo en comparacin con la cantidad de informacin que est prevista ser
almacenada.Esenestoscasoscuandopuedeinteresardevolveralsistemaoperativoel
espacio que no se prev utilizar. Este proceso se denomina reduccin de la base de
datos.Lareduccinsepuedehacerarchivoporarchivoodeformaglobalafectandoas
atodoslosarchivosdelabasededatos.
ElsiguienteejemplomuestracmoreducirlabasededatosDBCurso,dejandoun10%
deespaciolibrecalculadodespusdelareduccin.
USE master
GO
DBCC SHRINKDATABASE (DBCurso, 10)

YenesteotroejemplosereduceelarchivoDBCurso2delabasededatosDBCursoaun
tamaode3MbutilizandolainstruccinDBCCSHRINKFILE:
DBCC SHRINKFILE(DBCurso2, 3)

Tengaencuentaqueunareduccinnuncaimplicaprdidadedatos.Siporejemploel
archivo DBCurso2 tuviera un tamao de 5Gb, de los cuales solamente 4 estn
ocupadosconinformacin,nuncapodrareducirelarchivoa3Gb.
Las bases de datos disponen de una opcin que permite habilitar la reduccin
automtica.CuandoSQLServerdetectaquelabasededatosencuestintienems
deun25%deespacioreservadosinutilizarejecutaunareduccin.
Prctica.Crearunabasededatos.
En esta prctica crear la base de datos DBCurso que estar formada por varios
archivos de datos. Crear adems varios filegroups y ver como establecer uno por
defectoymarcarotrodeellosconelatributodesololectura.

39

Unidad3.Creacinyadministracindebasesdedatos.

1. Inicie SQL Server Management Studio y conctese a la instancia por defecto


utilizando seguridad integrada de Windows. Deber haber iniciado sesin en la
mquinaconunacuentaconpermisosdeadministrador.
2. Enelexploradordeobjetoshagaclicconelbotnderechodelratnsobreelnodo
BasesdedatosyseleccionelaopcinNuevabasededatos.

3. Asigne un nombre a la base de datos (DBCurso). Ver como se actualiza


automticamenteelnombredelarchivodedatosyderegistrodetransacciones.

4. En el panel de la izquierda seleccione el elemento Grupos de archivos. Pulse a


continuacindosveceselbotnAgregarparadefinirdosfilegroupseindiquesus

40

Unidad3.Creacinyadministracindebasesdedatos.

nombres(FG1yFG2). Verqueenestepanelpuedeindicartambincualserel
filegroup por defecto y si alguno de ellos (excepto el filegroup PRIMARY) ser de
slolectura.EsasopcioneslasmodificarmsadelanteconinstruccionesTSQL.

5. En el panel de la izquierda seleccione nuevamente el elemento General. A


continuacinpulseelbotnAgregardosvecesparacrearasdosnuevosarchivos.
Asgnelesunnombreyhagaquecadaunodeellosquedeasociadoacadaunode
los filegroups creados en el punto anterior, modificando para ello el valor de la
columnaGrupodearchivos.

41

Unidad3.Creacinyadministracindebasesdedatos.

6. Modifique ahora las caractersticas relativas a crecimiento asociadas al archivo


DBCurso1. Haga clic en el botn que aparece en la columna Crecimiento
automticoenlafilaasociadaadichoarchivo.
7. En la siguiente ventana indique que SQL Server reservar 10 Mb adicionales en
cadaoperacindecrecimientoyqueeltamaomximodelarchivoestarlimitado
a100Mb.PulseelbotnAceptar.

8. ReviselainformacinypulseelbotnAceptarparacrearlabasededatos.
9. ParaestablecerFG1comofilegrouppordefectoejecuteelsiguientescript:
ALTER DATABASE [DBCurso] MODIFY FILEGROUP [FG1] DEFAULT

10. YparamarcarFG2conelatributodeslolecturaejecuteelsiguientescript:
ALTER DATABASE [DBCurso] MODIFY FILEGROUP [FG2] READONLY

Leccin2.Administrarbasesdedatos.
Unavezcreadaslasbasesdedatoslaconfiguracindelasmismaspuedevariarenel
tiempo debido a diversos factores. En esta leccin aprender a cambiar dicha
configuracinascomoaobtenerinformacinacercadelestadodelasbasesdedatos.
Despusdeestaleccinsercapazde....
Describir algunas de las opciones ms importantes de que disponen las bases
dedatos.
Describir los distintos modos de obtener informacin propia de las bases de
datos.
Opcionesdebasededatos.
La configuracin de las bases de datos se puede modificar a travs de SQL Server
Management Studio o bien utilizando la instruccin ALTER DATABASE. La siguiente
tablamuestraalgunasdelasopcionesmsimportantesagrupadasporcategoras.
Categora
Opcin
Comportamientoautomtico AUTO_CREATE_STATISTICS

AUTO_UPDATE_STATISTICS

AUTO_CLOSE

42

Descripcin
Generacin automtica de
estadsticas para optimizar el
rendimientodelasconsultas.
Actualizacin automtica de
estadsticas.
Cierre automtico de la base

Unidad3.Creacinyadministracindebasesdedatos.

Categora

Disponibilidad

Opcionesdecursor

Opcionesderecuperacin

OpcionesdeSQL

Descripcin
de datos cuando el ltimo
usuariosedesconecta.
AUTO_SHRINK
Reduccin automtica de los
archivosdelabasededatos.
READ_ONLY
Modoslolectura.
READ_WRITE
Modolecturaescritura.
SINGLE_USER
Slo permite un usuario
conectado.
RESTRICTED_USER
Slo se permiten conexiones
a miembros de las funciones
db_owner, dbcreator y
sysadmin.
MULTI_USER
Modomultiusuario.
CURSOR_CLOSE_ON_COMMIT Cierra automticamente los
cursores abiertos al finalizar
latransaccin.
RECOVERY
Establece el modelo de
recuperacin
(FULL,
BULK_LOGGEDoSIMPLE).
RECURSIVE_TRIGGERS
Habilitar o deshabilitar
triggersrecursivos.
ANSI_NULL_DEFAULT
Establece si las columnas de
tablas admiten o no el valor
NULLsinoseespecificanada
enlacreacindelastablas.
Opcin

Metadatosdelabasededatos.
Losmetadatosproporcionaninformacinacercadelapropiabasededatos.Hayvarias
formasdeobteneresainformacin:

UtilizandolaherramientadeadministracinSQLServerManagementStudio.
Atravsdelasvistasdecatlogo.
Mediantefunciones.
Medianteprocedimientosalmacenadosdesistema.

SQLServerManagementStudio.
DesdelainterfazdeSQLServerManagementStudiopuedeobtenerinformacinde
lasbasesdedatosexaminandosuspropiedades.Estoseconsiguedesdeelexplorador
de objetos, seleccionando la base de datos en cuestin, haciendo clic con el botn
derechodelratnsobreellayseleccionandoacontinuacinlaopcinPropiedades.En
la siguiente imagen se muestra la ventana de propiedades de la base de datos
AdventureWorks.

43

Unidad3.Creacinyadministracindebasesdedatos.

Vistasdecatlogo.
Hay definidas ms de 200 vistas de catlogo que sirven para obtener informacin
acercadeobjetosdeSQLServer(basesdedatos,tablas,ndices,etc).Estasvistasse
encuentran definidas en el esquema sys de cada base de datos y se utilizan como
cualquierotravista,mediantelasentenciaSELECT.Algunosejemplosdevistassonlos
siguientes:
Vista
sys.databases
sys.database_files
sys.tables
sys.views

Descripcin
Devuelve una fila por cada base de datos de
lainstancia
Devuelveunafilaporcadaarchivodebasede
datos
Devuelveunafilaporcadatablaenlabasede
datos
Devuelveunafilaporcadavistaenlabasede
datos

Esteesunejemplodeusodevistasdecatlogoparaobtenerunarelacindetodaslas
basesdedatosdefinidasenlainstancia:

44

Unidad3.Creacinyadministracindebasesdedatos.

Funcionesdemetadatos.
Estasfunciones,alcontrarioquelasvistas,solamentedevuelvenunvalor,porellose
denominanfuncionesescalares.Algunasdeestasfuncionessonlassiguientes:
Funcin
DB_ID(nombre_base_de_datos)
DB_NAME(id_base_de_datos)

Descripcin
DevuelveelIDasociadoaunabasededatos
cuyonombresepasaenelparmetro
Devuelveelnombredelabasededatoscuyo
idsepasacomoparmetro

ElsiguienteejemplomuestraelusodelafuncinDB_IDparaobtenerelidentificador
asociadoalabasededatosAdventureWorks:
SELECT DB_ID('AdventureWorks')

Procedimientosalmacenadosdesistema.
Existentambinloquesellamanprocedimientosdesistema.Elnombredetodosellos
comienzaporloscaracteressp_.Algunosejemplossonlossiguientes.
Procedimiento
sp_help
sp_tables
sp_databases

Descripcin
Muestrainformacinacercadeunobjeto
Muestraunafilaporcadatabladelabasede
datos
Muestra una fila por cada base de datos
definidaenlainstancia

45

Unidad3.Creacinyadministracindebasesdedatos.

El siguiente ejemplo muestra cmo obtener informacin detallada acerca del objeto
Production.ProductenlabasededatosAdventureWorks:
USE AdventureWorks
GO
EXEC sp_help 'Production.Product'

Prctica.Modificaropcionesdelabasededatos.
Enestaprcticamodificaralgunasdelasopcionesdelabasededatoscreadaenla
prcticaanteriorutilizandoSQLServerManagementStudio.
1. Inicie SQL Server Management Studio y conctese a la instancia por defecto
utilizando seguridad integrada de Windows. Deber haber iniciado sesin en la
mquinaconunacuentaconpermisosdeadministrador.
2. EnelexploradordeobjetosdespliegueelnodoBasesdedatosyhagaclicconel
botnderechodelratnsobreDBCurso.SeleccionelaopcinPropiedades.

3. ParaaccederalafichadeopcionesseleccioneelelementoOpcionesenelpanelde
laizquierda.
4. CambieelModeloderecuperacinyseleccioneelvalorSimple.
5. Enelpanelinferior,enelgrupodeopcionesAutomticolocalicelaopcinReducir
automticamente y establezca el valor True. La ventana de opciones tendr
entoncesunaspectosimilaralsiguiente:

46

Unidad3.Creacinyadministracindebasesdedatos.

6. Generelasecuenciadecomandosasociadaaestecambiohaciendoclicenelbotn
Generar secuencia de comandos que se encuentra en la parte superior de la
ventana.AcontinuacinhagaclicenelbotnAceptarparaaplicarloscambios.
7. Finalmente, revise el script generado a partir de las modificaciones hechas en el
asistente.

47

Unidad3.Creacinyadministracindebasesdedatos.

48

Unidad4.ElagentedeSQLServer.

Unidad4.ElagentedeSQLServer.
EnestaunidadsedescribeloquesedenominaelAgentedeSQLServer(SQLServer
Agent). Este componente es bsicamente un potente motor de programacin de
trabajos con el que se pondrn crear tareas administrativas para que se ejecuten de
formaregularenmomentosconcretos.Losoperadoresylasalertassonelementosque
tambin intervienen en la ejecucin de los trabajos programados, como se ver a lo
largodeestaunidad.
Objetivosdeestaunidad.
Implementarymantenertrabajos.
Definiralertas.
Definiroperadores.
Crearplanesdemantenimiento.

Leccin1.ImplementartrabajosenelAgentedeSQLServer.
Los trabajos son una herramienta muy til que permiten automatizar tareas
administrativas como son las copias de seguridad, reduccin de bases de datos,
regeneracindendices,etc.
Despusdeestaleccinsercapazde....
Crearuntrabajo.
Crearlospasosquecomponenuntrabajo.
Habilitarydeshabilitartrabajos.
Programartrabajos.
Comprobarelhistorialdetrabajos.
Trabajos.
Los trabajos se definen para realizar tareas que generalmente tienen que ver con el
mantenimiento de bases de datos: copias de seguridad, restauracin de bases de
datos,reindexacin,etc.
Lospasos.
Untrabajoestcompuestoporunoovariospasos.Enuntrabajodevariospasoscada
unodeellosrealizaunapartedelatareayesimportantetenerclaroelordenenelque
se ejecutarn para evitar errores. Los pasos pueden ser de diversos tipos siendo los
mscomuneslossiguientes:
Secuencia de comandos ActiveX. Mediante este tipo de paso se pueden
ejecutarsecuenciasdecomandosescritos,porejemplo,conVBScriptoJScript.
Secuencias de comandos Transact SQL (TSQL). Permite ejecutar sentencias
TransactSQL(SELECT,BACKUP,RESTORE,etc.).

49

Unidad4.ElagentedeSQLServer.

Sistemaoperativo(cmdExec).Seempleaparaejecutarcomandosdelsistema
operativotalescomocopy,xcopy,etc.
Programaciones.
Un trabajo se crea para ser ejecutado una o varias veces y una de las ventajas que
ofrece elagentees permitir programar la ejecucin deestas tareas sin necesidad de
intervencin alguna por parte del administrador de base de datos. No es obligatorio
establecer una programacin aunque lo normal es definir una o varias. La siguiente
ventana muestra las distintas opciones disponibles a la hora de crear una
programacin.

Notificaciones.
Unbuenadministradordebasededatossiemprebuscaestarinformadodecualquier
suceso importante que ocurra en las instancias de SQL Server que administra, y el
hechodesabersiuntrabajodemantenimientosehaejecutadocorrectamenteono
eslosuficientementeimportantecomoparaconsiderarlounsucesoquerequieredela
generacin de una notificacin. En la definicin de un trabajo puede indicarse qu
operadores sern avisados y cmo ser enviado dicho aviso: por correo electrnico,
enviando un mensaje de red (NET SEND) o a un localizador o bien generando una
entradaenelregistrodesucesosdeWindows.

50

Unidad4.ElagentedeSQLServer.

Elpropietariodeltrabajo.
Solamente el propietario del trabajo (job owner) o un miembro de la funcin de
servidorsysadminpuedenmodificardichotrabajo.Adems,establecerelpropietario
implicaestablecertambinelcontextodeseguridadenelcualseejecutarnaquellos
pasosdetipoTSQLincluidoseneltrabajo.
Credencialesycuentasproxy.
ExceptuandolospasosdesecuenciasdecomandosTSQL,loscualesseejecutanenel
contexto de seguridad del propietario del trabajo, el resto de tipos de pasos
mencionadosanteriormenteseejecutanenuncontextodistinto:eldelacuentaconla
queseejecutaelservicioSQLAgent.Sinembargosuelenoserconvenienteasignara
esta cuenta ms permisos de los necesarios por lo que para ejecutar estos pasos se
utilizanloquesedenominancuentasproxy.
Antesdecrearunacuentaproxyesnecesariocrearunacredencial.Unacredenciales
unobjetodeSQLServerasociadoaunacuentadeusuariodeldominioodelequipo.
Mediante el uso de una credencial se puede establecer un contexto de seguridad
distintoalproporcionadoporlacuentadelservicioSQLAgent.Definidalacredencial
solorestaasociarlaaunacuentaproxyyesestalaquefinalmenteseasignaacadauno
de los pasos que conforman un trabajo. En la prctica de esta unidad aprender a
definirestetipodecuentasyaemplearlasdeformaadecuada.
Prctica.Crearuntrabajo.
Setratadecrearuntrabajocapazdeobtenerenunarchivodetextounarelacinde
productosapartirdelatablaProduction.ProductdelabasededatosAdventureWorks.
Unprimerpasoserelencargadodeobtenerdichoarchivo.Unsegundopasocopiar

51

Unidad4.ElagentedeSQLServer.

estearchivoaunrecursoderedenelquelospermisosestnlimitadosaunusuario
concreto.
1. Creeunanuevacuentadeusuarioenelequipo.Dichacuentaservircomocuenta
deservicioparaelAgentedeSQLServer.Paraellohagaclicconelbotnderecho
delratnsobreeliconoMiPCyseleccionelaopcinAdministrar.
2. Despliegue el nodo Herramientas del sistema y a continuacin el nodo Usuarios
locales y grupos. Haga clic sobre dicho nodo con el botn derecho del ratn y
seleccioneUsuarioNuevo.

3. Establezca los valores que aparecen en la siguiente ilustracin y pulse el botn


Crear.Silodeseanoestablezcaningunacontrasea.

4. Cree a continuacin el usuario Maria y pulse el botn Crear. Cuando haya


terminadopulseelbotnCerrar.

52

Unidad4.ElagentedeSQLServer.

5. Agregue la cuenta de servicio del Agente al grupo de seguridad


SQLServer2005SQLAgentUser$Instancia. Para ello, en la ventana Administracin
de equipos seleccione el nodo Grupos. En el panel de la derecha haga doble clic
sobre dicho grupo, a continuacin pulse el botn Agregar e indique la cuenta de
usuariocreadaanteriormente.DespuspulseelbotnAceptar.

6. PulsedenuevoelbotnAceptarparacerrarlaventanadepropiedadesdelgrupo.

7. Inicie la herramienta SQL Server Configuration Manager. En el panel de la


izquierdaseleccioneServiciosdeSQLServer2005yenelpaneldeladerechahaga
clic con el botn derecho del ratn sobre el elemento Agente SQL Server. Para
despusseleccionarlaopcinPropiedades.

53

Unidad4.ElagentedeSQLServer.

8. En la pestaa Inicio de sesin establezca la cuenta SQLAgent como cuenta de


servicioypulseelbotnAceptar.Estoobligarareiniciarelservicio.

9. CreelascarpetasC:\JobFilesyC:\MariaFiles.
10. ParacrearunrecursocompartidosobrelacarpetaJobFilesabraelExploradorde
Windows, haga clic con el botn derecho del ratn sobre dicha carpeta y
seleccioneCompartiryseguridad.

54

Unidad4.ElagentedeSQLServer.

11. Seleccione la opcin Compartir esta carpeta y a continuacin pulse el botn


Permisos. Agregue el usuario SQLAgent y concdale permisos para Cambiar el
contenidodeesterecursoypulseelbotnAceptar.

12. EnlasiguienteventanapulsedenuevoelbotnAceptar.

55

Unidad4.ElagentedeSQLServer.

13. Repita estos mismos pasos sobre la carpeta MariaFiles pero en lugar de dar
permisosdecambioalusuarioSQLAgentdselosalusuarioMaria.
14. AbraSQLServerManagementStudioycompruebeelestadodelAgente.Siest
detenido,talycomosemuestraenlasiguienteilustracin,hagaclicconelbotn
derechodelratnsobreelnombredelservicioyseleccionelaopcinIniciar.

15. Unaveziniciadoelservicio,despliegueelnodoAgenteSQLServer.Acontinuacin
haga clic con el botn derecho del ratn sobre el nodo Trabajos y seleccione
Nuevo trabajo. Indique un nombre y un propietario tal y como se muestra en la
imagenyacontinuacinseleccionePasosenelpaneldelaizquierda.

56

Unidad4.ElagentedeSQLServer.

16. EnelpaneldedefinicindepasospulseelbotnNuevo.Esteprimerpasoserel
encargado de obtener la relacin de productos de la tabla Production.Product.
Configureelpasotalycomosemuestraacontinuacin.

17. Para comprobar que la consulta ha sido escrita correctamente pulse el botn
Analizar.EnelpaneldelaizquierdaseleccioneelelementoAvanzado.
18. Enelsiguientepanelindicarelarchivoquealmacenarelresultadodeejecutarla
sentencia TSQL y deber indicar tambin qu ocurrir cuando el trabajo finalice
conxitooseproduzcaunerror.UnavezhayaterminadopulseelbotnAceptar.

57

Unidad4.ElagentedeSQLServer.

19. El segundo paso de este trabajo copiar el archivo generado al recurso


\\srvcurso\mariafiles.Paraello,enelpaneldedefinicindepasospulseelbotn
Nuevo. Configure el paso tal y como se muestra en la imagen y pulse el botn
Aceptar.

20. Laventanadepropiedadesdeltrabajodebertenerunaspectosimilaraeste:

58

Unidad4.ElagentedeSQLServer.

21. PulseelbotnAceptarparacerrarlaventana.
Importante: Observe que ambos pasos se van a ejecutar con las credenciales
establecidasenlacuentadelserviciodelAgenteSQL.Debidoaqueestacuentatiene
lospermisossuficientesenelrecursoJobFiles,elprimerpasoseejecutarsinerrores.
SinembargodichacuentanotienepermisosdeescrituraenelrecursoMariaFilespor
loqueelsegundopasonoseejecutarcorrectamente.Esnecesarioconseguirqueel
segundo paso se ejecute en un contexto de seguridad distinto y aqu es donde
intervienenlascredencialesyloquesedenominancuentasproxy.
22. Para ejecutar el trabajo haga clic con el botn derecho sobre el nodo
correspondiente al trabajo en el explorador de objetos y seleccione la opcin
Iniciartrabajoenelpaso.

59

Unidad4.ElagentedeSQLServer.

23. Seleccioneelpaso1ypulseelbotnInicio.

24. Debidoalproblemadepermisosmencionadoanteriormentelasiguienteventana
informadequehaocurridounerror.PulseelbotnCerrar.

25. ParavereldetalledelerroresnecesariocomprobarelHistorialdeltrabajo.Enel
mencontextualasociadoaltrabajoseleccionelaopcinVerhistorial.

60

Unidad4.ElagentedeSQLServer.

26. Despliegue el primer y nico elemento que aparece y que se corresponde con la
ltima ejecucin del trabajo. De esta forma podr ver informacin detallada de
cada uno de los pasos. Seleccione a continuacin el paso donde ha ocurrido el
error y compruebe en el panel inferior el detalle del mismo. Cuando termine de
revisarlainformacinpulseelbotnCerrar.

27. Paraevitarqueesteerrorseproduzcahayqueempezardefiniendounacredencial.
Paraello,enelexploradordeobjetosdespliegueelnodoSeguridadyhagacliccon
el botn derecho del ratn sobre el elemento Credenciales. Seleccione la opcin
Nuevacredencial.

61

Unidad4.ElagentedeSQLServer.

28. Indiqueunnombreparadichacredencialyunacuentadefinidaenelequipooenel
dominio. En este caso la credencial estar asociada a la cuenta de usuario
SRVCURSO\Maria.UnavezhayaterminadopulseelbotnAceptar.

29. Enelexploradordeobjetos,despliegueelnodoServidoresproxyqueseencuentra
dentrodelelementoAgenteSQLServer.Observequecadaunodelosnodosque
aparecen estn relacionados con los distintos tipos de pasos que se pueden
ejecutardentrodeuntrabajo.Estopermitirasignarcredencialesdistintasacada
tipodepaso.HagaclicconelbotnderechodelratnsobreelelementoSistema
operativo(cmdExec)yseleccionelaopcinNuevoproxy.

62

Unidad4.ElagentedeSQLServer.

30. Introduzca la informacin que aparece en la siguiente imagen y pulse el botn


Aceptar.

31. A continuacin hay que editar nuevamente el trabajo para configurar el segundo
pasodefinidoconanterioridad.ParaellohagadobleclicsobreeltrabajoExportar
Productos. En el panel de la izquierda seleccione el elemento Pasos y a
continuacinhagadobleclicsobreelpasodenominadoCopiararchivo.
32. En la lista desplegable Ejecutar como seleccione la cuenta proxy definida con
anterioridadypulseelbotnAceptar.

63

Unidad4.ElagentedeSQLServer.

33. Parafinalizarejecutenuevamenteeltrabajotalycomoseindicaenlospuntos22y
23deestaprcticaycompruebeacontinuacinquesehangeneradolosarchivos
enlascarpetascorrespondientes.

Leccin2.Operadoresynotificaciones.
Los operadores pueden recibir alertas y notificaciones relativas a los trabajos. Puede
incluso asociar el operador con mltiples usuarios indicando una cuenta de correo
electrnicodegrupo.
Despusdeestaleccinsercapazde....
Registrarunoperador.
Enviarnotificacionesaunoperadorregistrado.
Operadores.
Losoperadoressoncuentasespecialesalasqueselespuedeenviarunanotificacin
cuando se desencadenen alertas y cuando los trabajos programados tengan xito,
fallen o simplemente finalicen. Una vez registrados los operadores pueden ser
activadosodesactivadosdecaraalarecepcindenotificaciones.
Notificaciones.
Losoperadorespuedenrecibirnotificacionesportresvas:
Mensajedered(NETSEND).
Correoelectrnico.
Mensajeaunlocalizador.
Sepuedeestablecerademsuncalendariosemanalindicandolashorasenlasqueest
activoelserviciodellocalizador.

64

Unidad4.ElagentedeSQLServer.

Prctica.Registrarunoperador.
1. InicieSQLServerManagementStudioydespliegueelnodoAgenteSQLServer.
2. HagaclicconelbotnderechodelratnsobreelnodoOperadoresyseleccionela
opcinNuevooperador.

3. Asigne un nombre al operador e indique el modo en que le sern enviadas las


notificaciones. En este ejemplo se utiliza NET SEND como modo de envo. Es
necesariohabilitareiniciarelservicioMessenger(Mensajero)enelservidorpara
permitirestetipodenotificaciones.ParaterminarpulseelbotnAceptar.

65

Unidad4.ElagentedeSQLServer.

4. Elsiguientepasoconsistirenmodificareltrabajodefinidoenlaprcticaanterior
paraqueeloperadorMararecibaunanotificacinunavezfinalicelaejecucinde
latarea.Paraellovayaaladefinicindeltrabajohaciendodobleclicsobrel.
5. En el panel de la izquierda seleccione el nodo Notificaciones e indique la accin
quesevaarealizartalycomosemuestraenlasiguienteimagen:

6. PulseelbotnAceptar.
7. Cierrelaventanadepropiedadesdeltrabajoyejectelo.Deberaveruncuadrode
dilogocomoeste:

Leccin3.Alertas.
Gracias a las alertas los administradores de base de datos no necesitan monitorizar
continuamente los servidores SQL Server para detectar determinadas situaciones
comopuedeseruntamaoelevadodelosarchivosdedatosydelogounusoexcesivo
derecursosdelsistemacomolamemoria.
Despusdeestaleccinsercapazde....
Enumerarlosdistintostiposdealertas.
DefiniralertasbasadaseneventosdeSQLServer.
DefiniralertasbasadasencondicionesderendimientodeSQLServer.

66

Unidad4.ElagentedeSQLServer.

Definicinytipos.
Una alerta se puede definir como una respuesta automatizada a un evento. Los
posibleseventosquesepuedentratarsepuedenclasificaren3tipos:
EventosdeSQLServer.
CondicionesderendimientodeSQLServer.
EventosdeWMI(WindowsManagementInstrumentation).
Enfuncindeltipodeeventolosparmetrosempleadosenladefinicindelaalerta
variarn.
AlertasbasadaseneventosdeSQLServer.
Ademsdelosscriptsgeneradosporelusuario,elpropiomotordeSQLServergenera
mensajes informativos y de error que pueden ser tratados mediante las alertas. Se
consideran errores cuando el nivel de gravedad es igual o superior a 16. El nivel de
gravedad, cuando se trata de scripts de usuario, se indica mediante la instruccin
RAISERROR.Porejemplo,lasiguienteinstruccingenerarunmensajedeinformacin
indicandoqueunadeterminadatareahafinalizado:
RAISERROR ('Ha finalizado el proceso', 10, 1)

Enelejemploanteriorelnmero10indicalagravedadyel1indicaunvalordeestado
quepuedeayudarporejemploadistinguirunmismoerrorendistintasseccionesdeun
script.Generalmenteseempleael1.
Pruebe a ejecutar el script anterior en una ventana de consulta. Para ello abra SQL
Server Management Studio y haga clic en el botn Nueva consulta. A continuacin
escribalainstruccinRAISERRORanterioryejectelapulsandolateclaF5.

67

Unidad4.ElagentedeSQLServer.

Observeelmensajequeapareceenelpanelderesultados.Cambieahoraelnivelde
gravedadysustituyael10porelvalor16.Estevaloreselmscomnmenteutilizado
cuandodesdeunscriptdeusuariosepretendeinformardequehaocurridounerror
por una circunstancia determinada. Una vez modificado ejecute de nuevo la
instruccin.

El panel de resultados muestra el mismo mensaje, pero esta vez en color rojo y con
algomsdeinformacin.
Las alertas basadas en eventos de SQL Server slo sern interceptadas cuando el
suceso se escriba en el registro de eventos del sistema operativo. Para ello, la
instruccinRAISERRORpermiteelusodelmodificadorWITHLOG.
RAISERROR ('Ha ocurrido un error.', 16, 1) WITH LOG

Copielainstruccinanteriorypguelaenlaventanadeconsultasustituyendolaque
ejecut anteriormente. Una vez ejecutada compruebe el resultado en el Visor de
sucesos de Windows. Haga clic en Inicio>Ejecutar. Escriba el siguiente comando y
pulseelbotnAceptar:
eventvwr

68

Unidad4.ElagentedeSQLServer.

EnelpaneldelaizquierdaseleccioneelnodoAplicacin.ObservelacolumnaOrigen
del primer elemento que aparece en el panel de la derecha. El valor MSSQLSERVER
indicaqueelsucesohasidogeneradoporSQLServer.

Hagadobleclicsobreelsucesoparavereldetalle.

ObservequeenelapartadoDescripcinaparecelamismainformacinquesemuestra
enelpanelderesultadosdeSQLServerManagementStudioalejecutarlainstruccin
RAISERROR.
AlertasbasadasencondicionesderendimientodeSQLServer.
Al instalar SQL Server se generan una serie de contadores de rendimiento que
permitenmonitorizarlasinstanciasybasesdedatosinstaladasenunservidor.Existen

69

Unidad4.ElagentedeSQLServer.

contadoresderendimientoparaevaluaraspectoscomola memoria,elusodedisco,
transacciones,bloqueos,etc.
Lasalertasbasadasencondicionesderendimientoseactivancuandoalgunodeesos
contadoresalcanzaundeterminadovalor.
ParaexaminarloscontadoresderendimientodisponibleshagaclicenelmenInicio
>Ejecutaryescribaelsiguientecomando:
perfmon

Esto iniciar el Monitor de rendimiento de Windows. A continuacin, en la barra de


herramientassuperiorhagaclicenelbotn
contadoresdisponibles.

.Estoharquesemuestrelalistadelos

En el desplegable Objeto de rendimiento observar que aparecen grupos de


contadoresrelativosaSQLServeryalAgentedeSQL.Sonaquellosqueempiezanpor
SQLServer: y por SQLAgent:. Seleccione, por ejemplo, el elemento
SQLServer:Databases.

70

Unidad4.ElagentedeSQLServer.

Observecmolalistadecontadoresseactualizaparamostraraquellosquepermiten
monitorizar aspectos de bases de datos. En la lista de la derecha puede seleccionar
todaslasbasesdedatosoalgunaenconcreto.Unavezhayaterminadodeexaminar
loscontadorespulseelbotnCerrar.
AlertasbasadasenalertasdeeventodeWMI.
Windows Management Instrumentation (WMI) es una tecnologa que permite a los
administradores de sistemas consultar, monitorizar y cambiar aspectos de
configuracin de equipos de escritorio, servidores, aplicaciones, redes, etc. Los
administradoressuelenescribirscriptsparamonitorizarlossistemasyparaconseguir
asestarinformadoscuandodeterminadossucesosocurrenenunservidoroentorno.
ExisteunproveedordeeventosWMIparaSQLServerperoestmsalldelalcance
deestecursodescribirsufuncionamiento.Paramsinformacinconsultelasiguiente
pgina:http://msdn.microsoft.com/eses/library/ms180560.aspx.
Prctica.CrearunaalertadesucesoSQLServer.
ElobjetivodeestaprcticaesdefinirunaalertadesucesodeSQLServerasociadaa
los errores de gravedad 16 que ocurran en la base de datos AdventureWorks. Las
notificacionessernenviadasaloperadorregistradoenlaprcticaanterior.
1. InicieSQLServerManagementStudioydespliegueelnodoAgenteSQLServer.
2. Haga clic con el botn derecho del ratn sobre el nodo Alertas y seleccione la
opcinNuevaalerta.
3. Configurelaalertatalycomosemuestraenlasiguienteimagen:

71

Unidad4.ElagentedeSQLServer.

4. En el panel de la izquierda seleccione el elemento Respuesta e indique a qu


operadorsernenviadaslasnotificaciones.

5. EnelpaneldelaizquierdaseleccioneelelementoOpcioneseindiquequedesea
incluireltextodelerrorenelmensajequeseenvamedianteNETSENDypulseel
botnAceptar.

72

Unidad4.ElagentedeSQLServer.

6. Abraunanuevaventanadeconsultayescribayejecuteelsiguientescript:
USE ADVENTUREWORKS
GO
RAISERROR ('Ha ocurrido una excepcin en AdventureWorks', 16, 1) WITH LOG

7. Aparecerentonceselsiguientecuadrodedilogoinformandodelerror:

73

Unidad4.ElagentedeSQLServer.

Prctica.Crearunaalertadecondicinderendimiento.
El objetivo de esta prctica es definir una alerta basada en una condicin de
rendimiento.SetratadeconseguirquealoperadorMaralellegueunanotificacinde
cundolosarchivosdedatosdeAdventureWorksalcancenundeterminadotamaoen
KB.Enestaprcticasevaaestableceruntamaoqueestmuypordebajodeltamao
inicialdelosarchivosporloqueinmediatamentedespusdedefinirlaalertasedebe
generarlaprimeranotificacin.
1. InicieSQLServerManagementStudioydespliegueelnodoAgenteSQLServer.
2. Haga clic con el botn derecho del ratn sobre el nodo Alertas y seleccione la
opcinNuevaalerta.
3. Configurelaalertatalycomosemuestraenlasiguienteimagen:

4. ConfigurelaRespuesta.

74

Unidad4.ElagentedeSQLServer.

5. En el apartado Opciones es importante establecer un retardo entre respuestas


para que de esta forma no se enven notificaciones continuamente. En esta
prctica se establecer 1 minuto de retardo. Cuando finalice pulse el botn
Aceptar.

6. Inmediatamenterecibirlaprimeranotificacin.

75

Unidad4.ElagentedeSQLServer.

7. Sideseadejarderecibirnotificacionesmodifiquelaalertaestableciendounnuevo
valorparaelcontadorseleccionadoobiendesactivelaalerta.Paraello,desdeel
explorador de objetos, haga clic con el botn derecho del ratn sobre la alertay
seleccionelaopcinDeshabilitar.

8. AcontinuacinpulseelbotnCerrar.

76

Unidad5.Copiasdeseguridaddebasesdedatos.

Unidad5.Copiasdeseguridaddebasesdedatos.
La recuperacin ante posibles desastres es una de las tareas ms importantes que
cualquier administrador de base de datos debe saber ejecutar a la perfeccin. Esto
requiere de un diseo previo y de la realizacin de cuantas pruebas sean necesarias
paraevitarlaprdidadedatosencasodeproblemas.
Objetivosdeestaunidad.
Disearunplandecopiasdeseguridad.
Enumerarydescribirlosmodelosderecuperacindebasesdedatos.
Enumerarydescribirlostiposdecopiadeseguridadquesepuedenrealizaren
SQLServer2005.

Leccin1.Planificacindecopiasdeseguridad.
Definirunaestrategiacorrectadecopiasdeseguridadeselprimerpasoaseguirenel
diseo de un plan de recuperacin ante desastres y es lo que se va a tratar en esta
leccin.
Despusdeestaleccinsercapazde....
Describir los aspectos a tener en cuenta a la hora de crear una estrategia de
copiadeseguridadyrestauracin.
Disearunplandecopiasdeseguridad.
Paradisearunaestrategiadecopiadeseguridadyrestauracindebetenerencuenta
lossiguientesfactores:

Dequtipodebasededatosdeseahacerlacopiadeseguridad?
Quimportanciatienenlosdatos?
Culeslavolatilidaddelabasededatos?
Quhardwarehaydisponiblepararealizarlascopias?
Enqumomentosepuedenrealizarlascopiasdeseguridad?

Acontinuacinserespondeaestaspreguntas.
Tiposdebasesdedatos.
Lasbasesdedatosdeusuariogeneralmentecambianconmsfrecuenciaquelasbases
dedatosdesistema(master,modelymsdb).
Silabasededatosmasterfalla,lainstanciacompletaquedarainutilizada.Estabasede
datossufrecambioscadavezquesecreaunabasededatososehacenmodificaciones
en la configuracin de la instancia,de los inicios de sesin o de las propias bases de
datosensmismas.Cualquieradeestasmodificacionesobligaarealizarunacopiade
seguridaddemasterparaprotegerasesoscambios.

77

Unidad5.Copiasdeseguridaddebasesdedatos.

La base de datos msdb est relacionada con el Agente de SQL Server, por lo tanto,
cadavezquecreeomodifiquetrabajos,alertas,operadores,etc.deberrealizaruna
copiadeseguridaddeestabasededatos.
La base de datos model sirve como plantilla para la creacin del resto de bases de
datos.Sideseaestablecerunaseriedeopcionespordefectoparalasbasesdedatos
que se creen en una determinada instancia, modifique model y a continuacin haga
unacopiadeseguridad.
Importanciadelosdatos.
Enlamayoradeentornoshaydisponiblesbasesdedatosdedesarrolloenlaquese
realizanlaspruebasnecesariasantesdeaplicarcambiosenelentornodeproduccin.
Aunque suele ser recomendable realizar copias de seguridad de este entorno de
pruebas, est claro que la frecuencia con la que se realicen esas copias ha de ser
menorquelaaplicadaalentornodeproduccin.
Volatilidaddelosdatos.
Cuantomsfrecuentesseanloscambiossedicequelosdatossonmsvoltiles.En
funcindeestohayquedeterminarlafrecuenciadelascopiasdeseguridad.Unabase
dedatosdeslolecturapodrarequerirunacopiadeseguridadsemanal,mientrasque
una base de datos de pedidos necesitara de una copia de seguridad diaria o cada
ciertonmerodehoras.
Hardware.
Las copias de seguridad en cinta requieren de ms tiempo que las que se realizan
sobre disco. Si las polticas empresariales establecen que las cintas han de ser el
soportedebackup,cuantosmsdispositivosdecintaestndisponiblesmenortiempo
invertirSQLServerenlarealizacindelascopias.
Programacindelascopiasdeseguridad.
AunqueSQLServerpermiterealizarcopiasdeseguridadmientraslosusuariosestn
trabajando,loideal,sobretodocuandosetratadecopiasdeseguridadcompletas,es
buscarelmomentoenquelaactividaddelabasededatossealamsbajaposible.De
estaformasereduceeltiempoinvertidoenhacerlacopia.

Leccin2.Modelosderecuperacindebasesdedatos.
Despusdeestaleccinsercapazde....
Enumerarydescribirlosmodelosderecuperacindebasesdedatos.
Cambiarelmodeloderecuperacindeunabasededatos.
Modelosderecuperacin.
El modelo de recuperacin es una caracterstica de todas las bases de datos y que
puedesermodificadaencualquiermomentoenfuncindelasnecesidades

78

Unidad5.Copiasdeseguridaddebasesdedatos.

Losmodelosderecuperacindisponiblessontres:
Simple
Completo(Full)
Registromasivo(BulkLogged)
Modeloderecuperacinsimple.
Las bases de datos basadas en este modelo slo permiten copias de seguridad
completas y diferenciales, lo cual implica que slo podrn ser restauradas hasta el
ltimobackupcompletoodiferencialdequesedisponga.
Con este modelo no se permiten copias del registro de transacciones. Todos los
cambiosquesufrelabasededatossontrasladadosalosarchivosdedatoscuandoSQL
Server emite un checkpoint y una vez confirmados la informacin del log de
transacciones es irrelevante. Este es el modelo que menos tareas administrativas
requiereyesidealparalamayoradebasesdedatos.
Modeloderecuperacincompleto.
Con este modelo se permite cualquier tipo de copia de seguridad: completa,
diferencial y de registro de transacciones. Se emplea en bases de datos con
informacincrticaqueencasodedesastrepodranrequerirlarecuperacinhastaun
momentodeterminadoeneltiempo.
El registro de transacciones almacena informacin detallada acerca de todas las
operacionesqueconllevancambiosenlabasededatos.Lainformacindelregistroes
fundamental y slo dejara de serlo en el momento en que se haga un backup
completo,diferencialodelpropiologdetransacciones.
Enestemodelohayquetenerencuentaelcrecimientodelosarchivosderegistrode
transacciones ya que si no hay control por parte del administrador este log puede
crecer hasta ocupar el espacio total del disco. Si esto ocurre, cualquier operacin de
escrituraenlabasededatosprovocaraunerror.
Modeloderecuperacinderegistromasivo.
Esteesunmodeloquetambinpermitecopiasdeseguridadcompletas,diferencialesy
delregistrodetransacciones.Sinembargosuusosloestrecomendadoparamejorar
el rendimiento de ciertas operaciones de carga masiva de datos, como por ejemplo
unaimportacinutilizandolaherramientabcpolainstruccinBULKINSERT.
Elfuncionamientodeestemodeloesmuysimilaralmodelocompletoenelsentidode
que registra de forma detallada la mayora de operaciones. Sin embargo, las cargas
masivas de datos en el modelo completo generan muchsima informacin en el log.
Esto no ocurre en el modelo de registro masivo debido a que las operaciones como
BULK INSERT no se registran de forma detallada. Lo que SQL Server guarda es

79

Unidad5.Copiasdeseguridaddebasesdedatos.

informacinacercadequextensioneshansidomodificadaspordichaoperacin,en
lugardeloscambiosgeneradosporlamisma.
Estemodelohadehabilitarseantesdeejecutarunaoperacindecargamasivayuna
vezfinalizadastahabrdeestablecerotromodeloderecuperacin.
Cambiarelmodeloderecuperacin.
El modelo de recuperacin, como se ha dicho antes, se puede cambiar en cualquier
momentopudindosedarlassiguientessituaciones.
Pasardemodelosimpleamodelocompletooderegistromasivo.Esnecesario
hacer un backup completo de la base de datos para que el nuevo modelo
comienceaestarvigente.
Alternar entre modelo completo y modelo de registro masivo. Como se ha
dicho anteriormente el modelo de registro masivo slo debe utilizarse de
manera temporal. Se recomienda hacer un backup adicional del log de
transaccionesantesdecambiaraestemodeloyotrojustodespusdelcambio
almodelocompletounavezfinalizadalaoperacindeactualizacinmasiva.
Pasardemodelocompletooderegistromasivoamodelosimple.Estasituacin
no suele ser necesaria. En cualquier caso antes del cambio de modelo sera
convenientehacerunbackupdellogdetransacciones.
LainstruccinTSQLempleadaparacambiarelmodeloderecuperacineslasiguiente:
-- Cambiar a modelo simple
ALTER DATABASE AdventureWorks SET RECOVERY SIMPLE;
-- Cambiar a modelo completo
ALTER DATABASE AdventureWorks SET RECOVERY FULL;
-- Cambiar a modelo de registro masivo
ALTER DATABASE AdventureWorks SET RECOVERY BULK_LOGGED;

Nota: habr observado que el doble guin ( ) se emplea en TSQL para indicar
comentariosenlneadentrodeunscript.
Prctica.Cambiarelmodeloderecuperacin.
En esta prctica cambiar el modelo de recuperacin de la base de datos
AdventureWorksutilizandoSQLServerManagementStudio.
1. Inicie SQL Server Management Studio, conctese a la instancia por defecto y
despliegueelnodoBasesdedatos.Hagaclicconelbotnderechodelratnsobre
labasededatosAdventureWorksyseleccionelaopcinPropiedades.
2. EnelpaneldelaizquierdaseleccioneelelementoOpciones.Acontinuacin,enel
panel de la derecha indique un nuevo modelo de recuperacin. AdventureWorks
tiene establecido el modo completo. Cmbielo a modo simple tal y como se
muestraenlaimagenypulseelbotnAceptar.

80

Unidad5.Copiasdeseguridaddebasesdedatos.

Leccin3.Dispositivosytiposdecopiadeseguridad.
Para definir correctamente un plan de recuperacin es necesario comprender los
distintostiposdecopiasdeseguridadquesepuedenrealizarenSQLServer2005para
aspoderelegirelquemejorseadapteasusnecesidades.Lascopiasdeseguridadse
almacenanendiscooencintayselesdenominacomnmentedispositivosdecopia.
Despusdeestaleccinsercapazde....
Definirdispositivosdecopiadeseguridadydescribirventajaseinconvenientes
decadatipo.
Describir los distintos tipos de copia de seguridad que se pueden realizar en
SQLServer2005.
EnumerarlasinstruccionesyparmetrosTSQLquepermitenrealizarcopiasde
seguridad.
Comprenderlautilidaddelbackupdelacoladellog(taillog).
Dispositivosdecopia.
Almacenamientoendiscoocinta.
Las copias de seguridad pueden almacenarse en disco o en cinta. La ventaja del
almacenamientoendiscoconrespectoaldecintaeselrendimiento.Losdispositivos
decintasonmuchomslentos,sinembargopermitenlaportabilidaddelascopiasde
seguridad,locualenmuchoscasosesimprescindibleparanoalmacenarlascopiasen
el mismo sitio donde estn los datos, ya que en caso por ejemplo de incendio o
inundacinseperderatodo.

81

Unidad5.Copiasdeseguridaddebasesdedatos.

Losdispositivosdecopiaendiscoapuntanaarchivosfsicosquepuedenencontrarse
en el propio servidor o en un recurso compartido de red. En el siguiente ejemplo se
realiza una copia de seguridad de la base de datos AdventureWorks en el archivo
C:\Backups\AW.bak:
BACKUP DATABASE AdventureWorks TO DISK = 'C:\Backups\AW.bak'

En el caso de copias en cinta, el dispositivo fsico debe estar conectado al servidor


donderesidelainstanciadeSQLServer.Silacintasellenamientrasserealizalacopia
de seguridad SQL Server solicita al operador que introduzca una nueva cinta para
continuarconlacopia.Conlasiguienteinstruccinserealizaraunacopiadeseguridad
deAdventureWorksenlaunidaddecintainstaladaenelservidor:
BACKUP DATABASE AdventureWorks TO TAPE = '\\.\Tape0'

Dispositivosdecopialgicos.
Un dispositivo de copia lgico es bsicamenteun alias definido en la instancia y que
referenciaaunarchivofsicoendiscooaunacinta.Deestaforma,enlainstruccin
BACKUP o RESTORE puede especificarse dicho alias en lugar de la ruta completa del
archivo,locualfacilitalatarea.
LosdispositivosdecopialgicossepuedencrearutilizandoSQLServerManagement
Studioobienmedianteelprocedimientoalmacenadodesistemasp_addumpdevice.El
siguiente script genera el dispositivo lgico AWDevice asociado al archivo
C:\Backups\AW.bak.
USE master;
GO
EXEC sp_addumpdevice 'disk', AWDevice, 'c:\Backups\AW.bak';

Tiposdecopiadeseguridad.
Copiadeseguridadcompleta.
Se almacena una copia completa de la base de datos incluyendo todos sus objetos.
Estetipodecopiadeseguridaddebeserelpuntodepartidaencualquierestrategiade
recuperacinqueseimplemente.
Copiadeseguridaddiferencial.
En este tipo de copia se almacenan solamente aquellos datos que han sido
modificadosdesdelaltimacopiadeseguridadcompleta.Pararealizarlasseutilizala
instruccinBACKUPDATABASEconelmodificadorWITHDIFFERENTIAL.
Copiadeseguridaddelregistrodetransacciones.
PararealizarestetipodecopiasseutilizalainstruccinBACKUPLOG.Seempleaenlos
modelosderecuperacincompletoyderegistromasivo.Enestetipodecopiaslose
almacena informacin del log de transacciones, es decir, informacin acerca de los
cambiosquehasufridolabasededatos.Unavezquesehahechocopiadeseguridad
del log, ste es limpiado o truncado para evitar que crezca indefinidamente,

82

Unidad5.Copiasdeseguridaddebasesdedatos.

eliminando aquellas transacciones que han sido confirmadas o canceladas. Por lo


tanto, cada copia de seguridad del registro de transacciones almacena los cambios
sufridosporlabasededatosdesdeelltimobackupdellogodesdeelltimobackup
completoodiferencial.
Existeuntipodecopiadelregistrodetransaccionesdenominadobackupdelacoladel
log(taillogbackup).Estetipodecopiaserealizajustoantesdecomenzarunproceso
derecuperacinyenellaserecogelapartedellogdelaquetodavanosehahecho
backup. Para realizar esta copia hay que utilizar la opcin NO_TRUNCATE en la
instruccinBACKUPLOG.
CopiadeseguridaddearchivosyFilegroups.
Este tipo de copia se emplea en bases de datos de gran tamao, de forma que se
pueden crear tareas de copia de seguridad de solamente algunos de los archivos o
filegroupsqueconformanlabasededatos.
Se utiliza tambin la instruccin BACKUP DATABASE con los modificadores FILE y
FILEGROUPparaindicarlosarchivosyfilegroupsdelosquesedeseahacerlacopia.
Copiadeseguridadparcial.
En esta copia se recogen los datos del filegroup primario y de cada filegroup que se
encuentre en modo lecturaescritura. Tambin se pueden aadir de forma explcita
otrosfilegroupsqueseencuentrenenmodoslolectura.
Para realizar esta copia se emplea la instruccin BACKUP DATABASE con el
modificadorREAD_WRITE_FILEGROUPS.
Copiadeseguridadslocopia(copyonlybackup).
Este tipo de copia no interfiere en la secuencia de backup vigente. Se emplea para
generar copias de seguridad adicionales a las que ya se realizan normalmente y que
suelenformarpartedeplanesdemantenimientoestablecidos.Sepuedenhacertanto
dedatoscomodellogutilizandolasinstruccionesBACKUPDATABASEoBACKUPLOGy
aadiendoenamboscasoslaopcinCOPY_ONLY.
Prctica.CopiadeseguridaddeAdventureWorks.
ElobjetivodeestaprcticaesutilizarSQLServerManagementStudioparaejecutary
obtener el script correspondiente a una copia de seguridad completa. El script
generadopuedeutilizarseparacrearuntrabajoprogramado.
1. Inicie SQL Server Management Studio y conctese a la instancia por defecto
utilizandolaseguridadintegradadeWindows.
2. El primer paso consistir en crear un dispositivo lgico asociado a un archivo en
disco. Para ello despliegue el nodo Objetos de servidor, haga clic con el botn
derecho del ratn sobre el elemento Dispositivos de copia de seguridad y
seleccionelaopcinNuevodispositivodecopiadeseguridad.
83

Unidad5.Copiasdeseguridaddebasesdedatos.

3. Indique un nombre de dispositivo. La ruta que aparece por defecto tiene los
permisosnecesariosparaquelacuentadeserviciodeSQLServerpuedagenerar
el archivo. El nombre de archivo se escribe de forma automtica a medida que
escribeelnombredeldispositivo.CuandohayaterminadopulseelbotnAceptar.

4. DespliegueelnodoBasesdedatosyhagaclicconelbotnderechodelratnsobre
AdventureWorks. Dentro del elemento Tareas seleccione la opcin Copia de
seguridad.

84

Unidad5.Copiasdeseguridaddebasesdedatos.

5. En elapartado Origen indique quedesea hacer una copiade seguridad completa


delabasededatosAdventureWorks.

6. EnelapartadoConjuntodecopiadeseguridadindiqueunnombrequeidentifique
lacopiayunadescripcin. Indique tambinqueelconjuntodecopia(mediaset)
caducar dentro de 7 das. De esta forma quedar protegido ante escrituras
accidentales.

7. EnelapartadoDestinoelimineeldispositivoqueaparece.Paraellopulseelbotn
Quitar.PulseacontinuacinelbotnAgregaryseleccioneeldispositivodecopia
creadoanteriormente.PulseelbotnAceptar.

85

Unidad5.Copiasdeseguridaddebasesdedatos.

8. ElapartadoGeneraldelaventanadeconfiguracindecopiadeseguridaddeber
quedartalycomosemuestraenlasiguienteimagen.Enelpaneldelaizquierda
seleccioneelelementoOpciones:

9. En el apartado Sobrescribir medios seleccione la segunda opcin. De esta forma


podr etiquetar el conjunto de medios. Si en copias de seguridad posteriores
quiereasegurarsedequeelconjuntodemediossobreelquevaarealizarlacopia
eselcorrectodebermarcarlaopcinComprobarnombredeconjuntodemedios
y fecha de caducidad del conjunto de copia. A continuacin deber indicar el
nombredelconjunto,queenestecasoesAdventureWorksMediaSet.

10. EnelapartadoConfiabilidadindiquequedeseacomprobarlacopiadeseguridad
una vez haya finalizado. De esta forma garantizamos la integridad del producto
obtenido.

11. Finalmenteelpaneldeopcionesdebequedaras:

86

Unidad5.Copiasdeseguridaddebasesdedatos.

12. Para generar el script asociado a la tarea que est configurando haga clic en el
botndesplegableGenerarsecuenciadecomandossituadoenlapartesuperiorde
la ventana. Esto har que se abra una ventana de consulta en SQL Server
ManagementStudioconelscriptasociadoaestatareadecopia.
13. PararealizarlacopiadeseguridadpulseelbotnAceptar.Debidoaltamaodela
basededatosAdventureWorkslacopiasepuededemorarunossegundoshasta
quefinalmenteaparecelasiguienteventana:

14. PulseelbotnAceptar.
15. Reviseelscriptysilodeseagurdeloparausosposteriores.

87

Unidad5.Copiasdeseguridaddebasesdedatos.

88

Unidad6.Restauracindebasesdedatos.

Unidad6.Restauracindebasesdedatos.
El proceso de restauracin de una base de datos sobrescribe una base de datos
existenteocreaunanuevacopiaapartirdelainformacinalmacenadaenunacopia
de seguridad realizada con anterioridad. Este proceso variar en funcin sobre todo
delmodeloderecuperacinestablecido,yaqueestodeterminalostiposdecopiade
seguridadquepuedenrealizarse.
Objetivosdeestaunidad.
Definirestrategiasderecuperacin.
ConocerlasentenciaRESTOREylosestadosporlosquepasaunabasededatos
duranteelprocesoderestauracin.
Entendercmofuncionanlossnapshotsdebasesdatosyaprenderautilizarlos
como medida de proteccin ante desastres complementaria a las copias de
seguridad.
Crear bases de datos para entornos de desarrollo a partir de copias de
seguridaddeentornosdeproduccin.

Leccin1.Estrategiasderecuperacin.
La estrategia de recuperacin viene determinada en gran parte por el modelo de
recuperacin establecido en la base de datos. Como se ha visto anteriormente el
modelo de recuperacin define cmo son registradas las transacciones, si se puede
hacer o nocopia de seguridad dellogy por lo tanto tambin determina la forma en
quelasbasesdedatospuedenserrestauradas.
Despusdeestaleccinsercapazde....
Conocer los distintos estados por los que pasa una base de datos durante el
procesoderestauracin.
Describir distintas secuencias de restauracin en funcin del modelo de
recuperacin.
Estadosdelabasededatos.
Mientrasunabasededatosestsiendorestauradalasaplicacionesgeneralmenteno
puedenaccederaellaysilohacenslopodrnrealizaroperacionesdelectura.Este
comportamientoseestableceenlainstruccinRESTORElacualadmite,entreotros,un
parmetroqueindicaenquestadoquedalabasededatosdespusdeunaoperacin
de restauracin. Tenga en cuenta que un proceso de restauracin puede llevar
implicadalaejecucindemsdeunainstruccinRESTORE.Esteparmetroadmitetres
posiblesvalores:
RECOVERY
NORECOVERY
STANDBY

89

Unidad6.Restauracindebasesdedatos.

RECOVERY.
Se empleaen la ltima instruccin RESTORE del proceso de restauracin. La base de
datos queda totalmente operativa y por lo tanto no admite posteriores
recuperaciones. Si los resultados de la restauracin no son los esperados habra que
iniciarnuevamenteelprocesocomenzandoporunacopiadeseguridadcompleta.
NORECOVERY.
Con este parmetro se indica a SQL Server que no ha terminado el proceso de
restauracinyquetienelaintencinderestaurarcopiasdeseguridadposterioresala
actual.Labasededatosnoesaccesibleyslopermiteoperacionesderestauracin.Se
emplea cuando adems de copias de seguridad completas dispone de copias
diferencialesy/odelregistrodetransacciones.
STANDBY.
La base de datos queda en modo slo lectura. Se emplea cuando, despus de una
operacinderestauracin,deseaconsultarelestadodelabasededatosparaversilos
resultadossonlosesperadosydeestaformadecidirsicontinaonoconelprocesode
restauracin. Este parmetro obliga a indicar un archivo donde SQL Server escribe
informacinque,deescribirlaenlabasededatos,haraquestanofueraaccesible,
consiguiendo el mismo comportamiento que el que se consigue utilizando el valor
NORECOVERY.
Enlossiguientesapartadosyenlaprcticadeestemduloverdistintosejemplosde
usodeestosparmetros.
Secuenciasderestauracin.
Larestauracindeunabasededatossedividebsicamenteendosprocesos:
Restauracin. En este proceso la base de datos es sobrescrita con la
informacinalmacenadaenunaovariascopiasdeseguridad.
Recuperacin.Unavezrestauradoslosdatos,enesteprocesosebuscadejarla
base de datos en un estado consistente. Esto se consigue confirmando las
transacciones finalizadas correctamente y deshaciendo aquellas que estaban
pendientesdeconfirmarenelmomentodehacerlacopiadeseguridad.
Unasecuenciaderestauracineselordenenqueserealizanlastareasnecesariaspara
conseguirdejarlabasededatosenunestadoconsistente.Acontinuacinsedescriben
distintassecuenciasparacadaunodelosmodelosderecuperacin.

90

Unidad6.Restauracindebasesdedatos.

Modeloderecuperacinsimple.
Al no existir copias de seguridad del registro de transacciones la restauracin debe
comenzar a partir de alguna copia de seguridad completa, generalmente la ltima, y
continuarconalgunacopiadeseguridaddiferencialencasodequesehubieranhecho.
Recuerde que una copia de seguridad diferencial recoge aquellos cambios que ha
sufridolabasededatosdesdeelltimobackupcompleto.
Sislodisponedecopiasdeseguridadcompletas,elprocesoderestauracinenTSQL
seimplementaradelasiguienteforma:
RESTORE DATABASE <database> FROM <full_backup> WITH RECOVERY

Y en el caso de que disponga de una copia de seguridad diferencial debera


implementarloas:
RESTORE DATABASE <database> FROM <full_backup> WITH NORECOVERY
RESTORE DATABASE <database> FROM <differential_backup> WITH RECOVERY

ObserveelusoquesehacedelosmodificadoresNORECOVERYyRECOVERY.
Modeloderecuperacincompleto.
En este modelo la secuencia de restauracin se complica ya que aqu s se puede
disponer de copias de seguridad del registro de transacciones, lo cual permitir
recuperarlabasededatoshastaunmomentodadoeneltiempo.
Es en este modelo donde tiene sentido hacer copia de seguridad de la cola del log
antes de comenzar a restaurar la base de datos. Recuerde que este tipo de copia
almacenalaparteactivadellogdelacualannosehahechocopiadeseguridad.
En el caso ms complejo, por lo tanto, la secuencia de restauracin comenzara
haciendo backup de la cola del log. A continuacin habra que restaurar, y en este
orden,lassiguientescopias:
Laltimacopiacompleta,
laltimacopiadiferencial,
cada una de las copias del registro de transacciones posteriores a la copia
diferencial
ylacopiadeseguridaddelacoladellog
EnTSQLseindicaradelasiguienteforma:
BACKUP LOG <database> TO <tail_log_backup> WITH NO_TRUNCATE
RESTORE DATABASE <database> FROM <full_backup> WITH NORECOVERY
RESTORE DATABASE <database> FROM <differential_backup> WITH NORECOVERY
RESTORE LOG <database> FROM <log_backup1> WITH NORECOVERY
RESTORE LOG <database> FROM <log_backup2> WITH NORECOVERY
RESTORE LOG <database> FROM <log_backupn> WITH NORECOVERY
RESTORE LOG <database> FROM <tail_log_backup> WITH RECOVERY

Esteejemplorestauraraabsolutamentetodaslastransaccionesrealizadasenlabase
de datos hasta el momento de hacer la copia de la cola del log. Puede ocurrir sin
91

Unidad6.Restauracindebasesdedatos.

embargoquelarestauracinvengaprovocadaporunaoperacinquehacorrompido
la base de datos (una actualizacin incorrecta, por ejemplo) y por lo tanto no sera
conveniente restaurar todo. Es en estos casos donde tiene sentido la restauracin
hasta un momento concreto en el tiempo y esto se consigue utilizando la opcin
STOPATenlainstruccinRESTORE.Convienehacerusodeestaopcinencadaunade
las instrucciones de restauracin que componen la secuencia. A continuacin se
muestraunejemplo:
BACKUP LOG <database> TO <tail_log_backup> WITH NO_TRUNCATE
RESTORE DATABASE <database> FROM <full_backup> WITH STOPAT <time>, NORECOVERY
RESTORE DATABASE <database> FROM <differential_backup> WITH STOPAT <time>, NORECOVERY
RESTORE LOG <database> FROM <log_backup1> WITH STOPAT <time>, NORECOVERY
RESTORE LOG <database> FROM <log_backup2> WITH STOPAT <time>, NORECOVERY
RESTORE LOG <database> FROM <log_backupn> WITH STOPAT <time>, NORECOVERY
RESTORE LOG <database> FROM <tail_log_backup> STOPAT <time>, WITH RECOVERY

Modeloderecuperacinderegistromasivo(bulklogged).
Laformaderestaurarbasesdedatosenestemodeloesexactamentelamismaquela
que se emplea en el modelo completo. La nica diferencia radica en que en este
modelo,siunatransaccindeactualizacinmasiva(BULKINSERTporejemplo)fallara,
stanopodrarestaurarsehastaunmomentoconcretoeneltiempo.

Leccin2.Databasesnapshot.
EstaesunadelasnovedadesdeSQLServer2005,laposibilidaddecrearunsnapshot
delabasededatos.Seempleaparavariospropsitosyentreellosseencuentraelde
utilizarlocomomedidadeseguridadanteposiblesdesastres.
Despusdeestaleccinsercapazde....
Describirelusoyfuncionamientodeunsnapshotdebasededatos.
Restaurarunabasededatosapartirdeunsnapshot.
Quesunsnapshotycmofunciona?
Bsicamente se puede definir como una vista de slo lectura de una base de datos.
Podradecirsequeesunafotografadelabasededatosenelmomentoenqueel
snapshotescreado.Aunquesepuedeemplearparalarecuperacindeinformacinen
casodedesastre,lossnapshotsnuncadebensustituiralascopiasdeseguridad,yaque
nocontienentodaslasfilasdelabasededatosapartirdelacualsecrea.
En primer lugar, un snapshot es una base de datos de slo lectura y como tal, para
crearlaseemplealainstruccinCREATEDATABASE:
CREATE DATABASE AWSnapshot ON
(NAME='AdventureWorks_Data', FILENAME='C:\Archivos de programa\Microsoft SQL
Server\MSSQL.1\MSSQL\Data\AWSnapshot_Data.ss')
AS SNAPSHOT OF AdventureWorks

En este ejemplo se muestra la creacin de un snapshot llamado AWSnapshot, cuyo


nicoarchivo(AWSnapshot_Data.ss)estbasadoenelarchivoAdventureWorks_Data
delabasededatosAdventureWorks.Siestabasededatostuvieramsarchivoshabra
queespecificarlostodos.
92

Unidad6.Restauracindebasesdedatos.

Unsnapshotinicialmenteestvacoeirrecogiendoinformacinamedidaquelabase
de datos de origen sufra modificaciones. Esta tecnologa se denomina copyonwrite.
Cuandounapginadedatosenlabasededatosdeorigenesmodificadaporprimera
vez, la imagen original de esa pgina se copia al snapshot. Las modificaciones
posterioresquesufralamismapginayanoprovocaranqueserealiceestacopia.
Lasconsultasemitidascontraelsnapshotdevolvernporlotantolainformacindelas
pginas que han sido modificadas despus de ser creado el snapshot y adems, si la
consultasolicitarapginasquenohansidomodificadas,stassernobtenidasdesdela
base de datos de origen dando as la impresin de que el snapshot contiene
absolutamentetodaslaspginas.
Restaurardatosapartirdeunsnapshot.
Los snapshots son ideales para recuperar informacin en caso de acciones que
provoquenelborradooactualizacinaccidentaldefilas,oinclusoborradodetablas.
Larestauracinenestoscasosapartirdeunsnapshotesmuchomsgilquehacerlo
desdeunacopiadeseguridad.
Restaurarfilasborradas.
Supongaporejemploqueunusuariooaplicacinhaejecutadoporerrorlasiguiente
instruccin:
USE AdventureWorks
GO
DELETE FROM Sales.StoreContact

Para recuperar las filaseliminadasa partir delsnapshot deberaejecutar la siguiente


instruccin:
USE AdventureWorks
GO
INSERT INTO Sales.StoreContact
SELECT * FROM AWSnapshot.Sales.StoreContact

Deshacerunaactualizacin.
Suponga que desea actualizar el precio del producto cuyo cdigo es el 995, pero al
escribir la instruccin se equivoca en el operador y actualiza el precio de todos
aquellosproductoscuyocdigoesmayorque995:
USE AdventureWorks
GO
UPDATE Production.Product
SET ListPrice = ListPrice * 1.5
WHERE ProductID > 995

Parasolucionarelerrordeberahacerlosiguiente:
USE AdventureWorks
GO
UPDATE Production.Product
SET Production.Product.ListPrice = AWSS.ListPrice
FROM AWSnapshot.Production.Product AS AWSS
WHERE Production.Product.ProductID = AWSS.ProductID
and AWSS.ProductID > 995

93

Unidad6.Restauracindebasesdedatos.

Recuperarunobjetoeliminado.
Enestecaso,utilizandoSQLServerManagementStudio puedegenerarelscriptdel
objeto en el snapshot y a continuacin ejecutar dicho script en la base de datos de
origen.
Recuperarlabasededatosporcompleto.
Siloscambiossufridosenlabasededatoshansidomuchosylatareaderecuperacin
noseajustaaningunodelosescenariosanteriorespuedeserconvenienterecuperarla
base de datos en su totalidad a partir del snapshot. Para ello debera ejecutar el
siguientescript:
USE master
GO
RESTORE DATABASE AdventureWorks
FROM DATABASE_SNAPSHOT = 'AWSnapshot'

Prctica.Copiasdeseguridadyrestauracindeunabasededatos.
El objetivo de esta prctica es aprender a restaurar una base de datos a partir de
copiasdeseguridadcompletas,diferencialesydelregistrodetransacciones.
1. Inicie SQL Server Management Studio y conctese a la instancia por defecto
utilizando la seguridad integrada de Windows. Abra a continuacin el editor de
consultashaciendoclicenelbotnNuevaconsulta.
2. Enprimerlugarcreeunabasededatossobrelaquerealizarlaprctica.Paraello
copieypegueelsiguientescriptenlaventanadeconsultas.
CREATE DATABASE TestRestore

3. AcontinuacinejecuteelsiguientescriptparacrearunatablallamadaClientes.
USE TestRestore
GO
CREATE TABLE Clientes
(IDCliente int NOT NULL,
Nombre
nvarchar(255))

4. InserteunaovariasfilasendichatablautilizandolainstruccinINSERT.
INSERT Clientes VALUES (1, 'ALJ')
INSERT Clientes VALUES (2, 'JMD')

5. Con el siguiente script crear un dispositivo de copia asociado a un archivo en


disco.AsegresedequelacuentaconlaqueseejecutaelserviciodeSQLServer
tienepermisosdeescrituraenlacarpetaelegida:
USE master;
GO
EXEC sp_addumpdevice 'disk', 'device1', 'c:\backups\TestRestore.bak';

6. Ejecuteelsiguientescriptpararealizarunacopiadeseguridadcompletadelabase
dedatos:
BACKUP DATABASE TestRestore TO Device1

94

Unidad6.Restauracindebasesdedatos.

7. InserteacontinuacinalgunaotrafiladedatosenlatablaClientes.
INSERT Clientes VALUES (3, 'PLR')

8. Ejecuteelsiguientescriptpararealizarunacopiadeseguridaddiferencial:
BACKUP DATABASE TestRestore TO Device1 WITH DIFFERENTIAL

9. Inserteunanuevafila:
INSERT Clientes VALUES (4, 'MYF')

10. Ahorahagaunacopiadeseguridaddelregistrodetransacciones:
BACKUP LOG TestRestore TO Device1

11. Agregueunaltimafilaalatabla:
INSERT Clientes VALUES (5, 'RTO')

12. Ahorasupongaqueelarchivodedatossehadaadoporalgnmotivoynecesita
comenzarlasecuenciaderestauracin.Enprimerlugarhayqueempezarporhacer
unacopiadeseguridaddelacoladellog:
BACKUP LOG TestRestore TO Device1 WITH NO_TRUNCATE

13. Todaslascopiasdeseguridadhansidoalmacenadasenelmismodispositivo.Para
conocer el contenido del dispositivo y as poder elegir las copias de seguridad a
restaurarejecuteelsiguientescript:
RESTORE HEADERONLY FROM DEVICE1

14. Compruebe los resultados en el panel inferior y preste atencin a la columna


Position. Los valores que aparecen en ella son los que deber utilizar en el
parmetroFILEdecadainstruccinRESTORE.

95

Unidad6.Restauracindebasesdedatos.

15. La secuencia de restauracin debe comenzar a partir de la copia de seguridad


completa:
USE master
GO
RESTORE DATABASE [TestRestore] FROM Device1
WITH FILE = 1, NORECOVERY

16. Ydebercontinuarporlacopiadeseguridaddiferencial:
USE master
GO
RESTORE DATABASE [TestRestore] FROM Device1
WITH FILE = 2, NORECOVERY

17. A continuacin deber restaurar la copia de seguridad del registro de


transacciones:
RESTORE LOG [TestRestore] FROM Device1
WITH FILE = 3, NORECOVERY

18. Yporltimodeberrestaurarlacopiadeseguridadquehizodelacoladellogy
dejarlabasededatostotalmenteaccesible:
RESTORE LOG [TestRestore] FROM Device1
WITH FILE = 4, RECOVERY

Prctica.Crearunabasededatosparaunentornodedesarrollo.
Unaprcticamuycomneslacreacindebasesdedatosparaentornosdedesarrollo
y pruebas que sean una copia exacta de las que se emplean en el entorno de
produccin. La forma ms rpida y fiable de conseguir esto es a partir de copias de
seguridad.

96

Unidad6.Restauracindebasesdedatos.

1. Inicie SQL Server Management Studio y conctese a la instancia por defecto


utilizandolaseguridadintegradadeWindows.
2. DespliegueelnodoBasesdedatos.Acontinuacinhagaclicconelbotnderecho
del ratn sobre la base de datos TestRestore y seleccione la opcin Tareas
>Restaurar>Basededatos.

3. Elprimerpasoparaconseguirelobjetivoesindicarelnombredelanuevabasede
datos.Enlasiguienteventana,pordefecto,apareceelnombredelabasededatos
que hemos seleccionado en el explorador de objetos (TestRestore). Cmbielo e
indique el nombre de la nueva base de datos para el entorno de desarrollo
(TestRestore_Desarrollo):

97

Unidad6.Restauracindebasesdedatos.

4. Observe que en la ventana anterior aparecen las copias de seguridad realizadas


hasta el momento. Esta informacin es almacenada en la base de datos msdb y
facilitalastareasderestauracin.Seleccionetodaslascopiasmarcandolascasillas
deverificacinqueaparecenenlacolumnaRestaurar.
5. EnelpaneldelaizquierdaseleccioneelelementoOpciones.Observequeaparece
unalistaconlosnombresdelosarchivosdedatosylogdelanuevabasededatos.
Asegrese que los nombres que aparecen en la columna Restaurar como son
distintos a los de la base de datos TestRestore ya que podra correr el riesgo de
sobrescribirlabasededatosdelentornodeproduccin.Estonoocurresinoactiva
la opcin Sobrescribir la base de datos existente. Los nombres de arhivos
sugeridos
por
el
asistente
son
TestRestore_Desarrollo.mdf
y
TestRestore_Desarrollo_1.LDF. Por ltimo indique que desea dejar la base de
datostotalmenteoperativaseleccionandolaprimeraopcindelgrupoEstadode
recuperacin.

98

Unidad6.Restauracindebasesdedatos.

6. Genere la secuencia de comandos asociada a esta operacin haciendo clic en el


botn Generar secuencia de comandos de la parte superior de la ventana. Para
finalizarpulseelbotnAceptar.

7. Compruebe el script generado y cmo se hace uso del modificador MOVE


precisamentepararestaurarbasesdedatosenubicacionesdistintasalaoriginal.

99

Unidad6.Restauracindebasesdedatos.

100

Unidad7.LaseguridadenSQLServer2005.

Unidad7.LaseguridadenSQLServer2005.
Mejorar la seguridad fue uno de los principales objetivos del diseo de SQL Server
2005. De hecho todo el sistema deseguridad fue construido desde cero obviando lo
queyaestabaimplementadoenSQLServer2000.
Objetivosdeestaunidad.
Comprenderydescribirconceptoscomoprincipal,asegurableypermiso.
Implementarlaseguridadaniveldeinstancia.
Implementarlaseguridadaniveldebasededatos.
Conocerlascapacidadesdecifradomedianteelusodeclavesycertificados.

Leccin1.IntroduccinalaseguridadenSQLServer2005.
En esta leccin se describen conceptos clave de seguridad como son principales,
asegurablesypermisos.
Despusdeestaleccinsercapazde....
Describirquesunprincipal.
Describirquesunasegurable.
Describirquesunpermiso.
Principales.
Unprincipalescualquieridentidadalaqueselepuedendarpermisosparaaccedera
un determinado objeto en SQL Server. Los principales existen y se definen a varios
niveles:
AniveldeWindows
o cuentasdeusuariolocalesodeldomino
o gruposdeusuarios.
Aniveldeinstancia
o Iniciosdesesin(logins)
o Funciones(roles)deservidor.
Aniveldebasededatos
o Usuariosdebasededatos
o Funcionesdebasededatos
o Funcionesdeaplicacin.
Asegurables.
Los asegurables son aquellos objetos a los que los principales tienen acceso. Los
asegurablesdemayornivelsontres:
Lapropiainstancia
Cadabasededatos
Cadaunodelosesquemasincluidosencadabasededatos

101

Unidad7.LaseguridadenSQLServer2005.

Encadaunodeellosexistenasuvezotrosobjetosasegurables.Porejemplo:
Asegurablesaniveldeinstancia:logins,endpoints,basesdedatos.
Asegurables a nivel de base de datos: usuarios, roles, certificados, esquemas,
etc.
Asegurables a nivel de esquema: tablas, vistas, procedimientos almacenados,
funciones,etc.
Permisos.
Lospermisoscontrolanelaccesoalosobjetosasegurablesporpartedelosprincipales.
Los permisos pueden ser concedidos, denegados o revocados y cada una de esas
accionesllevaasociadaunainstruccinTSQL:GRANT,DENYyREVOKE.Lgicamente,
cada asegurable dispone de una serie concreta de permisos que vara segn la
funcionalidadquesoportedichoobjetoasegurable.
Los permisos se heredan. Esto quiere decir que los objetos contenidos dentro de un
asegurable de mayor nivel heredan los permisos de este ltimo. Por ejemplo, si
concedeelpermisoSELECTaunprincipalaniveldeesquema,estarconcediendoal
mismo tiempo ese mismo permiso en todas las tablas y vistas incluidas en dicho
esquema.
Tengaencuentaqueladenegacindeunpermisosobrescribelaconcesindelmismo
quesehubierahechoaotronivel.Porejemplo,siaunusuarioselehaconcedidode
formaexplcitaelpermisoSELECTsobreunatablaperoesmiembrodeunafuncino
rolealaqueselehadenegadodichopermisoenlamismatabla,elusuarionopodr
ejecutarunainstruccinSELECTcontraesatabla.

Leccin2.Seguridadaniveldeservidor.
El primer punto donde se debe controlar la seguridad en SQL Server 2005 es en la
propia instancia. Si un usuario o aplicacin no consigue conectar con la instancia
difcilmentepodraccederalosobjetosdelamisma.
Despusdeestaleccinsercapazde....
Elegirunmododeautenticacinenfuncindelosrequisitosempresarialesyde
lasaplicaciones.
Establecerpolticasrelativasacontraseas.
Creariniciosdesesineincluirlosenfuncionesfijasdeservidor.
Gestionarpermisosaniveldeinstancia.
Modosdeautenticacin.
SQL Server puede configurarse para que emplee uno de los siguientes modos de
autenticacin:
AutenticacinWindows.

102

Unidad7.LaseguridadenSQLServer2005.

Autenticacin Windows y SQL Server, tambin conocida como autenticacin


mixta.

Estemodosepuedecambiarencualquiermomentoperoobligaareiniciarelservicio
SQLServerasociadoalainstancia.
AutenticacinWindows.
EnestemodoeselpropioWindowselencargadodevalidarlascredenciales.EnSQL
Server se define un inicio de sesin (login) asociado a la credencial Windows
concreta,quepuedeserunacuentadeusuariooungrupo.
Este es el modo de autenticacin ms seguro y recomendable cuando todos los
usuarios disponen de cuentas definidas en el sistema operativo. Adems permite
utilizargruposenlugardeusuariosindividualeslocualfacilitalaadministracindela
seguridad. Por otro lado los usuarios no necesitan recordar una contrasea y un
usuarioadicionalesparaconectarseaSQLServer.
Autenticacinmixta(WindowsySQLServer).
EnestecasoseadmitencredencialesWindowsascomocredencialesdefinidasenla
propia instancia de SQL Server. Si se emplean identidades de este ltimo tipo es el
propioSQLServerelencargadodevalidarqueelusuarioycontraseasintroducidos
soncorrectos.
Es necesario utilizar este modo cuando los usuarios o aplicaciones que acceden a la
instancianodisponendecredencialesdefinidasenWindows.Habilitarestemodode
autenticacinconviertealainstanciaenmsvulnerableanteposiblesataques.
Importante:establezcaunacontraseafuerteparaeliniciodesesinsa.Nuncadeje
estacontraseaenblanco.
Polticasdecontraseas.
EnWindows2000y2003sepuedendefinirpolticasaniveldecontrasea.Unapoltica
de este tipo establece, entre otras cosas, la complejidad que han de tener las
contraseasylaexpiracindelasmismas,esdecir,sutiempodevida,pasadoelcualel
usuariodebercambiarla.
En cuanto a la complejidad se pueden establecer reglas que obliguen a que la
contrasea, por ejemplo, no contenga parte del nombre de usuario, que tenga una
longitud mnima de caracteres y que entreesos caracteres se incluyan caracteres no
alfanumricoscomolossmbolos$,@,#,etc.
EstaspolticasafectandirectamentealascuentasdefinidasenWindows.Sinembargo
SQL Server 2005 es capaz de aplicar esas mismas directivas a los inicios de sesin
exclusivosdeSQLServer,locualmejorasustancialmentelaseguridaddelascuentas.

103

Unidad7.LaseguridadenSQLServer2005.

Iniciosdesesin(logins).
Uniniciodesesinesunprincipalquepermiteelaccesoaunainstanciay,comoseha
visto anteriormente, puede estar asociado a una cuenta o grupo de Windows o ser
exclusivodeSQLServer,sinningunarelacinconelsistemaoperativomsqueenlo
relativoapolticasdecontraseas,siesqueasseestableceenladefinicindellogin.
ParacrearunloginseemplealasentenciaCREATELOGIN.Enelsiguienteejemplose
creaunloginasociadoaunacuentadefinidaenelsistemaoperativoyseleasignala
basededatosAdventureWorkscomobasededatospordefecto:
CREATE LOGIN [SRVCURSO\Maria]
FROM WINDOWS
WITH DEFAULT_DATABASE = AdventureWorks

ElsiguienteejemplocreaunlogindeSQLServerquedebeacogersealaspolticasde
contraseas establecidas en el sistema operativo en lo referente a complejidad y
expiracin:
CREATE LOGIN Tom
WITH PASSWORD = 'Pa$$w0rd',
DEFAULT_DATABASE = AdventureWorks,
CHECK_EXPIRATION = ON,
CHECK_POLICY = ON

Para modificar un login se emplea la sentencia ALTER LOGIN. Por ejemplo, para
cambiar la contrasea del login del ejemplo anterior debera ejecutar el siguiente
script:
ALTER LOGIN Tom WITH PASSWORD = 'Pa$$w0rd1'

Yyaporltimo,paraeliminarunloginseutilizalasentenciaDROPLOGIN:
DROP LOGIN Tom

Funcionesorolesfijosdeservidor.
Los roles o funciones fijas de servidor son similares a los grupos de usuarios de
Windowsenelsentidoenqueagrupanavariasentidades(logins)yfacilitanlagestin
de los permisos. Estos roles no se pueden modificar ni eliminar y cada uno tiene
asignadosunaseriedepermisos.Acontinuacinsedescribecadaunodeellos:
Role
bulkadmin
dbcreator
diskadmin
processadmin
securityadmin
serveradmin
setupadmin
sysadmin

Permisos
EjecutarlainstruccinBULKINSERT
Crear,modificaryrestaurarbasesdedatos
Administrararchivosendisco
Administrarprocesos
Administrarloginsysuspropiedades
Cambiarlaconfiguracindeservidores
Configurarlareplicacinyservidoresvinculados
Controltotalsobrelainstancia

104

Unidad7.LaseguridadenSQLServer2005.

Para agregar y eliminar usuarios de un role se emplean los procedimientos


almacenados de sistema sp_addsrvrolemember y sp_dropsrvrolemember
respectivamente.
ElsiguienteejemploagregaelloginMaraalrolesysadmin:
EXEC sp_addsrvrolemember 'SRVCURSO\Maria', 'sysadmin'

YejecutandoesteotroejemploMaradejaradeperteneceradichorole:
EXEC sp_dropsrvrolemember 'SRVCURSO\Maria', 'sysadmin'

Permisosaniveldeservidor.
Lospermisosqueseaplicananiveldeservidorafectanaobjetosasegurablescomola
propiainstancia,labasesdedatosquecontienen,iniciosdesesin,etc.
Algunosdelospermisosquesepuedenaplicaraniveldeservidorsonlossiguientes:

Permiso
CONNECTSQL
CREATELOGIN
ALTERANYLOGIN
CONTROLSERVER
ALTERANYDATABASE

Descripcin
Conectarconelservidor
Creariniciosdesesin
Modificariniciosdesesin
Controltotalsobreelservidor
Modificarbasesdedatos

El siguiente ejemplo concede al inicio de sesin [SRVCURSO\Maria] el permiso para


modificarcualquieriniciodesesinenlainstancia:
GRANT ALTER ANY LOGIN TO [SRVCURSO\Maria]
WITH GRANT OPTION

El modificador WITH GRANT OPTION concede en este caso permisos a Mara para
concederesemismopermisoaotrosiniciosdesesin.
ElsiguienteejemplodenegaradeformaexplcitaesepermisoaMara:
DENY ALTER ANY LOGIN TO [SRVCURSO\Maria]

Y por ltimo, ejecutando el siguiente script ese permiso quedara revocado, lo cual
significaquelospermisosqueprevalecensonlosqueMaratengaenelroleorolesde
servidorenlosqueestincluida.
REVOKE ALTER ANY LOGIN TO [SRVCURSO\Maria]

Prctica.Administracindeiniciosdesesin.
En esta prctica crear un inicio de sesin y conceder y denegar permisos para
comprobarcmoseaplicalaseguridadaniveldeinstancia.

105

Unidad7.LaseguridadenSQLServer2005.

1. Inicie SQL Server Management Studio y conctese a la instancia por defecto


utilizando seguridad integrada de Windows. Deber haber iniciado sesin en la
mquinaconunacuentaconpermisosdeadministrador.
2. EnelexploradordeobjetosdespliegueelnodoSeguridadyhagaclicconelbotn
derechodelratnsobreelelementoNuevoiniciodesesin.

3. DebercrearunusuariodeSQLServer(sinrelacinconcuentaalgunadelsistema
operativo).ParaelloseleccionelaopcinAutenticacindeSQLServereindiqueun
nombredeusuario.
4. Desactive la opcin Exigir directiva de contraseas para de este modo obviar las
polticasdecontraseasestablecidasenWindows.
5. Inicialmenteseleccionemastercomobasededatospredeterminada.Estoharque
elusuariotengayaestablecidouncontextodetrabajounavezqueseconecte.Esa
es una tarea que tendr que realizar posteriormente. La ventana de creacin del
logindeberteneresteaspecto:

106

Unidad7.LaseguridadenSQLServer2005.

6. PulseelbotnAceptarparaejecutarlaaccin.
7. Enlossiguientespasosconcederelpermisonecesarioparacrearbasesdedatosal
iniciodesesinrecincreado.Enelexploradordeobjetoshagaclicconelbotn
derecho del ratn sobre el elemento que representa la instancia y seleccione la
opcinPropiedades.

8. EnelpaneldelaizquierdaseleccioneelelementoPermisos.Acontinuacin,enla
listadeIniciosdesesinofuncionesseleccioneeliniciodesesinloginCurso.La
listadepermisosinferiorseactualizar.BusqueelpermisoCreateanydatabasey

107

Unidad7.LaseguridadenSQLServer2005.

marque la opcin correspondiente en la columna Conceder. Cuando haya


terminadopulseelbotnAceptar.

9. AbraunanuevaventanadeconsultahaciendoclicenelbotnNuevaconsulta.Por
defecto, lo que ejecute en esta ventana se har en el contexto de seguridad del
inicio de sesin con el que abri SQL Server Management Studio. Es necesario
cambiardichocontextoparaprobarquelaconcesindepermisosseharealizado
correctamente.Paraellohagalosiguiente:hagaclicconelbotnderechodelratn
sobrecualquierpartedelaventanadeconsulta,seleccionelaopcinConexinya
continuacinCambiarconexin.

108

Unidad7.LaseguridadenSQLServer2005.

10. SeleccioneelmododeAutenticacindeSQLServereindiqueelnombredeinicio
desesinylacontrasea.

11. EjecuteelsiguientescriptparacrearlabasededatosDBPermisos.
CREATE DATABASE DBPermisos

12. Haga de nuevo lo que hizo en el punto 8, pero esta vez desactive la casilla que
activenesepunto.Deestaformaestarrevocandoelpermisoqueconcedi.
13. Ejecuteelsiguientescript:
CREATE DATABASE DBPermisos2

14. Compruebeelerrorqueapareceenelpanelderesultados.Estoesdebidoaque,
aunque al inicio de sesin loginCurso no se le ha denegado el permiso de forma
explcita, no est incluido en ninguna funcin de servidor que s tengaconcedido
esepermiso.

15. Para incluir este inicio de sesin en la funcin de servidor dbcreator, en el


explorador de objetos despliegue el nodo Seguridad y a continuacin el nodo
Funciones de servidor. Haga clic con el botn derecho del ratn sobre el role
dbcreatoryseleccionelaopcinPropiedades.

109

Unidad7.LaseguridadenSQLServer2005.

16. HagaclicenelbotnAgregar.

17. Pulse el botn Examinar. Busque en la lista el inicio de sesin UsuarioCurso y


marquelacasilladeverificacindelaizquierda.PulseelbotnAceptar.

18. PulseelbotnAceptar.

110

Unidad7.LaseguridadenSQLServer2005.

19. ParaterminarpulseelbotnAceptar.

20. Intenteejecutarnuevamenteelscriptenlaventanadeconsultasquetieneabierta.
Estavezspodrcrearlabasededatosyaqueeliniciodesesinhasidoincluido
enunrolequetienepermisosparaello.

Leccin3.Seguridadaniveldebasededatos.
Una vez los usuarios y aplicaciones conectan con una instancia a continuacin,
normalmente,tratandeaccederalainformacinqueresideenbasesdedatos.Enesta
leccin aprender a protegerlas evitando accesos no autorizados y controlando las
operacionesquetantousuarioscomoaplicacionesrealizan.
Despusdeestaleccinsercapazde....
Crearusuariosdebasesdedatos.
Crearyadministrarfuncionesdebasesdedatos.
Crearyadministrarfuncionesdeaplicacin.
Gestionarpermisosaniveldebasededatosydeesquema.

111

Unidad7.LaseguridadenSQLServer2005.

Gestindeusuarios.
Mientrasqueaniveldeinstanciasehabladeiniciosdesesin,aniveldebasededatos
sehabladeusuarios.Losusuarios,comovermsadelante,guardanrelacinconlos
inicios de sesin. Por ejemplo, podra crear el usuario Mara en la base de datos
AdventureWorksasociadoomapeadoalloginSRVCURSO\Maria.
Comohavistoanteriormenteexistelaposibilidaddecreariniciosdesesinasociadosa
gruposdeusuarios.Porejemplo,podracrearuniniciodesesinasociadoalgrupode
usuariosSRVCURSO\VentasyacontinuacinmapearloalusuariousrVentasenlabase
de datos AdventureWorks. Esto permitira que todos los usuarios pertenecientes al
grupoVentasdelsistemaoperativotuvieranaccesoalainstanciayalabasededatos
AdventureWorks. Sin embargo, si alguno de los usuarios del grupo necesitara de
permisosdistintosalrestodeberacrearunloginexclusivoparadichousuario.
ParacrearusuariosseutilizalainstruccinTSQLCREATEUSER.Elsiguienteejemplo
creaelusuariousrMariaasociadoalloginSRVCURSO\Maria:
CREATE USER [usrMaria] FOR LOGIN [SRVCURSO\Maria]

La instruccin ALTER USER permite modificar las propiedades de un usuario. El


siguiente ejemplo modifica el esquema por defecto del usuario usrMaria (ms
adelantesetratarnlosesquemasycmoasignarunopordefectoalosusuarios):
ALTER USER [usrMaria] WITH DEFAULT_SCHEMA=[Production]

Yporltimo,paraeliminarunusuarioutilicelainstruccinDROPUSER:
DROP USER [usrMaria]

Usuariosespeciales.
En todas las bases de datos existen un par de usuarios con un comportamiento
especial:elusuariodboyelusuarioguest.
Elusuariodbo.
Es un usuario que no se puede eliminar, existe en todas las bases de datos y est
mapeado al login sa, el cual pertenece a la funcin de servidor sysadmin. Cualquier
iniciodesesinincluidoendichafuncinestarmapeadotambindeformaimplcita
alusuariodboentodaslasbasesdedatos.
Elusuarioguest.
Esteusuariotampocosepuedeeliminarytambinexisteentodaslasbasesdedatos
pero por defecto est deshabilitado. Gracias a este usuario, cuando se habilita, un
inicio de sesin podr conectar con la base de datos incluso aunque no exista un
usuario especfico asociado a dicho inicio de sesin. Por ejemplo, suponga que ha
definidoeliniciodesesinloginCursoperonohacreadoelusuariocorrespondienteen
la base de datos AdventureWorks. Por defecto, cualquier usuario o aplicacin que

112

Unidad7.LaseguridadenSQLServer2005.

accedaaSQLServerconesteloginnopodrconsultarlabasededatosanoserque
habiliteelusuarioguestenlamismaejecutandoelsiguientescript:
USE AdventureWorks
GO
GRANT CONNECT TO guest

Estatcnicaseempleacuandoelnmerodeusuariosquepretendenaccederalabase
dedatoseselevadoylosrequisitosdeaccesoselimitanaslolectura.Esteusuario,
comocualquierotro,estincluidoenlafuncindebasededatospublicyporlotanto
tendrlospermisosestablecidosendichafuncin.
Usuarioshurfanos.
Esta situacin se da cuando en una base de datos existen usuarios sin un inicio de
sesin asociado. Suele ocurrir, por ejemplo, al restaurar una base de datos en una
instancia distinta a la que originalmente se encontraba. Para evitar esta situacin es
necesarioqueenlainstanciadeorigenyenlaquefinalmenteserestauralabasede
datosestndefinidosexactamentelosmismosiniciosdesesin.
Otro caso en el que se da esta situacin es cuando elimina un inicio de sesin sin
eliminar previamente los usuarios asociados en las bases de datos, si los hubiera. Al
tratar de hacer esto mediante Management Studio aparece el siguiente mensaje de
advertencia:

Paraasociarusuariosainiciosdesesinenprimerlugardebesabersiexistenusuarios
hurfanosenlabasededatos.Paraelloejecuteelsiguientescript:
USE AdventureWorks
GO
EXEC sp_change_users_login 'Report'

Sihayusuarioshurfanosdeberverunalistaenelpanelderesultados,algoparecido
aesto:

Una vez conoce los usuarios que no tienen un inicio de sesin asociado ejecute el
siguientescriptparaestablecerestaasociacin:
EXEC sp_change_users_login 'Update_One', 'usrCurso', 'loginCurso'

113

Unidad7.LaseguridadenSQLServer2005.

Funcionesorolesdebasededatos.
Las funciones de base de datos sirven para agrupar permisos a este nivel. De esta
forma se facilita la gestin de la seguridad. En la siguiente tabla se relacionan las
funciones predefinidasque existenen todas las bases de datos y queno pueden ser
eliminadas.
Funcin
db_accessadmin
db_backupoperator
db_datareader
db_datawriter
db_ddladmin
db_denydatareader
db_denydatawriter
db_owner
public

Permisos
Crearoeliminarusuariosdebasededatosyfunciones
(roles).
Realizarcopiasdeseguridad
Leerdatosdecualquiertabla
Escribirencualquiertabla
Ejecutar instrucciones de definicin de objetos
(CREATE,ALTER,DROP)
Sinpermisodelecturaenningunatabla
Sinpermisodeescrituraenningunatabla
Controltotalsobrelabasededatos
Mantieneunaseriedepermisosmnimospordefecto

Puedecrearfuncionespersonalizadasyasignarlospermisosqueconsiderenecesarios
para que un determinado grupo de usuarios los hereden. Para crear funciones se
utilizalainstruccinCREATEROLE.ElsiguientescriptcrealafuncinRRHHenlabase
dedatosAdventureWorks:
USE AdventureWorks
GO
CREATE ROLE RRHH

Para agregar usuarios a una funcin se emplea el procedimiento almacenado de


sistemasp_addrolemember.ElsiguientescriptagregaelusuariousrCursoalafuncin
RRHH:
EXEC sp_addrolemember 'RRHH', 'usrCurso'

ParamodificaryeliminarfuncionesutilicelasinstruccionesALTERROLEyDROPROLE
respectivamente.
Funcionesorolesdeaplicacin.
Las funciones de aplicacin se emplean cuando se pretende limitar o aumentar los
permisosquelosusuariostienenestablecidos,biendirectamenteobienatravsdela
pertenenciaafunciones,mientrashacenusodeunaaplicacinenconcreto.Cuandose
busca este comportamiento, las aplicaciones activan una determinada funcin de
aplicacinyesenuevocontextodeseguridad,unavezlaaplicacinsedesconectadela
instancia,quedaanulado.
Este tipo de funcin no admite miembros, al contrario de lo que ocurre con las
funcionesdebasededatosodeservidoryesnecesarioindicarunacontraseaenel
momentodelacreacin.

114

Unidad7.LaseguridadenSQLServer2005.

Para crear una funcin de aplicacin se emplea la sentencia CREATE APPLICATION


ROLE:
USE [AdventureWorks]
GO
CREATE APPLICATION ROLE [App_RRHH] WITH PASSWORD = 'password'
GO

Para modificar y eliminar funciones de aplicacin se emplean las sentencias ALTER


APPLICATION ROLE y DROP APPLICATION ROLE respectivamente. El siguiente script
modificalacontraseadelafuncinApp_RRHH:
ALTER APPLICATION ROLE [App_RRHH] WITH PASSWORD='p@ssword'

Para activar el contexto de seguridad asociado a la funcin creada se utiliza el


procedimientoalmacenadodesistemasp_setapprole:
sp_setapprole [App_RRHH], 'password'

Permisosaniveldebasededatos.
Aestenivelpuedeasignarpermisosaprincipalespararealizardeterminadasacciones
obienpuederealizaresaasignacinsobreasegurablesqueseencuentrandentrodel
alcancedelabasededatos,comosonlosesquemas.Porejemplo,elsiguientescript
concedeelpermisoparamodificarcualquierusuarioalprincipalusrCurso:
GRANT ALTER ANY USER TO usrCurso

YconesteotroscriptconcedeelpermisoparaejecutarlasentenciaSELECTentodas
lastablasyvistasdelesquemaProductiondelabasededatosAdventureWorks:
GRANT SELECT ON SCHEMA::Production TO usrCurso

Acontinuacinsemuestranalgunosdelospermisosquepuedenutilizarseanivelde
basededatos:

Permiso
ALTERANYROLE
ALTERANYSCHEMA
BACKUPDATABASE

Descripcin
Modificarfuncionesdebasededatos
Modificarcualquieresquema
Hacercopiadeseguridaddelabasededatos

Esquemas.
EnSQLServer2000cuandounusuariocreaunobjetostequedaasociadoalusuario
establecindoseentoncesunarelacindirectaentreusuarioyobjeto. Losproblemas
aparecen cuando es necesario eliminar el usuario debido por ejemplo a que deja de
trabajarparalaempresaenconcreto.
EnSQLServer2005noexisteestarelacin,locualfacilitalagestindeusuarios.Los
objetos pertenecen o se encuentran contenidos dentro deesquemas. Los esquemas,
adems de permitir agrupar objetos con el objetivo de facilitar la comprensin del

115

Unidad7.LaseguridadenSQLServer2005.

modelodedatos,facilitanlagestindelaseguridadyaquealconcederporejemploel
permiso SELECT sobre el esquema a un usuario, se est a su vez concediendo ese
permisosobretodaslastablasyvistascontenidasenelesquema.
Elesquemapordefecto.
Todos los usuarios tienen asignado un esquema por defecto de forma que las
operaciones que realicen sobre objetos sin indicacin explcita del esquema, se
realizarn sobre el esquema por defecto que el usuario tenga asignado. Si en el
momento de crear el usuario no se indica un esquema por defecto, se le asigna el
esquemadbo.
Por ejemplo, suponga que inicia sesin con el login loginCurso que a su vez est
mapeado al usuario usrCurso en AdventureWorks. Inicialmente su esquema por
defecto es dbo. Al ejecutar la siguiente instruccin aparecer un mensaje de error
indicandoqueelobjetonoexiste:
USE [AdventureWorks]
GO
SELECT * FROM Product

Estoesdebidoaquepordefecto,SQLServerbuscaenelesquemadbolaexistencia
delobjetoProductycomonoexistenopuederealizarlaoperacin.Parasolucionarel
problema tiene dos opciones. Una opcin es indicar el nombre del objeto utilizando
dospartes,talycomosemuestraaqu:
USE [AdventureWorks]
GO
SELECT * FROM Production.Product

ProductioneselnombredelesquemadondeseencuentralatablaProduct.Lasegunda
opcin es asignar al usuario usrCurso un esquema por defecto distinto a dbo. Si el
objetonoexisteenelnuevoesquemaSQLServerbuscarenelesquemadbo.Para
cambiarelesquemapordefectoejecuteelsiguientescript:
USE [AdventureWorks]
GO
ALTER USER [usrCurso] WITH DEFAULT_SCHEMA=[Production]

Hecho esto, y siempre que el usuario disponga de los permisos apropiados sobre la
tabla,laprimeraconsultaseejecutarasinproblemas.
Prctica.Gestindeusuariosyesquemas.
En esta prctica trabajar con el inicio de sesin creado en la prctica anterior y
aprenderaasignarpermisosaniveldebasededatosyagestionarlaseguridadanivel
deesquema.
1. Inicie SQL Server Management Studio y conctese a la instancia por defecto
utilizando seguridad integrada de Windows. Deber haber iniciado sesin en la
mquinaconunacuentaconpermisosdeadministrador.

116

Unidad7.LaseguridadenSQLServer2005.

2. DespliegueelnodoSeguridadyacontinuacinelnodoIniciosdesesin.Hagaclic
conelbotnderechodelratnsobreeliniciodesesinloginCursoyseleccionela
opcinPropiedades.

3. Para crear un usuario asociado a este inicio de sesin en la base de datos


AdventureWorks haga lo siguiente. En el panel de la izquierda seleccione el
elementoAsignacindeusuarios.Enelpaneldeladerechamarquelaopcindela
columnaAsignarcorrespondientealabasededatosAdventureWorks.Observeque
elnombredeusuariopropuestoesexactamenteigualqueelnombredeliniciode
sesin.CmbieloporusrCurso.Dejeenblancolacajadetextocorrespondienteal
esquema predeterminado. Esto har que se le asigne el esquema dbo como
esquemapordefecto.

117

Unidad7.LaseguridadenSQLServer2005.

4. Seleccione en el panel de la izquierda el elemento Funciones del servidor.


Verifiquequeesteiniciodesesinslopertenecealafuncinpublic.(Desactivela
opcin correspondiente a la funcin dbcreator que seleccion en la prctica
anterior).CuandohayaterminadopulseelbotnAceptar.

5. Abraunnuevaventanadeconsultayacontinuacincambielaconexintalycomo
aprendienlaleccinanterioreiniciesesincomologinCurso.
6. Tratedeejecutarelsiguientescript:

118

Unidad7.LaseguridadenSQLServer2005.

USE AdventureWorks
GO
SELECT * FROM Product

7. ComprobarqueseproduceunerrordebidoaqueelobjetoProductnoexisteen
el esquema por defecto del usuario, en este caso dbo. Para cambiar el esquema
por defecto, en el explorador de objetos despliegue el nodo Bases de datos
>AdventureWorks>Seguridad>Usuarios.Hagaclicconelbotnderechodelratn
sobreelusuariousrCursoyseleccionelaopcinPropiedades.

8. En la siguiente ventana indique que el esquema predeterminado pasa a ser


ProductionypulseelbotnAceptar.

119

Unidad7.LaseguridadenSQLServer2005.

9. Intente ejecutar nuevamente la consulta. Observe que se genera un nuevo error


indicandoquenotienepermisoSELECTsobreelobjetoenelesquemaProduction.
Puede conceder este permiso directamente sobre el objeto o bien sobre el
esquema.Elprocedimientoenamboscasosesmuysimilar.
10. Para conceder permiso SELECT a este usuario sobre el esquema y que pueda as
consultar la informacin de todas las tablas y vistas de dicho esquema, en el
explorador de objetos despliegue el nodo Bases de datos>AdventureWorks
Seguridad>Esquemas.Hagaclicconelbotnderechodelratnsobreelelemento
ProductionyseleccionelaopcinPropiedades.

11. En la siguiente ventana agregue al usuario usrCurso a la lista de Usuarios y


funciones. Seleccinelo y a continuacin, en el panel inferior busque el permiso
SELECTymarquelaopcindelacolumnaConceder.PulseelbotnAceptar.

120

Unidad7.LaseguridadenSQLServer2005.

12. Ejecute nuevamente el script. En esta ocasin la consulta debe ejecutarse sin
problemas.

13. Si los requisitos fueran que este usuario debera poder leer cualquier tabla de
cualquier esquema en esta base de datos lo ms rpido sera agregar a dicho
usuario en una funcin que ya disponga de esos permisos, como es la funcin
db_datareader.Paraello,enelexploradordeobjetosvuelvaaabrirlaventanade
propiedadesdelusuariousrCursoyenelpanelMiembrosdelafuncinmarquela
opcin correspondiente a la funcin db_datareader tal y como se muestra en la
siguienteimagen:
121

Unidad7.LaseguridadenSQLServer2005.

14. CuandohayaterminadopulseelbotnAceptarypruebeacontinuacinaejecutar
elsiguientescript:
SELECT *
FROM HumanResources.Department

Leccin4.ClavesycertificadosenSQLServer2005.
En esta leccin aprender a cmo utilizar claves y certificados para proteger la
informacinqueresideenSQLServer2005.
Despusdeestaleccinsercapazde....
Describirqusonycmocrearclaves.
Describiryutilizarcertificados.
ConocerlaarquitecturadecriptografaimplementadaenSQLServer2005.
Arquitecturadecriptografa.
La criptografa en SQL Server 2005 est implementada basndose en una serie de
claves implementadas a distintos niveles, comenzando por la propia instancia y
descendiendohastacadaunadelasbasesdedatos.
Paraverundiagramadondesemuestralajerarquadecifradobusqueenloslibrosde
ayudaeltextoJerarquadecifrado(Encryptionhierarchy).
ServiceMasterKey.
EstaclavesegeneraautomticamenteaniveldeinstanciayescifradautilizandolaAPI
deproteccindedatosdeWindows(WindowsDataProtectionAPI).Estaclaveesla
razenlajerarquadecifradodeSQLServer2005.Esfundamentalhacerunacopiade

122

Unidad7.LaseguridadenSQLServer2005.

seguridad de esta clave porque en el caso de perderse, los datos cifrados que
estuvieranalmacenadosenunabasededatospodrandejardeestaraccesibles.Esta
claveseempleaparaprotegerlasclavesdelsiguientenivelenlajerarquadecifrados.
DatabaseMasterKey.
Es una clave que hay que generar de forma explcita en cada base de datos si se
deseancifrardatosenella.ParaelloseutilizalainstruccinCREATEMASTERKEY:
USE AdventureWorks
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD='p@ssword'

Esta clave se emplea para proteger certificados, claves simtricas y asimtricas


definidasenlabasededatosyseprotegemedianteelalgoritmoDESylacontrasea
especificadaenlainstruccinCREATEMASTERKEY.Ademssecreaunacopiadeesta
clave utilizando la service master key para permitir as el descifrado automtico de
datos.
Es importante hacer copia de seguridad de esta clave ya que de perderse no sera
posible recuperar la informacin que estuviera cifrada. Para ello se emplea la
instruccinBACKUPMASTERKEY.
BACKUP MASTER KEY TO FILE = 'C:\BackupKeys\masterkey.bak'
ENCRYPTION BY PASSWORD = 'lkid89@wer';

Si tuviera que restaurar en otra instancia una base de datos con informacin cifrada
sera necesario restaurar la database master key. Para ello se utiliza la instruccin
RESTOREMASTERKEY.
RESTORE MASTER KEY
FROM FILE = 'C:\BackupKeys\masterkey.bak'
DECRYPTION BY PASSWORD = 'lkid89@wer' - Password empleada en la instruccin BACKUP
ENCRYPTION BY PASSWORD = 'p@ssword'
-- Clave para cifrar la clave maestra

Clavessimtricas.
Una clave simtricaest formadapor un solo valor que se emplea para cifrarypara
descifrarinformacin.Estevalorhadeserconocidoyutilizadoporlapartequecifray
porlapartequedescifra.
LasclavessimtricassecreanconlainstruccinCREATESYMMETRICKEYysecifran
con una contrasea, aunque tambin pueden cifrarse con una clave asimtrica, un
certificadooinclusootraclavesimtrica.
CREATE SYMMETRIC KEY ClaveSimetrica
WITH ALGORITHM = DES
ENCRYPTION BY PASSWORD = 'p@ssw0rd'

Clavesasimtricas.
Estasclavesestnformadaspordosvalores.Conunodeellossecifranlosdatosycon
elotrosedescifran.Lasclavesasimtricasestnformadasporunaclavepblicayuna
privada. La clave pblica se comparte y la parte privada es fundamental protegerla

123

Unidad7.LaseguridadenSQLServer2005.

contrausosnoautorizados.Losdatoscifradosutilizandounadeellasslopuedenser
descifradosutilizandolaotra.
La instruccin TSQL que permite la creacin de este tipo de claves es CREATE
ASYMMETRICKEY.
CREATE ASYMMETRIC KEY ClaveAsimetrica
WITH ALGORITHM = RSA_512
ENCRYPTION BY PASSWORD = 'p@ssw0rd'

La clave privada queda protegida por la contrasea indicada en el parmetro


ENCRYPTIONBYPASSWORD.
Certificados.
Loscertificadossonemitidosporentidadescertificadorasypermitenasociarunaclave
pblica con una persona o sistema que es la que almacena la clave privada. SQL
Server 2005 utiliza certificados en los procesos de autenticacin, autorizacin y
criptografa.
ParalagestindecertificadosseempleanlasinstruccionesCREATECERTIFICATEysus
correspondientes ALTER y DROP. Adems existe la instruccin BACKUP CERTIFICATE
paraguardarendiscouncertificadoalmacenadoenSQLServer.
EnelsiguienteejemplocrearauncertificadoenlabasededatosAdventureWorksysu
claveprivadaestaraprotegidaporcontrasea.
USE AdventureWorks;
GO
CREATE CERTIFICATE CertAW
ENCRYPTION BY PASSWORD = 'p@ssword'
WITH SUBJECT = 'Adventure Works',
START_DATE = '01/01/2008',
EXPIRY_DATE = '31/12/2010';

Parahacerunacopiadeseguridaddelcertificadoanteriorejecuteelsiguientescript:
BACKUP CERTIFICATE CertificadoAW
TO FILE = 'C:\BackupKeys\CertificadoAW.cer'

Ysiloquedeseaesrestauraruncertificadoapartirdeunacopiadeseguridadutiliceel
siguientescript:
CREATE CERTIFICATE CertificadoAW
FROM FILE = 'C:\BackupKeys\CertificadoAW.cer'

Cifrarinformacin.
SQL Server 2005 incluye las siguientes funciones para cifrar y descifrar datos
utilizandoclavesycertificados:
Funcin
EncryptByKey
DecryptByKey
EncryptByAsymKey
DecryptByAsymKey

Descripcin
Cifradatosutilizandounaclavesimtrica
Descifradatosutilizandounaclavesimtrica
Cifradatosutilizandounaclaveasimtrica
Descifradatosutilizandounaclaveasimtrica

124

Unidad7.LaseguridadenSQLServer2005.

Funcin
EncryptByCert
DecryptByCert

Descripcin
Cifradatosutilizandouncertificado
Descifradatosutilizandouncertificado

Importante: un uso excesivo del cifrado y descifrado de datos afecta de forma muy
severa al rendimiento de SQL Server 2005. Utilcelo slo en casos estrictamente
necesarios.
Enlaprcticaaprenderautilizarestasfunciones.
Prctica.Utilizaruncertificadoparacifrardatos.
En esta prctica aprender a crear claves simtricas, asimtricas y certificados y a
utilizarlos para cifrar y descifrar informacin. Las instrucciones DDL (Data Definition
Language)asociadasaestosobjetosnosepuedenrecrearmedianteasistentesenSQL
Server Mangement Studio, es necesario escribir los scripts en una ventana de
consulta.
1. Inicie SQL Server Management Studio y conctese a la instancia por defecto
utilizando seguridad integrada de Windows. Deber haber iniciado sesin en la
mquinaconunacuentaconpermisosdeadministrador.
2. Abra una nueva ventana de consulta y, si no lo ha hecho ya, genere la database
masterkeyenlabasededatosAdventureWorksmedianteelsiguientescript:
USE AdventureWorks
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'p@ssword'

3. Acontinuacincreeunaclaveasimtrica:
CREATE ASYMMETRIC KEY AsymKeyAW WITH ALGORITHM = RSA_512
ENCRYPTION BY PASSWORD = 'p@ssword';

4. Ahora genere una clave simtrica protegindola con la clave asimtrica generada
anteriormente:
CREATE SYMMETRIC KEY SymKeyAW WITH ALGORITHM = DES
ENCRYPTION BY ASYMMETRIC KEY AsymKeyAW;
GO

5. Porltimogenereuncertificado:
CREATE CERTIFICATE CertAW
ENCRYPTION BY PASSWORD = 'p@ssword'
WITH SUBJECT = 'Adventure Works',
START_DATE = '01/01/2008',
EXPIRY_DATE = '31/12/2010'

6. Elprimerpasoparacifrarutilizandounaclavesimtricaesabriresaclave.Paraello
utiliceelsiguientescript:
OPEN SYMMETRIC KEY SymKeyAW
DECRYPTION BY ASYMMETRIC KEY AsymKeyAW
WITH PASSWORD = 'p@ssword'

125

Unidad7.LaseguridadenSQLServer2005.

7. A continuacin ya puede utilizarla,como en el siguienteejemplo, donde se cifra


una variable. Observe que es necesaria la conversin al tipo de dato varbinary.
TambinseutilizalafuncinKey_GUIDparaobtenerelidentificadorasociadoala
clavesimtrica:
DECLARE @CreditCardNumber int
DECLARE @EncryptedCreditCardNumber varbinary(128)
SET @CreditCardNumber = 1234567890
SET @EncryptedCreditCardNumber = EncryptByKey(Key_GUID('SymKeyAW'), CONVERT(varbinary,
@CreditCardNumber));
SELECT @CreditCardNumber
SELECT @EncryptedCreditCardNumber
SELECT CONVERT(int, DecryptByKey(@EncryptedCreditCardNumber))

8. La ltima instruccin SELECT del script descifra los datos usando la clave que
permaneceabierta.Paraterminaresnecesariocerrarla:
CLOSE SYMMETRIC KEY SymKeyAW

9. Elpanelderesultadosdebemostraralgosimilaraesto:

10. Elprocedimientoparacifrarydescifrarutilizandounaclaveasimtricaessimilaral
anterior. En este caso se hace uso de las funciones EncryptByAsymKey y
DecryptByAsymKey y para obtener el identificador de la clave asimtrica se
emplealafuncinAsymKey_ID.
DECLARE @CreditCardNumber int
DECLARE @EncryptedCreditCardNumber nvarchar(250)
SET @CreditCardNumber = 1234567890
SET @EncryptedCreditCardNumber = EncryptByAsymKey(AsymKey_ID('AsymKeyAW'),
convert(nvarchar(250), @CreditCardNumber))
SELECT @EncryptedCreditCardNumber
SELECT CAST( DecryptByAsymKey(AsymKey_ID('AsymKeyAW'),
@EncryptedCreditCardNumber,N'p@ssword' ) AS NVARCHAR)

11. Enelcasodeusarcertificadoselscriptanteriorserviramodificandolasfunciones
oportunas que en este ejemplo pasan a ser EncryptByCert, DecryptByCert y
Cert_ID.
DECLARE @CreditCardNumber int
DECLARE @EncryptedCreditCardNumber nvarchar(250)
SET @CreditCardNumber = 1234567890
SET @EncryptedCreditCardNumber = EncryptByCert(Cert_ID('CertAW'),
convert(nvarchar(250), @CreditCardNumber))
SELECT @EncryptedCreditCardNumber
SELECT CAST( DecryptByCert(Cert_ID('CertAW'),
@EncryptedCreditCardNumber,N'p@ssword' ) AS NVARCHAR)

126

Unidad8.MonitorizacindeSQLServer2005.

Unidad8.MonitorizacindeSQLServer2005.
Unavezimplantadocualquiersistemaesnecesariosabercmosecomportaamedida
que est siendo utilizado por usuarios y aplicaciones. Entre los objetivos de la
monitorizacinseencuentralaresolucindeposibleserroresascomolamejoradel
rendimiento. En esta unidad conocer qu herramientas y recursos proporciona SQL
Server2005pararealizarlamonitorizacindeinstancias.
Objetivosdeestaunidad.
Aprenderautilizarelmonitordeactividad.
AprenderacreartrazasutilizandoSQLServerProfiler.
Implementar disparadores (triggers) asociados a instrucciones DDL (Data
DefinitionLanguage).

Leccin1.Elmonitordeactividadylasvistasdinmicas.
EsunaherramientaintegradaenSQLServerManagementStudioypermiteobtener
informacin acerca de los procesos que se estn ejecutando en un determinado
instante.
Despusdeestaleccinsercapazde....
Aprenderaanalizarlainformacinproporcionadaporelmonitordeactividad.
Conocer algunas de las vistas dinmicas para obtener informacin de la
actividaddeSQLServer.
Procesosybloqueosenelmonitordeactividad.
Esta herramienta proporciona tres formas de obtener informacin acerca de la
actividad de una instancia en cuanto a los procesos que se estn ejecutando en un
instantedado:
Paneldeinformacindeprocesos
Paneldebloqueosporproceso
Paneldebloqueosporobjeto
PaneldeInformacindeprocesos.
Estaesunadelasvistasqueproporcionaelmonitordeactividad.Enellaapareceuna
lnea por cada conexin activa. Cada proceso tiene un identificador que se puede
utilizarparaobtenerinformacinasociadaenlasotrasdosvistasqueproporcionaesta
herramienta.
Estavistaseemplea,entreotrascosas,paradeterminarsialgnprocesoestsiendo
bloqueado por otro. Esta situacin se da con frecuencia en entornos de alta
concurrencia,enlosquevariosusuariospuedenaccederalmismorecursoenelmismo
instante. Cuando ocurre un bloqueo y no hay una resolucin automtica, desdeesta

127

Unidad8.MonitorizacindeSQLServer2005.

vista y una vez interpretada la informacin, puede eliminar alguno de los procesos
implicadosenlaoperacin.
Paneldebloqueosporproceso.
Si en la vista anterior observa que se est produciendo un bloqueo, a partir del
identificadordelproceso,enestaotravistaobtendrinformacindetalladaacercade
losrecursosbloqueadosporeseprocesoenconcreto.
Paneldebloqueosporobjeto.
Esta vista proporciona informacin similar a la anterior pero esta vez clasificada por
objeto.Sirveparacentrarseenunobjetoconcreto(unatablaporejemplo)yobservar
losbloqueosquelosprocesosgeneransobrel.
Vistasdinmicasdeadministracin.
Forman parte del catlogo de vistas del sistema. Se denominan dinmicas porque
proporcionan informacin instantnea acerca de la actividad en SQL Server. Estn
definidas en el esquema sys y su nombre comienza por el prefijo dm_ para
distinguirlasdelrestodevistasdelsistema.Algunasdeestasvistasserelacionanaqu:
Vista
sys.dm_tran_locks
sys.dm_exec_sessions
sys.dm_db_file_space_usage
sys.dm_exec_cursors
sys.dm_tran_database_transactions

Descripcin
Devuelve informacin acerca de cada
bloqueoactivo
Devuelve informacin acerca de las sesiones
abiertas
Devuelve informacin acerca del espacio
utilizadoporlosarchivosdedatos
Devuelve informacin acerca de los cursores
abiertos
Devuelve informacin acerca de las
transaccionesactivasenunabasededatos

Prctica.Utilizarelmonitordeactividad.
Enestaprcticaejecutardistintastransaccionesyverlosefectosenelmonitorde
actividad. Tambin utilizar alguna de las vistas dinmicas de administracin para
obtenerinformacinsimilaralaquesemuestraenelmonitordeactividad.
1. Inicie SQL Server Management Studio y conctese a la instancia por defecto
utilizando seguridad integrada de Windows. Deber haber iniciado sesin en la
mquinaconunacuentaconpermisosdeadministrador.
2. Abra una ventana de consulta haciendo clic enel botn Nueva consulta. Copie y
pegueelsiguientescript:
USE AdventureWorks
GO
BEGIN TRAN
SELECT * FROM Production.Product
COMMIT

128

Unidad8.MonitorizacindeSQLServer2005.

3. Seleccione todo el texto excepto la instruccin COMMIT y pulse F5 para de esta


formaejecutarslolasinstruccionesseleccionadas.
4. Observebajoelpanelderesultadoselidentificadordeproceso.Enesteejemploes
el54.

5. En el explorador de objetos despliegue el nodo Administracin y a continuacin


hagadobleclicsobreelelementoMonitordeactividad.

6. Hagadobleclicsobrelafilacorrespondientealproceso54.Aparecerunaventana
informando de la instruccin que se est ejecutando en ese proceso. Cuando
terminederevisarlapulseelbotnCerrar.

7. Observe la informacin que aparece en la fila correspondiente al proceso 54. En


ella se indica, entre otras cosas, que el proceso se encuentra en espera, que hay

129

Unidad8.MonitorizacindeSQLServer2005.

una transaccin abierta en la base de datos AdventureWorks, que la aplicacin


asociada al proceso es SQL Server Management Studio y que ha sido necesario
leer21pginasdedatosparaobtenerlainformacin.
8. Seleccione en el panel de la izquierda el elemento Bloqueos por proceso. A
continuacin,eneldesplegableProcesoseleccionado,seleccioneel54.

9. Loquemuestraestepanelesqueelnicobloqueoestablecidoporelproceso54es
uno que afecta a la base de datos (columna Tipo) y que adems es un bloqueo
compartido (valor Shared en la columna Modo de solicitud). Observe tambin la
columnaEstadodelasolicitud.EnellaseindicaqueSQLServerhaconcedidoel
bloqueosolicitadoporelproceso.
10. Ahora seleccione en el panel de la izquierda el elemento Bloqueos por objeto y
compruebelafilaasociadaalproceso54.
11. Para finalizar la transaccin abierta, regrese a SQL Server Management Studio,
seleccionelainstruccinCOMMITypulseF5.Compruebeloscambiosocurridosen
elmonitordeactividad.
12. Para crear un nuevo proceso abra una nueva ventana de consulta y pegue el
siguiente script, que tratar de actualizar el precio de un producto en la tabla
Production.Product:
USE AdventureWorks
GO
BEGIN TRAN
UPDATE Production.Product
SET ListPrice = 10
WHERE ProductID = 1

130

Unidad8.MonitorizacindeSQLServer2005.

COMMIT

13. SeleccionetodoeltextoexceptolainstruccinCOMMITypulseF5.Aunqueenel
panelderesultadosaparecequesehaactualizadounafila,realmentehastaqueno
seejecutelainstruccinCOMMITelcambionoserefectivo.

14. Enlaprimeraventanadeconsultaqueabriejecutetodoelscript.Observecmo
la consulta no muestra resultados. En esta ocasin la sentencia SELECT est
tratandodeaccederaunrecursoqueestsiendoactualizadoporotroprocesoy
esperarhastaquelaactualizacinfinaliceparadevolverlosresultados,yaquesi
la actualizacin no se confirma, la sentencia SELECT podra haber devuelto datos
inconsistentes.EsteeselcomportamientopordefectodeSQLServer.
15. Revisenuevamenteelmonitordeactividad.PulseelbotnActualizarqueaparece
enlapartesuperior.

131

Unidad8.MonitorizacindeSQLServer2005.

16. Observe que el proceso 54, asociado a la sentencia SELECT est suspendido. Si
desplaza la barra de desplazamiento horizontal hacia la derecha ver que en la
columnaBloqueadoporapareceelvalor55,queesprecisamenteelidentificador
delprocesoasociadoalasentenciaUPDATE.

17. Regrese a SQL Server Management Studio y en la ventana de consulta donde


ejecut la instruccin UPDATE pegue la siguiente instruccin. Con ella obtendr
informacindebloqueosutilizandounavistadinmicadeadministracin.Unavez
ejecutadacomparelosresultadosconlainformacindelmonitordeactividad.

132

Unidad8.MonitorizacindeSQLServer2005.

select * from sys.dm_tran_locks

18. Deregresoenelmonitordeactividad,reviselainformacindelrestodepaneles
(bloqueos por proceso y por objeto) y regrese de nuevo al panel Informacin de
procesos. A continuacin, y suponiendo que el proceso de actualizacin est
bloqueadoporalgnmotivo,comoadministradorpuedefinalizarlo.Paraellohaga
clicconelbotnderechodelratnsobreelprocesoyseleccionelaopcinEliminar
proceso.

19. ContesteSenelsiguientecuadrodedilogo:

20. La sentencia SELECT terminar ejecutndose correctamente. Para terminar


seleccionelainstruccinCOMMITypulseF5paranodejartransaccionesabiertas.

Leccin2.SQLServerProfiler.
Medianteestaherramientatendrlaposibilidaddecrearloquesedenominantrazas.
Enunatrazaserecogentodosaquellossucesosqueocurrenenunainstanciadurante
unperiododetiempoestablecidoparaposteriormenteanalizarlos.
Despusdeestaleccinsercapazde....
DescribirlascaractersticasdelaherramientaSQLServerProfiler.
Definirtrazas.
Reproducirtrazas.

133

Unidad8.MonitorizacindeSQLServer2005.

Lastrazas.
SonvarioslosmotivosquellevanaanalizarelfuncionamientodeunainstanciadeSQL
Serveryentrelosmscomunesestnlossiguientes:
Existen consultas que se ejecutan muy lentamente o que emplean una gran
cantidadderecursos(memoria,disco,etc).
Es necesario supervisar la actividad de los usuarios y las aplicaciones para
comprobarelusoquehacendeSQLServer.
Lastrazasseconfiguranindicando,entreotrascosas,lossucesosdeSQLServerque
interesan ser analizados. Existe una gran variedad de ellos pero no siempre interesa
recoger informacin de todos ya que el exceso de informacin puede complicar el
anlisis. Tenga en cuenta adems que la generacin de trazas supone una carga
adicionalparaelservidorypuedeperjudicaralrendimientogeneraldelainstancia,por
loquehayquedefinirmuybienqusucesosserecogernenlatraza.
Plantillasdesucesos.
SQLServerProfilerdisponedeunaseriedeplantillasenlasqueyaestnpredefinidos
los sucesos que se van a monitorizar lo cual facilita el diseo de la traza. Es posible
tambingenerarnuevasplantillasquefacilitenanlisisfuturos.
Dndealmacenarlastrazas.
Lainformacindelastrazassepuedealmacenarenunarchivo,generalmenteconla
extensin.trcoenuntabladealgunabasededatosdelmismoservidorqueseanaliza
odecualquierotro.
Ejecucindelatraza.
Una vez definida la traza hay que elegir el momento en que debe ejecutarse. Es
importantetambinestablecerladuracindelaejecucinparaquenovayamsall
deloestrictamentenecesarioyaque,comosehadichoanteriormente,lageneracin
detrazassuponeunacargaimportantequepuedeafectarseveramentealrendimiento
delservidor.
Reproduccindetrazas.
Unavezalmacenadalatrazapuederesultarinteresantereproducirlaenotroservidor,
denominado servidor de destino, y comparar entonces los resultados con los
obtenidos en el servidor donde se recogieron los datos. Para poder reproducir una
traza en un servidor distinto es necesario auditar una serie de sucesos concretos.
Existe una plantilla (TSQL_Replay) en la que ya estn seleccionados dichos sucesos.
Basta con aadir a la traza el resto de sucesos que interesen de cara a analizar el
problemaencuestin.
Esnecesarioademsquelosiniciosdesesindelservidoranalizadoestnreplicados
en el servidor de destino as como las bases de datos. Para ello haga una copia de

134

Unidad8.MonitorizacindeSQLServer2005.

seguridaddelasbasesdedatosyresturelasendichoservidor.Sienlatrazasehace
referenciaaalgnobjetoquenoseencuentraenelservidordedestinoseproducirn
errores,aunquelatrazacontineejecutndose.Estoharquelosresultadosobtenidos
noseanlosesperados.
Prctica.MonitorizacinconSQLServerProfiler.
En esta prctica aprender a crear una traza sencilla basada en una de las plantillas
que ofrece la herramienta. Indicar tambin qu datos obtener de cada uno de los
sucesos definidos en la plantilla y aplicar un filtro para obtener informacin
relacionadanicamenteconlabasededatosAdventureWorks.
1. Inicie SQL Server Management Studio y conctese a la instancia por defecto
utilizando seguridad integrada de Windows. Deber haber iniciado sesin en la
mquinaconunacuentaconpermisosdeadministrador.
2. EnelmenHerramientasseleccioneSQLServerProfiler.

3. EnelmenArchivoseleccioneNuevatraza.Acontinuacinindiquelainstanciaala
que desea conectarse y las credenciales a emplear. Conctese a la instancia por
defectoutilizandolaseguridadintegradadeWindows.

135

Unidad8.MonitorizacindeSQLServer2005.

4. Enlaventanadeconfiguracindelatrazaindiqueunnombre,enesteejemplose
llamar Traza AdventureWorks. Esta traza utilizar la plantilla standard y ser
almacenada en un archivo con un tamao mximo de 5 Mb. Se habilitar la
sustitucinincremental,deformaquesecrearnarchivosadicionalesalalcanzar
los5Mbdeinformacindetraza.Seindicarademselmomentoenquelatraza
sedetendr.

5. HagaclicenlapestaaSeleccindeeventos.Enellaverunaseriedeeventosy
columnas seleccionadas asociados a la plantilla elegida, en este caso la standard.
Paraagregarnuevoseventoshagalosiguiente.ActivelaopcinMostrartodoslos
eventos. Localice el grupo de eventos llamado Stored procedures y marque el
sucesoRPCStarting.

136

Unidad8.MonitorizacindeSQLServer2005.

6. Paraqueenlatrazaserecojaademselnombredelabasededatossobrelaque
ocurreelsucesoesnecesarioindicarlomarcandounpardecolumnasqueeneste
momento no estn visibles. Active la opcin Mostrar todas las columnas. A
continuacinlocaliceelgrupodesucesosllamadoTSQL.Desplacehacialaderecha
labarradedesplazamientohorizontalylocalicelascolumnastituladasDatabaseID
y DatabaseName. Indique que desea obtener esos datos para los eventos
SQL:BatchStarting y SQL:BatchCompleted, tal y como se muestra en la siguiente
imagen:

7. Para monitorizar nicamente los sucesos de AdventureWorks es necesario definir


unfiltro.PulseelbotnFiltrosdecolumna.Enelpaneldelaizquierdaseleccioneel
elementoDatabaseName.Acontinuacinenelpaneldeladerechadespliegueel

137

Unidad8.MonitorizacindeSQLServer2005.

elemento Como y en la caja de texto que apareceescribaAdventureWorks. Una


vezdefinidoelfiltropulseelbotnAceptar.

8. ParacomenzararecogerinformacinpulseelbotnEjecutar.
9. RegreseaSQLServerManagementStudioyorganiceelescritorioparaquepueda
visualizar al mismo tiempo las dos ventanas. Mediante el explorador de objetos
navegueporelcontenidodelabasededatosAdventureWorks(tablas,columnas,
etc). Observe cmo SQL Server Profiler muestra informacin relacionada con la
actividad que est ocurriendo en dicha base de datos. Seleccione varios de los
sucesosqueaparecenyobservequeenelpanelinferioraparecelainstruccino
instruccionesquehansidoejecutadasenlabasededatos.

10. Paradetenerlatrazapulseelbotn queapareceenlabarradeherramientas


superior.
11. Si posteriormente desea analizar la traza, hgalo desde el men Archivo,
seleccionando la opcin Abrir e indicando el archivo de traza que ha generado
previamente.

138

Unidad8.MonitorizacindeSQLServer2005.

Leccin3.Disparadores(triggers)DDL.
Esta es una nueva caracterstica de SQL Server 2005. Este tipo de disparadores o
triggers disparadores responden ante instrucciones de definicin de datos (DDL) a
diferenciadelostriggershabitualesquelohacenanteinstruccionesdemanipulacin
dedatos(DML).
Despusdeestaleccinsercapazde....
DefinirquesundisparadorotriggerDDL.
Implementartriggersparaauditarcambiosenelesquemadelabasededatos.
AuditoramediantetriggersDDL.
Esunaprcticamuycomnestablecerauditorasenbasesdedatosparasaberenun
momento determinado quien ha actualizado o eliminado una fila o filas de una o
variastablas.Estoseconsiguemediantelostriggershabituales,loscorrespondientesa
lasinstruccionesdemanipulacindedatos(instruccionesDML).Sinembargo,tambin
es necesario auditar los cambios que sufre una base de datos en cuanto a su
estructura. Sera interesante, por ejemplo, conocer qu usuario ha modificado el
diseo de una tabla. Esta tarea ahora resultamuy sencilla gracias alos triggers DDL,
asociadosainstruccionesdedefinicindedatos(ALTER,CREATE,DROP,etc)
MientrasqueelalcancedelostriggersDMLselimitaaunatablaenconcreto,esdecir,
responden ante sucesos que ocurren en una tabla (operaciones UPDATE, DELETE e
INSERT), el alcance de los triggers DDL va ms all. Se pueden auditar operaciones
tantoaniveldebasededatoscomoaniveldeinstancia.
Estostriggersseejecutanunavezseharealizadolaoperacinquehaprovocadoque
el trigger se dispare. An as, y al igual que ocurre con los triggers DML, se puede
cancelar la transaccin desde dentro del trigger ejecutando la instruccin ROLLBACK
TRANSACTION,haciendoquesedeshaganloscambiosqueprovocaronlaejecucindel
trigger.
CreartriggersDDL.
Observelasiguienteplantilla:
CREATE TRIGGER <nombre_trigger>
ON <alcance>
FOR <evento | grupo_de_eventos>
AS

Losdatosbsicosparaladefinicindeestetipodetriggerson:

Elnombredeltrigger
Elalcance(basededatososervidor)
Eleventoogrupodeeventosantelosquedeberespondereltrigger
Lasoperacionesarealizardentrodeltrigger

139

Unidad8.MonitorizacindeSQLServer2005.

Eventosygruposdeeventos.
EstossonsoloalgunosdeloseventosparalosquesepuedendefinirtriggersDDL:
Evento
CREATEDATABASE
CREATELOGIN
CREATETABLE
CREATEVIEW
ALTERPROCEDURE

Alcance
Servidor
Servidor
Basededatos
Basededatos
Basededatos

ElsiguienteejemplomuestrapartedelscriptnecesarioparacrearuntriggerDDLpara
auditarlacreacindetablas:
CREATE TRIGGER Audit_CreateTable
ON DATABASE
FOR CREATE_TABLE
AS

Si fuera necesario auditar adems la modificacin de la estructura de tablas podra


hacerseconesteotroscript,enelqueseincluyeeleventoALTER_TABLE:
CREATE TRIGGER Audit_CreateTable
ON DATABASE
FOR CREATE_TABLE, ALTER_TABLE
AS

Parafacilitarnoseltrabajo,SQLServer2005disponedeloquesellamangruposde
eventos. Cada grupo recoge unos eventos relacionados con un tipo de objeto. Por
ejemplo, el grupo de eventos DDL_TABLE_EVENTS engloba a los eventos
CREATE_TABLE, ALTER_TABLE y DROP_TABLE, de forma que para auditar estas
operacionespodraservirelsiguientescript:
CREATE TRIGGER Audit_TableEvents
ON DATABASE
FOR DDL_TABLE_EVENTS
AS

Existenademsgruposdeeventosquerecogenaotrosgrupos.Porejemplo,elgrupo
de eventos DDL_TABLE_VIEW_EVENTS engloba, entre otros, al grupo de eventos
DDL_TABLE_EVENTS y DDL_VIEW_EVENTS, de forma que, con el siguiente script
podraauditarcualquiercambioproducidoenvistasytablasenunabasededatos:
CREATE TRIGGER Audit_TableViewEvents
ON DATABASE
FOR DDL_TABLE_VIEW_EVENTS
AS

Para obtener una relacin de eventos y grupos de eventos busque en los libros de
ayudadeSQLServer2005eltextogruposdeeventos.

140

Unidad8.MonitorizacindeSQLServer2005.

Implementacin.
Una vez definido el alcance y evento o eventos ante los cuales el trigger va a
responder, slo falta definir la implementacin, es decir, qu ha de hacer el trigger
cuandoocurraalgunodeesoseventos.
En los triggers DML existen unas tablas virtuales que sirven para obtener la
informacin necesaria relativa a la operacin ante la que responden. Estas son las
tablas inserted y deleted. En los triggers DDL no existen estas tablas sino que la
informacinasociadaalaoperacinquehaprovocadolaejecucindeltriggervieneen
formadedocumentooestructuraxml.Lafuncineventdata()sirveparaobteneresa
informaciny,unavezalmacenadaenunavariabledetipoxml,sepuedenextraerlos
datosnecesariosparacontinuarconlaimplementacin.Elsiguienteesunejemplode
laestructuraxmlquedevuelvelafuncineventdata.Lainstruccinquehaprovocado
laejecucindeltriggerapareceenelelemento<CommandText>.
<EVENT_INSTANCE>
<EventType>CREATE_TABLE</EventType>
<PostTime>2008-06-01T09:56:59.683</PostTime>
<SPID>53</SPID>
<ServerName>SRVCURSO</ServerName>
<LoginName>SRVCURSO\Administrador</LoginName>
<UserName>dbo</UserName>
<DatabaseName>AdventureWorks</DatabaseName>
<SchemaName>dbo</SchemaName>
<ObjectName>Clientes</ObjectName>
<ObjectType>TABLE</ObjectType>
<TSQLCommand>
<SetOptions ANSI_NULLS="ON"
ANSI_NULL_DEFAULT="ON"
ANSI_PADDING="ON" QUOTED_IDENTIFIER="ON" ENCRYPTED="FALSE" />
<CommandText>CREATE TABLE Clientes (IDCliente int)</CommandText>
</TSQLCommand>
</EVENT_INSTANCE>

EnSQLServer2005sehaimplementadoeltipodedatoxmlyasociadoalexisten
una serie de mtodos que permiten manejar estructuras como la anterior. Uno de
estosmtodosesvalue,elcualrequiereunaexpresinXPATHparaobtenerundato
concreto dentro de la estructura. Observe el siguiente ejemplo. En l se obtiene el
nombredelabasededatosqueapareceenelelemento<DatabaseName>dentrode
laestructuradevueltaporlafuncineventdata:
DECLARE @datosXml xml
DECLARE @BD nvarchar(100)
SET @datosXml = eventdata()
SET @BD = @datosXML.value('(//DatabaseName)[1]', 'nvarchar(100)')

EnlaprcticadeestaleccinverlaimplementacincompletadeuntriggerDDL.
Modificaryborrartriggers.
Para modificar y borrar triggers DDL se emplean las instrucciones ALTER TRIGGER y
DROPTRIGGERrespectivamente.
Avecestambinresultatildeshabilitaruntriggerparaevitarquerespondaanteuna
determinadaoperacinsinnecesidaddeeliminarlo.Paraelloseemplealainstruccin

141

Unidad8.MonitorizacindeSQLServer2005.

DISABLE TRIGGER. En el siguiente ejemplo se deshabilita el trigger


Audit_TableViewEvents:
DISABLE TRIGGER Audit_TableViewEvents
ON DATABASE

YParavolverahabilitarloseranecesarioelsiguientescript:
ENABLE TRIGGER Audit_TableViewEvents
ON DATABASE

Prctica.AuditarmediantetriggersDDL.
En esta prctica crear un sistema de auditora dirigido a gestionar los cambios que
ocurrananiveldevistasytablasenlabasededatosAdventureWorks.
1. Inicie SQL Server Management Studio y conctese a la instancia por defecto
utilizando seguridad integrada de Windows. Deber haber iniciado sesin en la
mquinaconunacuentaconpermisosdeadministrador.
2. El primer paso para implementar el sistema de auditora consistir en crear una
tabla capaz de almacenar la informacin necesaria. Para ello abra una nueva
ventanadeconsultaycopieypegueelsiguientescript:
USE [AdventureWorks]
GO
CREATE TABLE [dbo].[Auditoria](
[IDSuceso] [int] IDENTITY(1,1) NOT NULL,
[Fecha] [datetime] NOT NULL CONSTRAINT [DF_Auditoria_Fecha]
[InicioSesion] [nvarchar](100) NOT NULL,
[Esquema] [nvarchar](100) NOT NULL,
[Objeto] [nvarchar](50) NOT NULL,
[Comando] [nvarchar](1000) NOT NULL,
CONSTRAINT [PK_Auditoria] PRIMARY KEY CLUSTERED
(
[IDSuceso] ASC
)
) ON [PRIMARY]

DEFAULT (getdate()),

3. A continuacin crear un trigger DDL que se ejecutar cuando ocurra cualquier


eventoDDLyqueafectetantoatablascomoavistas.Enestetriggerextraerla
informacinnecesariapararegistrarlaoperacinenlatablaquecreenelpunto
anterior.Paraellocopieypegueelsiguientescript:
USE AdventureWorks
GO
CREATE TRIGGER Audit_TablasVistas
ON DATABASE
FOR DDL_TABLE_VIEW_EVENTS
AS
DECLARE @datosXml xml
SET @datosXml = eventdata()
DECLARE
DECLARE
DECLARE
DECLARE
SET
SET
SET
SET

@Login nvarchar(100)
@Esquema nvarchar(100)
@Objeto nvarchar(100)
@Comando nvarchar(1000)

@Login = @datosXML.value('(//LoginName)[1]', 'nvarchar(100)')


@Esquema = @datosXML.value('(//SchemaName)[1]', 'nvarchar(100)')
@Objeto = @datosXML.value('(//ObjectName)[1]', 'nvarchar(100)')
@Comando = @datosXML.value('(//CommandText)[1]', 'nvarchar(1000)')

INSERT Auditoria

142

Unidad8.MonitorizacindeSQLServer2005.

(InicioSesion,
Esquema,
Objeto,
Comando)

VALUES
(@Login,
@Esquema,
@Objeto,
@Comando)

4. Paraprobarelfuncionamientodeltriggerejecuteelsiguientescript:
CREATE TABLE Clientes
(IDCliente int)
GO
CREATE VIEW vwClientes
AS
SELECT * FROM Clientes
GO
DROP VIEW vwClientes
GO
DROP TABLE Clientes
GO

5. Si a continuacin ejecuta la siguiente consulta observar que en el panel de


resultados aparecen cuatro filas, una por cada una de las operaciones CREATE y
DROPqueaparecenenelscriptanterior.
SELECT * FROM Auditoria

143

Unidad8.MonitorizacindeSQLServer2005.

144

Unidad9.Altadisponibilidad.

Unidad9.Altadisponibilidad.
El trmino alta disponibilidad hace referencia a una serie de medidas a tomar en
cualquiersistemaparamantenerloprestandoserviciolas24horasdelda.Ensistemas
crticos es imprescindible contar con el hardware y el software necesario para
garantizarqueladisponibilidadserlomsaltaposible.
Objetivosdeestaunidad.
Describireltrminoaltadisponibilidad.
Conocer las distintas formas de implementar la alta disponibilidad en SQL
Server2005.

Leccin1.AltadisponibilidadenSQLServer2005.
Ademsdeimplementartodolonecesarioaniveldehardwareparaquecualquierfallo
no afecte al servicio que esperan recibir los usuarios, el software que presta dicho
servicio debe ser tambin tolerante a fallos. SQL Server dispone de varios
mecanismosparaproporcionaraltadisponibilidad.
Despusdeestaleccinsercapazde....
Describirdistintosmotivosporlosquepuedefallarunsistema.
DescribirlasopcionesqueproporcionaSQLServer2005paraimplementaralta
disponibilidadaniveldeservidorodebasededatos.
Puntosdefallo.
Sonvariaslascausasporlasqueunsistemapuededejardeprestarservicio.Entreellas
estn:
FallosenHardware:loscomponentesdelosservidoresnosoninfaliblesyporlo
tantocualquieradeellospuedefallar.Problemasenlosdiscos,tarjetasdered,
ventiladores,etc.suelenserlosmshabituales.
Fallosenlared:cablescortadosyfallosenrouters,concentradoresyswitches
sontambinproblemasfrecuentes.
Cortesdesuministroelctrico.
Desastresnaturales.
CmoconseguiraltadisponibilidadenSQLServer2005.
Sepuedenemplearparaellolassiguientestcnicas:

Clsterdeconmutacinporerror.
Reflejodebasededatos.(Databasemirroring)
Trasvasederegistrosdetransacciones.
Replicacin(tratadaenlaUnidad10).

145

Unidad9.Altadisponibilidad.

Bsicamente,unclsterdeconmutacinporerroresunacombinacindeunoovarios
nodos(servidores)condosomsdiscoscompartidos.Unclsterdeconmutacinpor
errordeSQLServerapareceenlaredcomosifueraunnicoequipo.Encasodeque
fallealgunodelosservidoresoseproduzcaunaparadaprogramada,elotroasumir
todalacargadetrabajoquetuvieraelprimero.Estaeslaconfiguracinmscostosay
compleja de administrar. No es objeto de este curso tratar la configuracin de esta
arquitectura.
Lasotrasdosimplementacionessetratanenlaslecciones2y3.

Leccin2.Reflejodebasededatos(Databasemirroring).
El reflejo de base de datos o database mirroring es una alternativa al clster de
conmutacin por error. Se implementa a nivel de bases de datos y es una forma de
mantenerunaaltadisponibilidadsincomplicardemasiadolagestin.
Despusdeestaleccinsercapazde....
Describirelfuncionamientodedatabasemirroring.
Describirlasdistintasarquitecturasparaimplementarlo.
Describirlasdistintasopcionesdeconfiguracin.
Quesycmofunciona.
Enunasolucinbasadaendatabasemirroringunabasededatosescopiadaenotra
instanciaenelmismooendistintoservidoryloscambiosquesufrelabasededatos
principalsonpropagadosalabasededatosdelotroservidordeformainstantnea.Es
una implementacin ms avanzada de lo que se conoce como trasvase de registros
(logshipping)yqueaprenderenlasiguienteleccin.
Estasolucinesidealcuandonodisponederecursossuficientesparaimplementarun
clster.Ademsproporciona,enunadesusconfiguraciones,conmutacinautomtica
encasodefalloperoaniveldebasededatos,nodeinstancia.
Preparacindelabasededatos.
Antes de configurar la arquitectura es necesario preparar la base de datos en la
instancia de destino. En primer lugar, en la base de datos a tratar debe estar
establecido el modelo de recuperacin completo, ya que esta configuracin est
basadaenelusodecopiasdeseguridaddelregistrodetransacciones.
Una vez comprobado ese detalle el siguiente paso consiste en hacer una copia de
seguridad completa de la base de datos en cuestin y restaurarla en la instancia de
destino y dejarlaadems en modo NORECOVERY para que de esta forma se puedan
aplicarlastransaccionesquesonenviadasdesdelainstanciaprincipal.

146

Unidad9.Altadisponibilidad.

Arquitecturayroles.
Paraimplementarestacaractersticasonnecesariosalmenosdosservidoresaunquesi
sedisponederecursosloidealsontres.Cadaunodeesosservidoresjuegaunpapelo
unroledistintoenlaarquitectura:
Servidorprincipal.Mantienelabasededatosprincipal,sobrelaqueactanlas
aplicaciones.
Servidormirror.Esteservidorrecibelastransaccionesquehansidoaplicadasen
elservidorprincipalysonaplicadasenelmismoorden.Deestaformaambas
basesdedatossemantienensincronizadas.
Servidorwitness(testigo).Esteservidoresopcional.Supapelesmonitorizarlos
otros dos servidores de forma que si el principal falla se produce un cambio
automticoderoles,yelqueantestuvieraelpapeldemirrorpasaraatenerel
papeldeprincipal.
Modosdetrabajo.
Hay tres modos de implementar database mirroring. Elegir uno u otro depende del
gradoderendimientoydeproteccinantefallosquesequieraconseguir.Lasdistintas
configuracionessonlassiguientes:
Modo de alta disponibilidad. Las transacciones se aplican en el servidor
principalyeneldedestinodeformasncrona.Enestemodoesnecesarioun
servidor testigo para permitir el intercambio automtico de roles en caso de
que falle el servidor principal. Si falla el servidor mirror el servidor principal
seguiractivomientrassemantengalaconexinconeltestigo.
Mododealtaproteccin.Enestemodolastransaccionesseaplicantambinde
formasncronaperonoseutilizaservidortestigo.Debidoaelloelintercambio
depapeleshadehacersedeformamanualencasodequeelservidorprincipal
falle. Si el servidor mirror falla, el principal deja de estar operativo para
asegurarasqueambosestnsincronizados.
Mododealtorendimiento.Enestemodolastransaccionesseaplicandeforma
asncrona. Esto proporciona un mayor rendimiento, ya que las aplicaciones
reciben la respuesta que solicitan sin necesidad de esperar a que se apliquen
loscambiosenelservidormirror.Sinembargosepuedeproducirunaprdida
dedatosenelcasodequefalleelservidorprincipalyaquehayunintervalode
tiempo en que ambos servidores no estn sincronizados. Si falla el servidor
mirrorelprincipalnoseveafectado.
Endpoints.
Un endpoint es un objeto en el que se define un puerto TCP a travs del cual una
instanciaescuchalosmensajesquetienenquevercondatabasemirroring.Aldefinirla
arquitecturasedefineunendpointporcadaservidorparticipante.Esposibleadems
cifrarlacomunicacinyestablecerunmododeautenticacin.LainstruccinTSQLque

147

Unidad9.Altadisponibilidad.

sirveparacrearestosendpointsesCREATEENDPOINT.Elsiguienteesunejemplode
creacindeunendpointasociadoalpuerto5022configuradoconseguridadintegrada
deWindowsycifradodeshabilitado.Esteendpointestarasociadoalainstanciaque
desempeeelpapeldetestigoenlaarquitecturademirroring.
CREATE ENDPOINT endpoint_witness
STATE = STARTED
AS TCP (LISTENER_PORT = 5022)
FOR DATABASE_MIRRORING (
AUTHENTICATION = INTEGRATED,
ENCRYPTION = DISABLED,
ROLE=WITNESS);
GO

Prctica.Configurarunasesindedatabasemirroring.
En esta prctica trabajar con tres instancias y cada una de ellas jugar un papel
distintoenlaimplementacindemirroring.Elobjetivodelaprcticaesconseguirun
altogradodedisponibilidaddelabasededatosAdventureWorks.
Importante: database mirroring est deshabilitado inialmente en SQL Server 2005.
Paraconfigurarunasesinesnecesarioiniciarlosserviciosdelasinstanciasafectadas
incluyendo el modificador T1400. En esta prctica los servicios asociados a cada
instancia (instancia por defecto, SQLINST2 y SQLINST3) se han iniciado desde la
ventanadecomandosdelsistemaoperativoutilizandoelsiguientescript:
net
net
net
net
net
net

stop MSSQLSERVER
stop MSSQL$SQLINST2
stop MSSQL$SQLINST3
start MSSQLSERVER /T1400
start MSSQL$SQLINST2 /T1400
start MSSQL$SQLINST3 /T1400

EstotambinlopuedeconfigurarmediantelaherramientaSQLServerConfiguration
Manager.
1. Inicie SQL Server Management Studio y conctese a la instancia por defecto
utilizando seguridad integrada de Windows. Deber haber iniciado sesin en la
mquinaconunacuentaconpermisosdeadministrador.
2. Abra una nueva ventana de consulta y ejecute el siguiente script para hacer una
copiadeseguridadcompletadelabasededatosAdventureWorks.
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AW.bak'

3. Para restaurar la base de datos en el servidor de destino primero cambie la


conexinasociadaalaventanadeconsulta.ParaellohagaclicenelbotnCambiar
conexinsituadodebajodelbotnNuevaconsulta.

148

Unidad9.Altadisponibilidad.

4. Conctese a la instancia donde desea restaurar la base de datos utilizando


autenticacin Windows. En esta prctica la instancia de destino ser
SRVCURSO\SQLINST3.

5. Reemplaceelscriptanteriorporesteotroyejectelo:
USE master
GO
RESTORE DATABASE [AdventureWorks]
FROM DISK = N'C:\Backups\AW.bak' WITH FILE = 1,
MOVE N'AdventureWorks_Data'
TO N'C:\SQLINST3\AdventureWorks.mdf',
MOVE N'AdventureWorks_Log'
TO N'C:\SQLINST3\AdventureWorks.ldf',
NORECOVERY
GO

6. ParaverelcontenidodelainstanciaSQLINST3enelexploradordeobjetoshgalo
utilizandoelpaneldeservidoresregistrados.Endichopanelhagaclicconelbotn
derecho del ratn sobre la instancia SRVCURSO\SQLINST3 y seleccione la opcin
Conectar>Exploradordeobjetos.RepitaestospasosparalainstanciaSQLINST2.El
explorador de objetos tendr entonces un aspecto similar al de la siguiente
imagen. Observe el estado de la base de datos AdventureWorks en la instancia
SQLINST3:

149

Unidad9.Altadisponibilidad.

7. Para comenzar a configurar database mirroring, en la instancia por defecto


despliegueelnodoBasesdedatos,hagaclicconelbotnderechodelratnsobre
labasededatosAdventureWorksyseleccionePropiedades.

8. En el panel de la izquierda seleccione el elemento Creacin de reflejo y pulse a


continuacinelbotnConfigurarseguridadparadefinircadaunodelosendpoints
queparticiparnenlaarquitecturadereflejodebasededatos.
150

Unidad9.Altadisponibilidad.

9. En la siguiente ventana es necesario indicar si alguna de las instancias tendr el


papel de testigo en la configuracin de mirroring. Seleccione S y pulse el botn
Siguiente.

10. A continuacin deber indicar dnde se guardar la informacin de seguridad


relacionadaconlaconfiguracindemirroring.Enestecaso,ademsdeguardarse
en las instancias principal y destino, se guardar tambin en la instancia que
actuarcomotestigo.PulseelbotnSiguiente.

151

Unidad9.Altadisponibilidad.

11. La instancia por defecto tendr el papel de servidor principal. Acepte los valores
pordefectoparalosdatosnmerodepuertoynombredelextremo(endpoint)y
pulseelbotnSiguiente.

12. A continuacin configure el servidor reflejado (destino). Pulse el botn Conectar


para conectar con la instancia SQLINST3 utilizando seguridad integrada de
Windows.Aceptelosvaloresdenmerodepuertoynombredelextremoypulseel
botnSiguiente:

152

Unidad9.Altadisponibilidad.

13. A continuacin y de igual forma configure el servidor testigo, esta vez


estableciendoelpuerto5024ypulseelbotnSiguiente.

14. Enestaprcticalastresinstanciasestnalojadasenelmismoservidoryutilizanla
misma cuenta de servicio. Si utilizaran cuentas de servicio distintas habra que
especificarlasenlasiguienteventana.Enestecasopuedenoindicaresosdatosy
pulsarelbotnSiguiente.

153

Unidad9.Altadisponibilidad.

15. ReviselaventanadeinformacinypulseelbotnFinalizar.

16. Cuandohayafinalizadolaconfiguracinverunaventanacomoesta:

17. Pulse el botn Cerrar para regresar al panel de configuracin de database


mirroring.

154

Unidad9.Altadisponibilidad.

18. Pulse el botn No iniciar creacin de reflejo en la siguiente ventana para evitar
queseinicielasesindemirroringhastaquehayaestablecidounmododetrabajo.

19. En el apartado Modo de funcionamiento seleccione la segunda opcin. De esta


forma estar indicando que la sesin de mirroring funcionar en Modo de alta
disponibilidad (revise el apartado Modos de trabajo en esta leccin). Para
comenzarlasesinpulseelbotnIniciarcreacindereflejo.

20. Una vez iniciada la sesin de mirroring comprobar que se han habilitado los
botones para Pausar la sesin, Quitar la creacin de reflejo y hacer la
Conmutacin por error. Pulse el botn Aceptar para cerrar la ventana de
propiedadesdelabasededatos.

155

Unidad9.Altadisponibilidad.

21. Abraunaventanadeconsultayconctesealainstanciaqueactacomoservidor
principal, SRVCURSO en el caso de esta prctica. El siguiente paso consistir en
ejecutar un script que actualice la tabla Production.Product en la base de datos
principal.CompruebeprimeroelvalordelacolumnaListPricedelproductocuyoID
es1ejecutandoelsiguientescript:
USE AdventureWorks
GO
SELECT ProductID, ListPrice
FROM Production.Product
WHERE ProductID = 1

22. Acontinuacinactualiceelpreciodelmismoproducto:
UPDATE Production.Product
SET ListPrice = 10
WHERE ProductID = 1

23. Si la sesin de mirroring se ha configurado correctamente esta transaccin debe


habersereplicadoenlabasededatosdelainstanciaSQLINST3.Paracomprobarlo
detenga el servicio SQL Server de la instancia principal ejecutando la siguiente
instruccindesdeunaventanadecomandodesistemaoperativo:
net stop mssqlserver

24. En el explorador de objetos despliegue el nodo Bases de datos de la instancia


SQLINST3 y compruebe el estado de AdventureWorks. Ha ocurrido un cambio de
rolautomticoyahoraestainstanciatieneasignadoelpapeldeservidorprincipal.

156

Unidad9.Altadisponibilidad.

25. Cambielaconexinasociadaalaventanadeconsultasquetieneabiertaparaque
ahora apunte a la instancia SQLINST3. Hecho esto, seleccione el texto de la
sentenciaSELECTypulselateclaF5paraejecutarla.Compruebequeelvalordela
columna ListPrice es 10, lo cual quiere decir que la transaccin se ha replicado
correctamente.
26. Sinolatieneabierta,abraunaventanadecomandoeinicienuevamenteelservicio
SQL Server asociado a la instancia por defecto ejecutando el siguiente script. A
partir de ese momento dicha instancia recibir las transacciones enviadas desde
SQLINST3.
net start mssqlserver /T1400

27. Actualice nuevamente el precio del producto en la base de datos de la instancia


SQLINST3:
UPDATE Production.Product
SET ListPrice = 20
WHERE ProductID = 1

28. Acontinuacinprovocarunnuevocambioderolperoestavezdesdelaventana
de propiedades de la base de datos principal. En el explorador de objetos
despliegueelnodoBasesdedatosdelainstanciaSQLINST3.Hagaclicconelbotn
derechodelratnsobrelabasededatosAdventureWorksyseleccionelaopcin
Propiedades. En el panel izquierdo seleccione el elemento Creacin de reflejo y
pulseacontinuacinelbotnConmutacinporerror.

157

Unidad9.Altadisponibilidad.

29. EnlaventanadeconfirmacinpulseelbotnS.

30. Compruebe que efectivamente se ha realizado el intercambio de papeles entre


instancias. Esta misma operacin puede realizarse ejecutando la siguiente
instruccinTSQLdesdelainstanciaqueactacomoprincipal:
ALTER DATABASE AdventureWorks SET PARTNER FAILOVER

31. Sideseadetenermomentneamentelasesinejecuteelsiguientescriptdesdela
instanciaprincipal:
ALTER DATABASE AdventureWorks SET PARTNER SUSPEND

32. Parareanudarunasesinenpausautiliceelsiguientescript:
ALTER DATABASE AdventureWorks SET PARTNER RESUME

33. Ysideseadetenerdefinitivamentelasesindemirroringconctesealainstancia
principalyejecuteelsiguientescript:
ALTER DATABASE AdventureWorks SET PARTNER OFF

34. Apartirdeestemomentolabasededatosreflejadanoestoperativayaquese
encuentra en proceso de restauracin. Para que las aplicaciones puedan trabajar
conellaejecuteelsiguientescript:

158

Unidad9.Altadisponibilidad.

RESTORE DATABASE AdventureWorks WITH RECOVERY

Leccin3.Trasvasederegistros.
El trasvase de registros (log shipping) es tambin una tcnica que permite mantener
unaaltadisponibilidadaniveldebasededatosyqueestbasadaenlatransferencia
decopiasdeseguridaddelregistrodetransaccionesdeunainstanciaaotra.
Despusdeestaleccinsercapazde....
Describirelfuncionamientodeltrasvasederegistros.
Configurareltrasvasederegistrosentredosinstancias.
Descripcindeltrasvasederegistros.
Estatcnicaseempleaparamantenerunacopiadeunabasededatosprincipalenotra
instancia. Esta base de datos, adems de servir como copia de seguridad, puede
utilizarseparadarsoporteaaplicacionesquenoactualizaninformacin,liberandoas
deciertacargadetrabajoalainstanciaprincipal.
Servidorprincipal.
Contienelabasededatosprincipalydelaquesedeseamantenerunacopiaenotro
servidor. Es necesario que esta base de datos tenga establecido el modelo de
recuperacin completo o de registro masivo ya que es necesario hacer copias de
seguridaddelregistrodetransacciones.
Laconfiguracindeltrasvasederegistrosserealizadesdeesteservidor.
Servidorsecundario.
Contieneunacopiaenmodoslolecturadelabasededatosprincipal.Esnecesario
inicializarestacopiaapartirdeunacopiadeseguridadcompletadelabasededatos
principaldejndolaenmodoNORECOVERYoSTANDBY.
Servidordesupervisin.
Es un servidor opcional. En caso de utilizarse, en l se mantiene el registro de las
operacionesquetienenqueverconeltrasvase.Esademselencargadodeemitirlas
alertasoportunasencasodequefallealgunatarea.
Trabajos.
Eltrasvasederegistrosconstadetresoperaciones:
Realizar una copia de seguridad del registro de transacciones de la base de
datosprincipal.
Transferirdichacopiadeseguridadalservidorquecontienelacopiadelabase
dedatosprincipal.
Restaurar en la instancia destino la copia de seguridad del registro de
transaccionestransferidaenelpasoanterior.

159

Unidad9.Altadisponibilidad.

Estas operaciones se realizan con una frecuencia establecida y se materializan en


trabajos(jobs)deSQLServer,porloqueesnecesarioquelosserviciosasociadosalos
AgentesdeSQLServerdelasinstanciasimplicadasestniniciados.
Ademsdelostrabajosdecopiadeseguridad,transferenciadearchivosyrestauracin
secreauntrabajoadicionalencargadodeenviaralertasenelcasodequealgunade
las operaciones falle por algn motivo. Este trabajo se crea en el servidor de
supervisinencasodequeexista.Sino,secreauntrabajoparaestefinencadauna
delasinstanciasimplicadas.
Prctica.Configurareltrasvasederegistros.
En esta prctica utilizar nuevamente tres instancias para configurar el trasvase de
registros de la instancia por defecto a la instancia SQLINST3. La instancia SQLINST2
actuarcomoservidordesupervisin.
1. Enprimerlugaresnecesariocreardoscarpetasenelservidor.Enunadeellasse
almacenarn las copias de seguridad del registro de transacciones. Esta carpeta
debe tener asociado un recurso compartido. Una segunda carpeta ser utilizada
paraalmacenarlascopiasguardadasenelrecursoanterior.Enestaprcticasehan
utilizadolossiguientesnombresparalascarpetasyelrecurso:
Recurso/Carpeta
\\SRVCURSO\Logs_Principal

C:\Logs_Destino

Descripcin
Es un recurso compartido asociado a la carpeta
C:\Logs_Principal. En ella se guardarn las copias de
seguridaddelregistrodetransacciones.
Se copiarn los archivos generados en la primera
carpeta. A partir de estos archivos se har la
restauracinenlainstanciadedestino.

Importante:AsegresequelascuentasdeservicioasociadasaSQLServeryalos
Agentes de las instancias implicadas tienen permiso de lectura y escritura en
ambascarpetas.
2. Inicie SQL Server Management Studio y conctese a la instancia por defecto
utilizando seguridad integrada de Windows. Deber haber iniciado sesin en la
mquinaconunacuentaconpermisosdeadministrador.
3. Acontinuacinconctesealasotrasdosinstanciastalycomohizoenlaprcticade
database mirroring con el objeto de que aparezcan las tres instancias en el
explorador.ElaspectodeSQLServerManagementStudiohadesersimilaraldela
siguienteimagen:

160

Unidad9.Altadisponibilidad.

4. Enlainstanciapordefecto(SRVCURSO)despliegueelnodoBasesdedatos.Haga
clicconelbotnderechodelratnsobreAdventureWorksyseleccionelaopcin
Tareas>Trasvasarregistrodetransacciones.

5. En la siguiente ventana seleccione la opcin Habilitar sta como base de datos


primaria en una configuracin de trasvase de registros. A continuacin pulse el
botnConfiguracindecopiadeseguridad.

161

Unidad9.Altadisponibilidad.

6. Enlacajadetextohabilitadaparaelloindiquelarutadereddondesealmacenarn
las copias de seguridad del registro de transacciones, que en este caso es
\\SRVCURSO\Logs_Principal.Losarchivosderegistroquetenganmsde72horas
de antigedad sern eliminados y se enviar una alerta al administrador si no se
hace una copia de seguridad en un plazo de 1 hora. En el servidor principal se
crear un trabajo llamado LSBackup_AdventureWorks encargado de hacer estas
copias. Pulse el botn Programar para indicar cada cuanto tiempo han de
realizarse.

7. En el apartado Frecuencia diaria indique que la tarea de copia suceder cada 2


minutosypulseelbotnAceptar.

162

Unidad9.Altadisponibilidad.

8. Pulse de nuevo el botn Aceptar para finalizar la configuracin de la tarea de


copia.
9. Deregresoenlaventanadeconfiguracindeltrasvasederegistrospulseelbotn
Agregarparaindicarquinstanciasoportarlacopiadelabasededatosprincipal.

10. Pulse el botn Conectar y seleccione la instancia SQLINST3. Conctese utilizando


seguridad integrada de Windows. Seleccione a continuacin la primera de las
opcionesyhagaclicenlapestaaCopiararchivos.MedianteelbotnOpcionesde
restauracintienelaposibilidaddeindicarlaubicacindelosarchivosdedatosen
elservidordedestino.Sinoindicanadaseutilizarnlasrutaspordefecto.

163

Unidad9.Altadisponibilidad.

11. A continuacin indique la carpeta donde sern copiados los registros de


transaccionesenelservidordedestinoypulsedespuselbotnProgramarpara
indicarlafrecuenciaconqueseejecutareltrabajodecopia.

12. Establezcaunafrecuenciadeejecucinde3minutosypulseelbotnAceptar.

164

Unidad9.Altadisponibilidad.

13. Seleccione la pestaa Restaurar registro de transacciones. En este ejemplo se


indica que la base de datos quedar en modo STANDBY cuando se restauren los
registrosdetransaccionesenelservidordedestinoparapermitiroperacionesde
lecturaenlabasededatos.Seindicaademsquelosusuariosserndesconectados
antesderestaurarlacopiadeseguridad.Encasodequetrascurran45minutossin
restaurar una copia se enviar una alerta al administrador. Una vez establecidos
estos valores pulse el botn Programar para indicar la frecuencia con que se
ejecutareltrabajoderestauracin.

165

Unidad9.Altadisponibilidad.

14. Establezcaunafrecuenciade4minutosypulseelbotnAceptar.

166

Unidad9.Altadisponibilidad.

15. Pulse nuevamente el botn Aceptar. Slo falta indicar cul ser el servidor de
supervisin.SeleccionelaopcinUtilizarunainstanciadelservidordesupervisin
yacontinuacinpulseelbotnConfiguracin.

16. PulseelbotnConectaryseleccionelainstanciaSQLINST2yconcteseutilizando
seguridadintegradadeWindows.Losservidoresprincipalydestinoinformanaesta
instancia acerca del estado de las operaciones que intervienen eneltrasvase. En
esta ventana se indica que estos servidores se conectarn al servidor de
supervisinutilizandolacuentaconlaqueseejecutaelAgentedeSQLServeren
cada una de ellos. Las operaciones registradas en el historial en el servidor de
supervisinserneliminadastras96horas.PulseelbotnAceptar.

167

Unidad9.Altadisponibilidad.

17. Si desea generar el script asociado a la configuracin del trasvase pulse el botn
Incluirconfiguracin.ParafinalizarpulseelbotnAceptar.
18. Si los parmetros de configuracin son correctos deber mostrarse una ventana
similaraesta.PulseelbotnCerrar.

19. Compruebelostrabajosquehansidocreadosencadaunadelasinstancias.Para
ello empiece por ejemplo por la instancia por defecto, desplegando en el
exploradordeobjetoselelementoTrabajosdentrodelAgente.Enestainstanciase
ha creado el trabajo encargado de hacer las copias de seguridad del registro de
transacciones.

20. Repitalosmismospasosparacomprobarlostrabajoscorrespondientesenlasotras
dosinstancias.
21. Compruebe tambin que cada dos minutos se genera un nuevo archivo en la
carpeta C:\Logs_Principal. Cada uno de ellos se corresponde con una copia de
seguridaddellogdetransacciones.
22. Verifique que cada tres minutos esos archivos son transferidos a la carpeta
C:\Logs_Destino.
168

Unidad9.Altadisponibilidad.

23. Para comprobar que efectivamente se replican las transacciones de una base de
datos a otra, seleccione la base de datos AdventureWorks en la instancia por
defectoydespuspulseelbotnNuevaconsulta.Copieypegueelsiguientescript
yejectelopulsandolateclaF5.
USE AdventureWorks
GO
UPDATE Production.Product
SET ListPrice = 99
WHERE ProductID = 1

24. Cambie la conexin asociada a la ventana de consulta y conctese a la instancia


tres.Pasadosunosminutosejecuteelsiguientescript.
USE AdventureWorks
GO
SELECT ProductID, ListPrice
FROM Production.Product
WHERE ProductID = 1

25. Si desea comprobar en qu momento se ejecutar la siguiente operacin de


restauracindesplieguelostrabajosdelAgenteSQLServerasociadoalainstancia
SQLINST3. Haga clic con el botn derecho del ratn sobre el trabajo llamado
LSRestore_SRVCURSO_AdventureWorks y seleccione la opcin Historial.
Compruebequecadaoperacinsehaejecutadocadacuatrominutostalycomose
indicenlaconfiguracindeltrasvasederegistros.

26. Parafinalizarlaoperacindetrasvasederegistroshagaclicconelbotnderecho
del ratn sobre la base de datos AdventureWorks en la instancia principal y
seleccionelaopcinTareas>Trasvasarregistrosdetransacciones.

169

Unidad9.Altadisponibilidad.

27. Desactive la opcin Habilitar sta como base de datos primaria en una
configuracindetrasvasederegistrosypulseelbotnSenelsiguientecuadrode
dilogo.

28. PulseelbotnAceptar.

29. Estoharqueseeliminenlostrabajosgeneradosencadaunadelasinstancias.Por
ltimo, y para dejar la base de datos de la instancia SQLINST3 totalmente
operativa,ejecuteelsiguientescriptendichainstancia:
USE master
GO
RESTORE DATABASE Adventureworks WITH RECOVERY

170

Unidad10.Replicacin.

Unidad10.Replicacin.
La replicacin en SQL Server es un conjunto de tecnologas dirigidas a copiar y
distribuirdatosdesdeunabasededatosaotra.Lareplicacinesidealenentornosde
mltiples servidores que se encuentran en distintas ubicaciones geogrficas. Seevita
de esta forma que las aplicaciones accedan a un nico repositorio central de
informacin minimizando as los riesgos de falta de disponibilidad por fallos en las
comunicaciones.
Objetivosdeestaunidad.
Describirlareplicacinysuscomponentes.
Describirlosdistintostiposdereplicacin.
Aprenderaconfigurarlareplicacinentredosinstancias.

Leccin1.Componentesenlareplicacin.
Enestaleccinsedescribenlosrolesqueinterpretanlosservidoresimplicadosenuna
arquitecturadereplicacin.Sedescribetambinelescenariopublicadordistribuidor
suscriptoryloselementosqueintervienenenl.
Despusdeestaleccinsercapazde....
Describirlasdistintasfuncionesasignadasacadainstanciaenunescenariode
replicacin.
Describirlaterminologaempleadaenreplicacindedatos.
Tiposdeservidores.
Enunescenariodereplicacinlasinstanciasimplicadaspuedenunoovariosdeestos
papeles:
Publicador.
Distribuidor.
Suscriptor.
ElPublicador.
En este servidor se encuentran los datos originales. Estos datos se distribuyen al
distribuidorydesdeahseenvanalossuscriptores.
Eldistribuidor.
Almacena informacin relativa a la replicacin, metadatos y datos en una base de
datoscreadaatalefecto.Unpublicadorpuedeactuartambincomodistribuidorpero
sisehaceunusointensivodelareplicacinconvienequeelpapeldedistribuidorlo
desempeeunainstanciadistinta.

171

Unidad10.Replicacin.

Elsuscriptor.
Almacenaunarplicadelosdatosqueresidenenelpublicador.Dependiendodeltipo
de replicacin que se implemente, en el suscriptor estarn o no permitidas las
actualizacionessobrelosdatos.
Artculosypublicaciones.
Enreplicacinseempleandostrminosquesonutilizadostambinenelmundoreal
cuandosehabladepublicacinderevistasoperidicos:artculosypublicaciones.
Unartculoeslaunidadbsicadereplicacinyrepresentaalobjetodebasededatos
quesequierereplicar.Unartculosepuedecrearapartirde:

Unatabla.
Unavista.
Unsubconjuntodefilasocolumnasdeunatablaovista.
Unavistaindexada.
Definicionesdeprocedimientosalmacenados.
Ejecucindeprocedimientosalmacenados.

Los suscriptores se suscriben a publicaciones, o lo que es lo mismo, a conjuntos de


artculos.Ademsdefacilitarlaadministracin,laspublicacionespermitenmantener
la integridad de datos agrupando informacin que debe permanecer junta. Por
ejemplo, una publicacin basada en las tablas Pedidos y DetalleDePedidos permitira
mantenerlaconsistenciadelosdatos.
Suscripcionesdeinsercinydeextraccin.
Existendosmodosenquelossuscriptoresaccedenalaspublicaciones.Enelmodode
insercin(push)eldistribuidorcopialosdatosalabasededatosdelsuscriptor.Este
modo es el idneo en escenarios en que el nmero de suscriptores es reducido y se
optaportenerunnicositiodeadministracindesuscripciones,eldistribuidor.
En el modo de extraccin (pull) es el suscriptor quien obtiene los datos desde el
distribuidor.Esteescenarioseempleacuandolossuscriptoressonmuchos,liberando
as al distribuidor de la carga de trabajo que supone mantener un alto nmero de
suscripciones.

Leccin2.Tiposdereplicacin.
Existenbsicamentetrestiposdereplicacin:
Replicacindesnapshots.
Replicacintransaccional.
Replicacindemezcla.

172

Unidad10.Replicacin.

Replicacindeinstantneas(snapshots).
En este tipo de replicacin el suscriptor recibe conjuntos completos de datos a
intervalos programados. Los cambios que se hubieran producido en el suscriptor en
dicho conjunto de datos son sobrescritos en la siguiente operacin de copia. No se
recomiendaestetipodereplicacincuandoelvolumendedatosareplicareselevado.
Replicacintransaccional.
Enlareplicacintransaccionalprimerosehaceunacopiainicialcompletadelconjunto
de datos a replicar. En las copias posteriores nicamente se transfieren las
modificacionesqueafectanaeseconjuntodedatos.
Replicacindemezcla.
Esteeseltipodereplicacinidneocuandosedeseapermitirquetantopublicadores
comosuscriptoresactualicenlosdatos.Elprocesocomienzatambinapartirdeuna
copiacompletadelosdatosdesdeelpublicadorhacialossuscriptores.Posteriormente
loscambiossepropagandeunoaotroparamantenerlainformacinsincronizada.El
sistemaproporcionamecanismosautomticosderesolucindeconflictosencasode
queelmismodatosemodifiqueenvariosservidores.
Losagentesdereplicacin.
SQL Server utiliza un conjunto de programas denominados agentes de replicacin
paraejecutar y controlar todo el proceso. Estos agentes se implementan a travs de
trabajos en el Agente de SQL Server. En un proceso de replicacin participan los
siguientesagentes:
Agente
SnapshotAgent
LogReaderAgent

DistributionAgent

MergeAgent

QueueReaderAgent

Descripcin
Preparaelesquemaylacopiainicialdelosdatos.Seempleaen
todoslostiposdereplicacin.
Monitorizaellogdetransaccionesycopiaenlabasededatosdel
distribuidorslolastransaccionesqueafectanalapublicacin.Se
empleaenlareplicacintransaccional.
Entregalacopiainicialdelosdatosalossuscriptoresyaplicalas
transacciones que se vayan sucediendo. Se emplea en la
replicacindeinstantneasyenlatransaccional.Ensuscripciones
push se ejecuta en el distribuidor mientras que en suscripciones
pullseejecutaenlossuscriptores.
Copia la instantnea inicial en los suscriptores y mezcla los
cambios que ocurran en el publicador y en los suscriptores.
Tambin se encarga de resolver conflictos cuando en dos
servidores se ha modificado la misma informacin. En
suscripciones de insercin (push) se ejecuta en el distribuidor
mientras que en suscripciones de extraccin (pull)se ejecuta en
lossuscriptores.
Leemensajesalmacenadosencolasyaplicalastransaccionesde
formaasncronaenelpublicador.Seempleaenreplicacionesde
instantneas y transaccionales cuando son configuradas para
almacenarlasactualizacionesencolas.

173

Unidad10.Replicacin.

Prctica.Configurarlareplicacindeinstantneas.
En esta prctica utilizar las tres instancias que ya emple en prcticas anteriores.
SRVCURSOactuarcomopublicador,SQLINST2sereldistribuidorySQLINST3asumir
elpapeldesuscriptor.
1. Antes de comenzar con la configuracin de la replicacin cree un recurso
compartidoasociadoaunacarpetaensudiscolocal.Enesterecursosecopiarn
lasinstantneasamedidaquesevayangenerando.Enestaprcticasehacreadola
carpetaC:\Snapshotsyelrecurso\\SRVCURSO\Snapshots.
2. Inicie SQL Server Management Studio y conctese a la instancia por defecto
utilizando seguridad integrada de Windows. Deber haber iniciado sesin en la
mquinaconunacuentaconpermisosdeadministrador.
3. Acontinuacinconctesealasotrasdosinstanciastalycomohizoenlaprcticade
database mirroring con el objeto de que aparezcan las tres instancias en el
explorador.ElaspectodeSQLServerManagementStudiohadesersimilaraldela
siguienteimagen:

4. En primer lugar va a configurar el distribuidor. Para ello, en el explorador de


objetos, despliegue el elemento asociado a la instancia SQLINST2. Despus haga
clic con el botn derecho del ratn sobre el elemento Rplica y seleccione la
opcinConfigurardistribucin.

174

Unidad10.Replicacin.

5. EnlaventanadepresentacindelasistentepulseelbotnSiguiente.

6. SeleccionelaprimeraopcinypulseelbotnSiguiente.

175

Unidad10.Replicacin.

7. Acontinuacinindiqueelrecursodereddondeseubicarnlasinstantneasquese
vayan generando y a las que acceder el agente de distribucin para ponerlas a
disposicindelsuscriptor.PulseelbotnSiguiente.

8. Enlasiguienteventanaindiqueelnombredelabasededatosdedistribucinylas
carpetas donde se almacenarn los archivos de datos y de registro de
transacciones.CuandoterminepulseelbotnSiguiente.

176

Unidad10.Replicacin.

9. A continuacin debe indicar qu servidor actuar como publicador. Desactive la


marcaqueaparecejuntoalnombredelservidorSRVCURSO\SQLINST2yaqueesta
instancia actuar nicamente como distribuidor. Pulse el botn Agregar y
seleccionelaopcinAgregarpublicadordeSQLServer.

10. SeleccionelainstanciaSRVCURSOypulseelbotnConectar.

177

Unidad10.Replicacin.

11. PulseelbotnSiguiente.

12. Es necesario indicar una contrasea que ser utilizada por los publicadores para
que puedan conectarse con el distribuidor. Una vez establecida pulse el botn
Siguiente.

13. SeleccionelaprimeraopcinypulseelbotnSiguiente.

178

Unidad10.Replicacin.

14. Por ltimo, revise la informacin acerca de las opciones seleccionadas y pulse el
botnFinalizarparaquecomienceelprocesodeconfiguracindeladistribucin.

15. Sitodohaidobiendeberverunaventanasimilaraesta:

16. A continuacin configurar una publicacin en la instanciaSRVCURSOque estar


formadaporunsoloartculobasadoenunextractodelatablaProduction.Product
delabasededatosAdventureWorks.SereplicarnlascolumnasProductID,Name
y ListPrice de aquellos productos que tengan un valor 1 en la columna
Subcategory. Para comenzar, en el explorador de objetos, despliegue el nodo
correspondiente a la instancia SRVCURSO. A continuacin haga clic con el botn
derecho del ratn sobre el elemento Rplica y seleccione la opcin Nuevo
>Publicacin.

179

Unidad10.Replicacin.

17. EnlapantalladebienvenidadelasistentepulseelbotnSiguiente.

18. Seleccionelasegundaopcinparaindicarculserelserservidorencargadodela
distribucin. Pulse a continuacin el botn Agregar y conctese a la instancia
SQLINST2 utilizando seguridad integrada de Windows. Despus pulse el botn
Siguiente.

180

Unidad10.Replicacin.

19. Escribalacontraseaqueindicenelpunto12,cuandoconfigurladistribuciny
pulseelbotnSiguiente.

20. Seleccionelabasededatosquecontienelosobjetosapublicar,AdventureWorks,
ypulseelbotnSiguiente.

181

Unidad10.Replicacin.

21. En el panel superior seleccione Publicacin de instantneas y pulse el botn


Siguiente.

22. En el panel de la izquierda, despliegue el nodo Tablas. Localice y despliegue el


elementocorrespondientealatablaProductyseleccionelascolumnasProductID,
Name, ListPrice y ProductSubcategory. Cuando haya finalizado pulse el botn
Siguiente.

23. Para publicar nicamente los productos que tengan valor 1 en la columna
correspondientealasubcategora,pulseelbotnAgregar.

182

Unidad10.Replicacin.

24. En el panel de la izquierda haga doble clic sobre el elemento


ProductSubcategoryID. Despus, en el panel de la derecha aada el texto = 1.
ParaterminarpulseelbotnAceptar.

25. PulseelbotnSiguiente.

183

Unidad10.Replicacin.

26. Acontinuacinactivelasdosopcionesqueaparecen.Laprimeraestablecequese
crear una instantnea al finalizar el proceso de configuracin de la publicacin.
Activando la segunda opcin podr establecer la frecuencia con la que se
generarnlasinstantneasposterioresalainicial.

27. EnlaventanaanteriorpulseelbotnCambiarparaestablecerunafrecuenciade2
minutos. Cuando haya terminado pulse el botn Aceptar y de regreso en la
ventanaanteriorpulseelbotnSiguiente.

28. ParaconfigurarlasopcionesdeseguridaddelagentepulseelbotnConfiguracin
deseguridad.

184

Unidad10.Replicacin.

29. El Agente de Instantneas se ejecutar en el Distribuidor bajo el contexto de la


cuentadelAgentedeSQLServer.Tambinseconectaralpublicador(aunquesea
elmismoservidor)utilizandoesamismacuenta.Configurelasopcionestalycomo
se muestra en esta imagen y pulse el botn Aceptar y de regreso en la ventana
anteriorpulseelbotnSiguiente.

30. SeleccionelaopcinCrearpublicacinypulseelbotnSiguiente.

185

Unidad10.Replicacin.

31. AsigneunnombrealapublicacinypulseelbotnFinalizar.

32. PulseelbotnCerrar.

33. DespliegueelnodoTrabajosdelAgentedeSQLServerdelainstanciaSQLINST2.
Compruebequesehageneradountrabajoencargadodegenerarlasinstantneas.
EnestecasoeltrabajosellamaSRVCURSOAdventureWorksPub_Productos1.

186

Unidad10.Replicacin.

34. ParacrearunasuscripcindespliegueelnodoRplicaenlainstanciaSQLINST3.A
continuacinhagaclicconelbotnderechodelratnsobreelnodoSuscripciones
localesyseleccioneelelementoNuevassuscripciones.

35. EnlaventanadepresentacindelasistentepulseelbotnSiguiente.

187

Unidad10.Replicacin.

36. En el desplegable seleccione Buscar publicador de SQL Server y conctese a la


instanciaSRVCURSOutilizandoseguridadintegradadeWindows.

37. SeleccionelapublicacinquecreanteriormenteypulseelbotnSiguiente.

188

Unidad10.Replicacin.

38. En este caso crear una suscripcin de extraccin, por lo que el Agente de
Distribucinseejecutarenelsuscriptor.Seleccionelasegundaopcinypulseel
botnSiguiente.

39. Para indicar que los datos procedentes del publicador se almacenarn en una
nuevabasededatos,eneldesplegableseleccioneBasededatosnueva.

40. IndiqueunnombreparalabasededatosypulseelbotnAceptar.Deregresoenla
ventanaanteriorpulseelbotnSiguiente.

189

Unidad10.Replicacin.

41. Paraestablecerlasopcionesdeseguridaddelagentededistribucinpulseelbotn
queapareceresaltadoenlaimagen:

42. Aligualqueelagentedeinstantneas,elagentededistribucinseejecutarenel
contexto de la cuenta del Agente de SQL Server y el suscriptor utilizar estas
mismas credenciales para conectarse al distribuidor. Marque las opciones tal y
comosemuestraenlasiguienteimagenypulseelbotnAceptar.

190

Unidad10.Replicacin.

43. PulseelbotnSiguiente.

44. IndiquequeelAgentededistribucinseejecutarcontinuamenteparamantener
lasincronizacinypulseelbotnSiguiente.

191

Unidad10.Replicacin.

45. En la siguiente ventana indique en qu momento se inicializar la base de datos


AW_PubconunainstantneadelosdatosypulseelbotnSiguiente

46. MarquelaopcinCrearlassuscripcionesypulseelbotnSiguiente.

47. ReviselasopcionesseleccionadasypulseelbotnFinalizar.

192

Unidad10.Replicacin.

48. PulseelbotnCerrar.

49. Para comprobar que la rplica est funcionando correctamente en primer lugar
abralacarpetaC:\Snapshots.Enellasedebenestargenerandolasinstantneasa
razndeunacadadiezminutos.Revisecadaunadelascarpetascreadasparaver
elcontenido.

193

Unidad10.Replicacin.

50. Acontinuacin,enlainstanciaSQLINST3,despliegueelnodoTablasdelabasede
datosAW_Pub.CompruebequesehacreadolatablaProduction.Product.

51. PulseelbotnNuevaconsultaenlabarradeherramientasyejecuteelsiguiente
scriptparacomprobarlasfilasquehansidoreplicadas:
SELECT * FROM Production.Product

194

Unidad10.Replicacin.

52. Realice una modificacin de alguna de esas filas en la base de datos


AdventureWorksenelpublicador.Paraellocambielaconexindelaventanade
consultayconctesealainstanciaSRVCURSOyejecuteelsiguientescript:
USE AdventureWorks
GO
UPDATE Production.Product
SET ListPrice = 5000
WHERE ProductID = 771

53. Cambie de nuevo la conexin a la instancia SQLINST3 y ejecute nuevamente la


instruccin SELECT anterior. Comprobar que, una vez se haya generado la
instanciaenelpublicador,elcambioserreplicadoenlabasededatosAW_PUB.

195

Unidad10.Replicacin.

196

Вам также может понравиться