Si soy un desarrollador, ¿qué debo conocer de SQL Server? Walter Montes Delgado Most Valuable Professional MCSA, MCSD, MCPD, MCITP, MCT @tewar93 http://waltermontes.com #SQLSat443 Patrocinadores del SQL Saturday Gold Sponsor Bronze Sponsor Geek Sponsor Walter Montes Delgado Solutions Architecture Consultant en Enhance Solutions Microsoft MVP ASP.NET/IIS CR Developers .NET http://waltermontes.com Agenda Ediciones de SQL Server Datos importantes Que si hacer Que no hacer SQL Server en la nube Ciertas razones de conocer bien SQL Server Configuración correcta en desarrollo Prevención de problemas en Rendimiento Seguridad Escalabilidad Ediciones de SQL Server 2014 Datos Importantes Escenarios Datos Importantes Escenarios: todo en uno 1. SQL Server Database Engine 2. * SQL Server Management Studio 3. Herramientas de desarrollo y un framework Datos Importantes Escenarios: todo en uno 1. SQL Server Database Engine (Express) 1. 2. 3. 4. 5. LocalDB Express Express with Tools SSMS Express Express with Advanced Services Datos Importantes Escenarios: todo en uno SQL LocalDB Contexto usuario No servicios El mismo sqlservr.exe Mismo T-SQL Instancia por usuario Lógica de activación en el cliente Datos Importantes Escenarios: todo en uno SQL LocalDB LocalDB corre en un proceso separado 4MBs binarios, 140MBs instalación Queries, Stored Procedures, Geometría y Geografía Datos Importantes Escenarios: todo en uno 1. SQL Server Database Engine (Express) 2. SQL Server Management Studio 1. 2. 3. 4. 5. LocalDB Express Express with Tools SSMS Express Express with Advanced Services Datos Importantes Servicios SQL Server Servicio Uso SQL Server Agent Ejecuta jobs, monitorea SQL Server, dispara alertas, automatización de tareas SQL Server Database Engine Motor de base de datos relacional SQL Server Browser Conexión y resolución de nombres a clientes Analysis Services Procesamiento analítico de datos (OLAP) Reporting Services Manejo de reportería Integration Services Herramientas graficas y objetos programables para mover, copiar y transformar datos Full-text search Indices en full-text Datos Importantes Escenarios: acceso remoto 1. 2. 3. 4. SQL Server Database Engine SQL Server Browser Firewall y dispositivos de red * SQL Server Management Studio 5. Herramientas de desarrollo y un framework Datos Importantes Archivos de una base de datos Tipos de archivos de datos: Primarios (.mdf) Secundarios (.ndf) Logs (.ldf) - 1 por db Datos Importantes Archivos de una base de datos Filegroups: colecciones de archivos Tareas administrativas como respaldo y recuperación Tipos Primario Definidos por usuario Datos Importantes Tipos de datos: numéricos exactos Tipo de dato Rango Espacio Tinyint 0 a 255 1 Byte Smallint -32,768 a 32,767 2 Byte Int -2,147,483,648 a 2,147,483,647 4 Byte Bigint -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 8 Byte Datos Importantes Tipos de datos: money Tipo de dato Rango Espacio Smallmoney -214,748.3648 to 214,748.3647 4 Byte Money -922,337,203,685,477.5808 to 922,337,203,685,477.5807 8 Byte Datos Importantes Tipos de datos: decimal vs float vs real Decimal: máximo 38 dígitos, exacto Float: aproximado Real: aproximado, Float(24) Evitar en WHERE usar = o <> Finanzas Datos Importantes Tipos de datos: fechas Date Datetime Datetime2 Datetimeoffset Time Time zone Datos Importantes Tipos de datos: fechas Date Datetime Datetime2 Datetimeoffset Time USAR ESTOS TIPOS DE DATOS Datos Importantes Tipos de datos: textos Char Varchar Text Datos + 2 bytes DEJAR DE USAR Nchar Nvarchar Ntext Datos Importantes Respaldo de Scripts de base de datos Control de cambios Manejo de versiones Fácil acceso SQL Server Data Tools https://msdn.microsoft.com/enus/data/hh297027 Datos Importantes Usar múltiples strings de conexión 1. Conexión para escrituras y lecturas en tiempo real 2. Conexión para información antigua (minutos) 3. Conexión para información aún más antigua Datos Importantes Object Relational Mapper 1. 2. 3. 4. 5. 6. 7. 8. Domain Model Pattern Enfoque en lógica de negocio Cambios en modelos en un solo punto Navegabilidad Configurabilidad Soporte de concurrencias Manejo de caché Transacciones Datos Importantes Object Relational Mapper 9. Procedimientos almacenados cuando hay mucha complejidad 10. Manejo de permisos y accesos limitado 11. Prevén inyección de sql Datos Importantes Object Relational Mapper Entity Framework Nhibernate Linq to SQL Dapper LLBGen Pro Datos Importantes Object Relational Mapper http://weblogs.asp.net/fbouma/fetch-performance-of-various-netorm-data-access-frameworks Datos Importantes SQL Injection Infiltración de código malicioso Parametrización de queries Procedimientos almacenados Escapando las entradas de usuario Permisología robusta Datos Importantes SQL Injection Datos Importantes Objetos: tablas Crear tablas en un non-primary filegroup Tablas que se acceden comúnmente en el mismo filegroup Índices clusterizados (además en índices únicos y comúnmente consultado) Moderación en triggers Moderación cursores Datos Importantes EXISTS VS COUNT COUNT utiliza toda la tabla IF ( (SELECT COUNT(1) FROM notes WHERE text = 'hola mundo') > 1) PRINT 'OK' IF EXISTS(SELECT id FROM notes WHERE text = 'hola mundo') PRINT 'OK' Datos Importantes Instalación en ambientes productivos No se instala como cualquier otro software Competencias por I/O Disco duro físico Datos Importantes Herramientas de medición de IOPS Cuellos de botella Problemas Corrección de errores SQLIO SQLIOSim Datos Importantes Transaction Logs Puede crecer por siempre Un full backup no “trunca” el transaction log Respaldar el Transaction Log Datos Importantes Transaction Logs Backup, Shrink, Shrink http://msdn.microsoft.com/enus/library/ms365418.aspx PREGUNTAS Y RESPUESTAS contacto @waltermontes.com Walter Montes Delhado waltermontes.com @tewar93 Evaluaciones Evaluación del evento http://www.sqlsaturday.com/443/eventeval.aspx Evaluación de las charlas http://www.sqlsaturday.com/443/sessions/sessionevaluation.aspx Próxima sesión Acceso a datos para Soluciones altamente escalables usando SQL, NoSQL y almacenamiento políglota