Ary Fernando Narvaez C. [email protected] Febrero 2014 CONTENIDO Module 1: Introduction to SQL Server 2014 Database Administration Module 2: Installing and Configuring SQL Server 2014 Module 3: Working with Databases and Storage Module 4: Planning and Implementing a Backup Strategy Module 5: Restoring SQL Server 2014 Databases Module 6: Importing and Exporting Data Module 7: Monitoring SQL Server 2014 Module 8: Tracing SQL Server Activity Module 9: Managing SQL Server Security Module 10: Auditing Data Access and Encrypting Data Module 11: Performing Ongoing Database Maintenance Module 12: Automating SQL Server 2014 Management Module 13: Monitoring SQL Server 2014 by Using Alerts and Notifications CENTRO DE INSTALACIÓN CHEQUEO PREVIO INSTALACIÓN LICENCIA • Enterprise • Business Intelligence • Standard • Developer • Web • Express INSTALACIÓN NUEVA INSTALACIÓN O ADICIONAR CARACTERÍSTICAS COMPONENTES DEL SERVIDOR • Motor de base de datos: el servicio principal para almacenar, procesar y proteger datos. • Analysis Services: incluye las herramientas para crear y administrar aplicaciones de procesamiento analítico en línea (OLAP) y de minería de datos. • Reporting Services: incluye componentes de servidor y de cliente para crear, administrar e implementar informes tabulares, matriciales, gráficos y de forma libre. • Integration Services: conjunto de herramientas gráficas y objetos programables para mover, copiar y transformar datos. También incluye el componente de Data Quality Services (DQS) para Integration Services • Master Data Services: solución de SQL Server para la administración de datos maestros.MDS HERRAMIENTAS DE ADMINISTRACIÓN • SQL Server Management Studio • Administrador de configuración de SQL Server • SQL Server Profiler • Asistente para la optimización de Motor de base de datos • Cliente de calidad de datos • SQL Server Data Tools • Componentes de conectividad SQL SERVER MANAGEMENT STUDIO ADMINISTRADOR DE CONFIGURACIÓN DE SQL SERVER SERVICIOS INSTALADOS POR SQL SERVER Servicios de base de datos de SQL Server: el servicio para el SQL Server relacional de Motor de base de datos. El archivo ejecutable es <MSSQLPATH>\MSSQL\Binn\sqlservr.exe. Agente SQL Server: ejecuta trabajos, supervisa SQL Server, activa alertas y habilita la automatización de algunas tareas administrativas. La propiedad SIDHistory hace esto posible. El archivo ejecutable es <MSSQLPATH>\MSSQL\Binn\sqlagent.exe. Analysis Services: proporciona funciones de procesamiento analítico en línea (OLAP) y de minería de datos para aplicaciones de Business Intelligence. El archivo ejecutable es <MSSQLPATH>\OLAP\Bin\msmdsrv.exe. Reporting Services: administra, ejecuta, crea, programa y envía informes. El archivo ejecutable es <MSSQLPATH>\Reporting Services\ReportServer\Bin\ReportingServicesService.exe. Integration Services: proporciona compatibilidad de administración para el almacenamiento y la ejecución de paquetes de Integration Services. La ruta de acceso del archivo ejecutable es <MSSQLPATH>\120\DTS\Binn\MsDtsSrvr.exe SQL SERVER PROFILER SERVICIOS INSTALADOS POR SQL SERVER SQL Server Browser: servicio de resolución de nombres que proporciona información de conexión de SQL Server a los equipos cliente. La ruta de acceso del archivo ejecutable es c:\Archivos de programa (x86)\Microsoft SQL Server\90\Shared\sqlbrowser.exe Búsqueda de texto completo: crea rápidamente índices de texto completo del contenido y de las propiedades de los datos estructurados y semiestructurados para permitir el filtrado de documentos y la separación de palabras en SQL Server. Objeto de escritura de SQL: permite que las aplicaciones de copias de seguridad y restauración funcionen en el marco del Servicio de instantáneas de volumen (VSS). SQL Server Distributed Replay Controller: proporciona la orquestación de la reproducción de seguimiento en varios equipos cliente de Distributed Replay. SQL Server Distributed Replay Client: uno o más equipos cliente de Distributed Replay que funcionan como Distributed Replay Controller para simular cargas de trabajo simultáneas en una instancia de Motor de base de datos de SQL Server. ADMINISTRADOR DE CONFIGURACIÓN DE SQL SERVER Iniciar, detener, pausar, reanudar y reiniciar el motor de base de datos, Agente SQL Server o el Servicio SQL Server Browser BASE DE DATOS Crear base de datos • Archivos • Tamaño inicial • Controlando el crecimiento de los archivos • Moviendo Archivos de Base de datos • Procedimiento de reubicación planeada 1. Ejecute la instrucción siguiente: • ALTER DATABASE database_name SET OFFLINE; 2. Mueva el archivo o los archivos a la nueva ubicación. 3. Con cada archivo que mueva, ejecute la instrucción siguiente: ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' ); 4. Ejecute la instrucción siguiente: ALTER DATABASE database_name SET ONLINE; 5. Compruebe el cambio de archivo ejecutando la consulta siguiente: SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>'); BASE DE DATOS Reubicación para el mantenimiento planeado del disco Para reubicar un archivo como parte de un proceso de mantenimiento planeado del disco 1. Para cada archivo que se va a mover, ejecute la siguiente instrucción. ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' ); 2. Detenga la instancia de SQL Server o cierre el sistema para realizar el mantenimiento. Mueva el archivo o los archivos a la nueva ubicación. 3. Reinicie la instancia de SQL Server o el servidor. 4. Compruebe el cambio de los archivos ejecutando la consulta siguiente. SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>'); EXTENSIÓN DEL GRUPO DE BÚFERES A partir de SQL Server 2014, la extensión del grupo de búferes proporciona una perfecta integración de una extensión de la memoria de acceso aleatorio no volátil (es decir, una unidad de estado sólido) con el grupo de búferes del Motor de base de datos para mejorar considerablemente el rendimiento de E/S. • Mayor rendimiento de E/S aleatoria • Menor latencia de E/S • Mayor rendimiento de las transacciones • El rendimiento de lectura mejora con un grupo de búferes EXTENSIÓN DEL GRUPO DE BÚFERES EXTENSIÓN DEL GRUPO DE BÚFERES -- consultar Buffer pool extensión SELECT path, file_id, state, state_description, current_size_in_kb FROM sys.dm_os_buffer_pool_extension_configuration; -- Habilitar el buffer pool Extensión ALTER SERVER CONFIGURATION SET BUFFER POOL EXTENSION ON (FILENAME = 'C:\SSDCACHE\Example.BPE', SIZE = 32 MB); -- Configuracion EXEC sp_configure MODELOS DE RECUPERACIÓN Un modelo de recuperación es una propiedad de base de datos que controla la forma en que se registran las transacciones, si el registro de transacciones requiere que se realice la copia de seguridad y si lo permite, y qué tipos de operaciones de restauración hay disponibles Riesgo ¿Recuperación hasta un momento dado? Simple Sin copias de seguridad de registros Los cambios realizados después de la copia de seguridad más reciente no están protegidos. Solo se puede recuperar hasta el final de una copia de seguridad. Completa Requiere copias de seguridad de registros. No se pierde trabajo si un archivo de datos se pierde o resulta dañado. Normalmente ninguno. Se puede recuperar hasta determinado momento, siempre que las copias de seguridad se hayan completado hasta ese momento Por medio de registros de operaciones masivas Requiere copias de seguridad de registros. Complemento del modelo de recuperación completa que permite operaciones de copia masiva de alto rendimiento. Reduce el espacio que usa el registro de transacciones mediante el rastreo mínimo de operaciones masivas Si el registro resulta dañado o se han realizado operaciones masivas desde la última copia de seguridad de registros, se pueden repetir los cambios desde esa última copia de seguridad. En caso contrario, no se pierde el trabajo. Se puede recuperar hasta el final de cualquier copia de seguridad. ESTRATEGIAS DE COPIAS DE SEGURIDAD Y RESTAURACIÓN EN SQL SERVER La finalidad de crear copias de seguridad de SQL Server es poder recuperar una base de datos dañada. Sin embargo, las operaciones de copia de seguridad y restauración deben personalizarse para un entorno concreto y funcionar con los recursos disponibles. Por tanto, un uso confiable del proceso de copia de seguridad y restauración para la recuperación de datos requiere una estrategia de copia de seguridad y restauración. Una estrategia bien diseñada maximiza la disponibilidad de los datos y minimiza la pérdida de los mismos, teniendo en cuenta los requisitos concretos de su empresa. Se recomienda documentar los procedimientos de copia de seguridad y restauración, y mantener una copia de la documentación en su libro de documentación de procesos. ESTRATEGIA DE COPIA DE SEGURIDAD ¿Cuántas horas al día requieren las aplicaciones acceso a la base de datos? Si prevé un período de poca actividad, se recomienda programar las copias de seguridad de bases de datos completas en dicho período. ¿Cuál es la probabilidad de que se produzcan cambios y actualizaciones? Si se realizan cambios frecuentes, tenga en cuenta los siguientes aspectos: Con el modelo de recuperación simple, considere la posibilidad de programar copias de seguridad diferenciales entre copias de seguridad de bases de datos completas. Una copia de seguridad diferencial sólo incluye los cambios desde la última copia de seguridad de base de datos completa. Con el modelo de recuperación completa, debe programar copias de seguridad de registros frecuentes. La programación de copias de seguridad diferenciales entre copias de seguridad completas puede reducir el tiempo de restauración al disminuir el número de copias de seguridad de registros que se deben restaurar después de restaurar los datos. ESTRATEGIA DE COPIA DE SEGURIDAD ¿Es probable que los cambios tengan lugar sólo en una pequeña parte de la base de datos o en una grande? Para una base de datos grande en la que los cambios se concentran en una parte de los archivos o grupos de archivos, las copias de seguridad parciales o de archivos pueden ser útiles. ¿Cuánto espacio en disco necesitará una copia de seguridad completa de la base de datos? EXEC sp_spaceused @updateusage = N'TRUE'; ESTRATEGIAS DE COPIAS DE SEGURIDAD Y RESTAURACIÓN EN SQL SERVER Completo Completo + Diferencial Completo +Transaccional Completo + Transaccional + diferencial Diario de ser posible Completo una vez por semana, diferencial una vez al dia. Repetir el ciclo Completo una vez por semana, transaccionales cada x horas. Repetir el ciclo Completo una vez por semana, transaccional cada x horas y diferencial diario, repetir el ciclo Recomendable para pequeñas DB Mediana y grandes DB Mediana y grandes BD Mediana y grande BD, Copia mas lenta Copias rapidas Copias rapidas Copias rapidas Registro de transacciones nunca se trunca Registro de transacciones no se trunca Registro de transacciones se trunca Registro de transacciones se trunca Restauracion mas rápida Restauracion lenta Restauracion lenta Restauracion rapida, (depende del punto) RESTRICCIONES No se pueden realizar copias de seguridad de los datos sin conexión Las operaciones que no se pueden ejecutar durante la copia de seguridad de la base de datos o del registro de transacciones son las siguientes: Operaciones de administración de archivos, como la instrucción ALTER DATABASE con la opción ADD FILE o la opción REMOVE FILE. Operaciones de reducción de la base de datos o de reducción de un archivo.Esto incluye las operaciones de reducción automática. Si intenta crear o eliminar un archivo de la base de datos durante la operación de copia de seguridad, se producirá un error en la operación de creación o eliminación. IMPORTAR Y EXPORTAR DATOS DE FORMA MASIVA Import and Export Wizard BCP: La utilidad bcp hace copias masivas de los datos entre una instancia de Microsoft SQL Server y un archivo de datos en un formato especificado por el usuario. bcp AdventureWorks2014.Sales.Currency out C:\DATA_BACKUP\CurrencyTypes.txt -S SEBASTIAN-PC\SQLEVAL -T -c bcp "SELECT FirstName, LastName FROM AdventureWorks2014.Person.Person ORDER BY LastName, Firstname" queryout C:\DATA_BACKUP\Contacts.txt -S SEBASTIAN-PC\SQLEVAL -c -T bcp DBEJEMPLO.dbo.Currency IN C:\DATA_BACKUP\CurrencyTypes.txt -S SEBASTIANPC\SQLEVAL -T -c IMPORTAR Y EXPORTAR DATOS DE FORMA MASIVA BULK INSERT Importa un archivo de datos en una tabla BULK INSERT DBEJEMPLO.dbo.Currency FROM 'C:\DATA_BACKUP\CurrencyTypes.txt' WITH ( FIELDTERMINATOR ='\t', ROWTERMINATOR ='\n' ); IMPORTAR Y EXPORTAR DATOS DE FORMA MASIVA OPENROWSET Contiene toda la información de conexión necesaria para tener acceso a datos remotos desde un origen de datos OLE DB. Es un método alternativo para tener acceso a las tablas de un servidor vinculado y, al mismo tiempo, es un método ad hoc para conectarse y tener acceso a datos remotos utilizando OLE DB Acceso a una tabla de otra base de datos SELECT a.* FROM OPENROWSET('SQLNCLI', 'Server=SEBASTIAN-PC\SQLEVAL;Trusted_Connection=yes;', 'SELECT GroupName, Name, DepartmentID FROM AdventureWorks2014.HumanResources.Department ORDER BY GroupName, Name') AS a; IMPORTAR Y EXPORTAR DATOS DE FORMA MASIVA OPENROWSET : Contiene toda la información de conexión necesaria para tener acceso a datos remotos desde un origen de datos OLE DB. Es un método alternativo para tener acceso a las tablas de un servidor vinculado y, al mismo tiempo, es un método ad hoc para conectarse y tener acceso a datos remotos utilizando OLE DB. SELECT a.* FROM OPENROWSET('SQLNCLI', 'Server=SEBASTIANPC\SQLEVAL;Trusted_Connection=yes;', 'SELECT GroupName, Name, DepartmentID FROM AdventureWorks2014.HumanResources.Department ORDER BY GroupName, Name') AS a; MONITORIANDO SQL SERVER 2014 Monitor de actividad (SQL Server Management Studio) MONITORIANDO SQL SERVER 2014 sp_who sp_who2 Notifica información de instantáneas acerca de los usuarios y procesos actuales de SQL Server, incluida la información sobre la instrucción que se ejecuta actualmente y si la instrucción está bloqueada. sp_lock Proporciona información de instantánea acerca de bloqueos, incluidos los identificadores de objeto y de índice, el tipo de bloqueo y el tipo o recurso al que se aplica el bloqueo. sp_spaceused Muestra una estimación de la cantidad actual de espacio en disco que utiliza una tabla (o toda la base de datos). EXEC sp_spaceused N'Purchasing.Vendor'; sp_monitor Muestra estadísticas que incluyen el uso de la CPU, el uso de E/S y el tiempo de inactividad desde la última vez que se ejecutó sp_monitor. ACTIVITY MONITOR El panel Overview muestra el porcentaje de tiempo del procesador, número de tareas en espera, operaciones I/O en la base de datos en MB/seg, y el número de requerimientos batch ACTIVITY MONITOR El panel Processes muestra procesos de SQL Server actualmente funcionando en la instancia. La información mostrada es: Login, aplicación y anfitrión usados, estado de tarea y comando, tiempo de espera, etc. La información en la tabla puede ser filtrada por el valor de la columna específico. ACTIVITY MONITOR EL panel Resource Waits muestra esperas para diferentes recursos: memoria, compilación, red, etc. Muestra el tiempo de espera (el tiempo que las tareas de SQL Server están esperando en recursos del sistema), el tiempo de espera reciente, el tiempo acumulativo de espera y el contador de espera promedio. DATA COLLECTOR Data Collector es otra característica de monitoreo y optimización integrada en SQL Server Management Studio. Colecta métricas de desempeño de instancias SQL Server, las guarda en un repositorio local de tal manera que puedan ser usadas para un análisis posterior TRABAJANDO CON TABLAS Diagrama de base de datos VISTAS MODIFICACION DE DATOS • INSERT • INSERT – VALUES • INSERT – SELECT • INSERT – EXEC • SELECT - INTO • UPDATE • DELETE • TRUNCATE PLAN DE EJECUCION Table Scan: Significa que el motor tiene que leer toda la tabla. Esto solo puede suceder cuando la tabla no tiene un índice clustered. Clustered Index Scan: Esta operación es muy similar a un table scan. El motor recorre toda la tabla. La diferencia entre uno y otro, es que el Clustered Index Scan se realiza en una tabla que tiene un índice Clustered y el Table Scan en una tabla que no tiene este tipo de indice. Clustered Index Seek: Si vemos esta operación, en general, podemos estar contentos. Significa que el motor está usando efectivamente el índice Clustered de la tabla. PLAN DE EJECUCION Index Seek: Aquí también si vemos esta operación, podemos estar contentos. Es similar a el Clustered Index Seek, pero con la diferencia de que se usa un índice Non Clustered. Index Scan: Esta operación se ejecuta cuando se lee el índice completo de una tabla. Es preferible a un Table Scan, ya que obviamente leer un indice es mas chico que una tabla. Esta operación puede ser síntoma de un mal uso del índice, aunque también puede ser que el motor haya seleccionado que esta es la mejor operación. Es muy común un Index Scan en un join o en un ORDER BY o GROUP BY. PLAN DE EJECUCION Joins: Un join es la relación entre 2 tablas. SQL tiene tres tipos de joins. Neested Loop Join, Merge Join y Hash Join. Dependiendo de las características de la consulta y de la cantidad de registros, el motor puede decidir uno u otro. Todo depende de las características de la consulta y del volumen de datos. Neested Loop Join: Suele ser generalmente el más frecuente. Es también el algoritmo más simple de todos. Este operador físico es usado por el motor cuando tenemos un join entre 2 tablas y la cantidad de registros es relativamente baja. También aplica con cierto tipo de joins (cross joins por ejemplo). PLAN DE EJECUCION Merge Join: Generalmente se usa cuando las cantidades de registros a comparar son relativamente grandes y están ordenadas. Aun si no están ordenadas, el motor puede predecir que es más rápido ordenar la tabla y hacer el merge join que hacer un Neested Loop Join. En muchas situaciones es frecuente ver que una consulta anteriormente usaba Neested Loop Join y en algún momento paso a usar un Merge Join. La razón de esto, es porque el volumen de datos aumento y por lo tanto, es mas optimo usar un Merge join. Hash Join: Mientras que los Loop Joins trabajan bien para conjuntos pequeños de datos y los merge join para conjuntos moderados de datos, el hash join es especialmente útil en grandes conjuntos de datos, generalmente en datawarehouses. Este operador es mucho mas paralelizable y escalable. También se usa generalmente cuando las tablas relacionadas no tienen índice en ninguna de los campos a comparar. Hay que prestar atención si vemos este tipo de operaciones, ya que puede significar un mal uso de los índices. Sin embargo, los hash joins consumen mucha memoria y SQL Server tiene un límite en la cantidad de operaciones de este tipo que puede efectuar simultáneamente. PROTEGER SQL SERVER la plataforma: Las recomendaciones de seguridad física limitan de forma estricta el acceso al servidor físico y a los componentes de hardware. Actualización del SO. Uso de FIREWALL. Actualización de SQL SERVER. . la autenticación, los objetos (incluso los datos) las aplicaciones que tienen acceso al sistema Rol fijo de nivel de servidor Descripción ROLESLosDE NIVEL SERVIDOR miembros del rol fijo DE de servidor sysadmin pueden realizar cualquier actividad en el sysadmin servidor. serveradmin Los miembros del rol fijo de servidor serveradmin pueden cambiar las opciones de configuración del servidor y apagarlo. securityadmin Los miembros del rol fijo de servidor securityadmin administran los inicios de sesión y sus propiedades.Administran los permisos de servidor GRANT, DENY y REVOKE.También pueden administrar los permisos de nivel de base de datos GRANT, DENY y REVOKE si tienen acceso a una base de datos.Asimismo, pueden restablecer contraseñas para inicios de sesión de SQL Server. processadmin Los miembros del rol fijo de servidor processadmin pueden finalizar los procesos que se ejecuten en una instancia de SQL Server. setupadmin Los miembros del rol fijo de servidor setupadmin pueden agregar y quitar servidores vinculados mediante instrucciones Transact-SQL.(Se necesita la pertenencia a sysadmin cuando se utiliza Management Studio). bulkadmin Los miembros del rol fijo de servidor bulkadmin pueden ejecutar la instrucción BULK INSERT. diskadmin El rol fijo de servidor diskadmin se usa para administrar archivos de disco. dbcreator Los miembros del rol fijo de servidor dbcreator pueden crear, modificar, quitar y restaurar cualquier base de datos. public Cada inicio de sesión de SQL Server pertenece al rol de servidor public.Cuando a una entidad de seguridad de servidor no se le han concedido ni denegado permisos específicos para un objeto protegible, el usuario hereda los permisos concedidos al rol public para ese objeto. Solo asigne permisos públicos en cualquier objeto cuando desee que el objeto esté disponible para todos los usuarios.No puede cambiar la pertenencia en public. Nombre de rol de nivel de base de datos Descripción ROLES DE NIVEL DE BASE DE DATOS db_owner Los miembros del rol fijo de base de datos db_owner pueden realizar todas las actividades de configuración y mantenimiento en la base de datos y también pueden eliminar la base de datos. db_securityadmin Los miembros del rol fijo de base de datos db_securityadmin pueden modificar la pertenencia a roles y administrar permisos.Si se agregan entidades de seguridad a este rol, podría habilitarse un aumento de privilegios no deseado. db_accessadmin Los miembros del rol fijo de base de datos db_accessadmin pueden agregar o quitar el acceso a la base de datos para inicios de sesión de Windows, grupos de Windows e inicios de sesión de SQL Server. db_backupoperator Los miembros del rol fijo de base de datos db_backupoperator pueden crear copias de seguridad de la base de datos. db_ddladmin Los miembros del rol fijo de base de datos db_ddladmin pueden ejecutar cualquier comando del lenguaje de definición de datos (DDL) en una base de datos. db_datawriter Los miembros del rol fijo de base de datos db_datawriter pueden agregar, eliminar o cambiar datos en todas las tablas de usuario. db_datareader Los miembros del rol fijo de base de datos db_datareader pueden leer todos los datos de todas las tablas de usuario. db_denydatawriter Los miembros del rol fijo de base de datos db_denydatawriter no pueden agregar, modificar ni eliminar datos de tablas de usuario de una base de datos. db_denydatareader Los miembros del rol fijo de base de datos db_denydatareader no pueden leer datos de las tablas de usuario dentro de una base de datos. INDICES Y ESTADISTICAS Fragmentación Recrear vs Re-organizar Actualizar estadísticas USE AdventureWorks2014; GO UPDATE STATISTICS Sales.SalesOrderDetail; GO RECOMENDACIONES Compruebe los registros de eventos del S.O. y los registros de SQL Server para detectar eventos inusuales. Verifique que todos los trabajos programados se han ejecutado correctamente. Confirme que las copias de seguridad se han hecho y guardado con éxito a un lugar seguro. Monitoree el espacio en disco para asegurarse de que sus servidores de SQL no se quedarán sin espacio en disco. Para un mejor rendimiento, todos los discos deben tener 15% o más de espacio libre. A lo largo del día, haga un seguimiento periódico de rendimiento utilizando Monitor de sistema y de perfiles / Traza de SQL. Monitorear regularmente e identificar problemas de bloqueo. Mantenga un registro de los cambios que realice a los servidores, incluyendo la documentación de los problemas de rendimiento a identificar y corregir. Regularmente restaure copias de seguridad en un servidor de prueba para verificar que realmente los puede restaurar. No es necesario para restaurar todas las copias de seguridad todos los días, pero debiera hacerlo a menudo para asegurarse de que usted tiene buenas copias de seguridad. Tómese su tiempo para aprender algo nuevo como un DBA para promover su desarrollo profesional.