Desarrollando con SQL2005



Documentos relacionados
Administración y programación de Bases de Datos con SQL Server 2005

ÍNDICE. Introducción... Capítulo 1. Novedades, mejoras y requisitos para la instalación... 1

ÍNDICE. Capítulo 1. Conceptos de base de datos de SQL Azure... 1

Microsoft SQL Server 2005

L1. Describir SQL Server MODELO CLIENTE SERVIDOR SQL SERVER MANAGEMENT STUDIO GRUPO DE SERVIDORES SERVIDOR SQL BASES DE DATOS

Seguridad en SQL Server 2005

CAPITULO 9. Diseño de una Base de Datos Relacional Distribuida

10775 Administering Microsoft SQL Server 2012 Databases

Manual de NetBeans y XAMPP

Curso Online de Microsoft

GALA CONCEPTO COMMIT, ROOLBACK SAVEPOINTS (SAVE TRANSACTION) No Consultas. Definiciones Transacciones ( L33 )

8 SQL SERVER 2008 RA-MA

XPERTO EN DISEÑO DE PÁGINAS WEB

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

CAPITULO 7. MS SQL Server Express Edition

SISTEMAS IDEALES SISTIDE, S.A. SISTEMA GESTION DE USUARIOS

SQL Server SQL, Transact SQL Diseño y creación de una base de datos (con ejercicios prácticos corregidos)

ENCUENTA - CONTABILIDAD Net. Definiciones generales

Formatos para prácticas de laboratorio

Visión General de GXportal. Última actualización: 2009

El proceso de Instalación de Microsoft SQL Server 2008

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la

Curso Oficial Microsoft: LENGUAJE DE CONSULTA DE SQL SERVER. Duración : 35 Hrs.

Oracle 12c DISEÑO Y PROGRAMACIÓN

myappgen Usted Construye la aplicación mientras la ejecuta

CURSO DE SQL SERVER 2005

Programación páginas web con ASP.NET 3.5 (C#)

Instalación de SQL Server Express Edition en Grupo de Trabajo WhitePaper Junio de 2008

ADMINISTRACIÓN DE BASE DE DATOS

SQL Server SQL, Transact SQL Diseño y creación de una base de datos

Registro y Comunicación Automatizada a Bases de Datos

Especificación WebService para:

Consultas con combinaciones

GUÍA DE TRABAJO N 11 LENGUAJE C# Programación de Software Articulación SENA Grado 10 Ing. Néstor Raúl Suarez Perpiñan Página 2 de 11

Célula UABC-Live.net. Universidad Autónoma. de Baja California. Facultad de Ciencias Químicas. e Ingeniería.

GALA MODELO CLIENTE SERVIDOR SQL SERVER MANAGEMENT STUDIO SERVIDOR SQL BASES DE DATOS. Introducción. Describir SQL Server (L1)

REQUISITOS DEL SISTEMA. Software Servidor. Cliente. Hardware Servidor. Cliente

Creación y administración de grupos de dominio

Familia de Windows Server 2003

Maxpho Commerce 11. Gestión CSV. Fecha: 20 Septiembre 2011 Versión : 1.1 Autor: Maxpho Ltd

Introducción a JDBC - Base de datos con Java

Comparación entre Active Reports, Crystal Reports, y MS Reporting Services

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

Microsoft SQL Server Conceptos.

PORTAL DE INTEGRACIÓN DE BANCOS DE INFORMACIÓN DISPERSOS A TRAVÉS DE WEB SERVICES Autor: Ing. Walther Antonioli Ravetto

Instalación de SQL Server Express Edition en Dominio WhitePaper Junio de 2008

SQL Diagnostic Manager Nueva versión 6.0

Objetivos y Temario CURSO SQL SERVER 2008

El lenguaje de manipulación de datos (DML) es una parte fundamental de SQL.

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO

Presentación 4: ADO.NET

Parte III. Características del proyecto. Web corporativa. Aplicación gestión. Comandas. Gestión cocina.

Configuración de Aspel-SAE 6.0 para trabajar Remotamente

LABORATORIO DE RC: PRÁCTICA 4: IMPLEMENTACIÓN DE UN CLIENTE DE CORREO

ADO.NET. Arquitectura de ADO.NET

ST31_Querying Microsoft SQL Server

Roles y Características

PRESENTACION.

1

Tenemos que instalar los programas de los usuarios también (los anteriormente mencionados) y los siguientes que vamos a nombrar.

MANUAL DE INSTALACIÓN BIPORTAL

MS_10774 Querying Microsoft SQL Server 2012

INSTALACIÓN DE MySQL SERVER EN WINDOWS

UNIDAD DIDACTICA 15 CONVERTIR UN EQUIPO LINUX SERVER EN CONTROLADOR DE DOMINIO

CAPÍTULO 4 ANÁLISIS DE IMPLEMENTACIONES

Guía de Laboratorio Base de Datos I.

Configuración de Aspel-SAE 6.0 para trabajar Remotamente

vmysql Requisitos Previos Conexión con el servidor vmysql 1/5

Instalación y configuración de Windows SharePoint Services (WSS) 2003

INTRANET: MANUAL DE INSTALACIÓN

Instalación Software Administrador de Videoclub

10776 Developing Microsoft SQL Server 2012 Databases

CONCLUISIONES Y RECOMENDACIONES

serra Access y SQL Server Qué es mejor en cada caso? Valentín Playá, Serra GTS 22 de enero de 2009 Bases de datos 1

SEGURIDAD OCTUBRE Versión 1

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo.

Un nombre de usuario de 30 caracteres o menos, sin caracteres especiales y que inicie con una letra.

AUDITORÍA DE BASE DE DATOS MICROSOFT SQL SERVER 2014 WALTER JAVIER NAPÁN TARMEÑO

Introducción (I) SAMBA esta formado por un conjunto de aplicaciones que utilizan:

CTSQL Monitor Windows

CAPITULO 8. Planeamiento, Arquitectura e Implementación

INSTRUCTIVO DE ADMINISTRADOR NUXEO PLATFORM EN LINUX SERVER

MANUAL DE INSTALACIÓN DEL SISTEMA LMS LMS: LEARNING MANAGEMENT SYSTEM

PROCESO DE INSTALACIÓN DE SQL SERVER 2008

DESCRIPCIÓN TÉCNICA AZUAN PROPIEDAD DE AZUAN TECHNOLOGIES S.A.

Configuracion Escritorio Remoto Windows 2003

JAVA EE 5. Arquitectura, conceptos y ejemplos.

Microsoft Dynamics. Instalación de Management Reporter for Microsoft Dynamics ERP

Diplomado Programación Web con PHP, MySQL 5.0, Apache y Ajax

Marcos de Desarrollo. Diseño e implementación de aplicaciones Web con.net

Programación de Consultas SQL ADO.Net LDP / DUOC-AV

Sistemas de Datos Curso: Ernesto Chinkes. Sistemas de Datos. Niveles de Control de acceso. Criptografía. Aspectos legales y éticos.

Sistema de Captura Electrónica

.NET Framework 3.5 Visual Studio Express 2008 Tabla 1 Requerimientos de Software

Microsoft SQL Server Usuarios, Roles, Encriptación y Back Up de la base de datos.

Manual de Referencia. Apertura

UNIDESYS UNIVERSAL BUSINESS SYSTEMS INSTALACIÓN NUEVO PUESTO DE TRABAJO

Guía de. Instalación Rápida Soft Restaurant Enterprise versión 8.0. nationalsoft.com.mx

Instalación de SQL Server 2008 y su manejo con los sistemas Aspel

Introducción a los Servicios Web. Ing. José Luis Bugarin ILUMINATIC SAC jbugarin@consultorjava.com

Transcripción:

Desarrollando con SQL2005 Maximiliano D. Accotto Email: maximiliano.accotto@sqltotalconsulting.com MSN: maxi_adrogue@msn.com Acerca de Maximiliano Accotto Maxi Accotto trabaja en sistemas desde el año 92, se ha desempeñado como consultor independiente en la década del 90 como así también ha gerenciado un área de sistemas en una industria de manufactura por mas de 8 años. Su experiencia en SQLServer arranca en el año 99 con la versión 7.0, en el año 2005 y 2006 Microsoft Corp. lo ha nombrado MVP (Mejor profesional) por sus conocimientos y aportes a la comunidad mundial de dicho producto como así también ha participado en varias betas (Reporting Service 2000, SQL2005, SQL2008, etc.). Maxi posee fuerte experiencia en arquitectura y programación de aplicaciones de misión critica (Visual Basic 5,6 y.net) como así también automatización de procesos para equipos de desarrollo. Es orador frecuente de Microsoft, MUG (Club de usuarios Microsoft de Argentina) y Culminis internacional, entre sus mayores ponencias se destacan el lanzamiento oficial de SQL2005 en noviembre de dicho año para Microsoft Argentina. A lo largo de estos años ha escrito una serie de artículos para diferentes revistas de Argentina y el exterior relacionados con SQLServer Actualmente es Mentor asociado en SQLTotal Consulting brindando soporte y soluciones en varios temas de SQLServer y tecnología.net (Administración, mentoring, programación, tunning, etc). Acerca de SQLTotal SQL Total es una nueva empresa de rápido crecimiento, nacida a comienzos del 2006 luego del lanzamiento de SQL Server 2005 y dedicada exclusivamente a ofrecer servicios de muy alto valor agregado relacionados con las tecnologías relacionadas al SQL Server. Nuestro objetivo es ofrecer a los clientes la mayor calidad y especialización posible, por lo que contamos con profesionales de más de 10 años de experiencia en bases de datos y estamos en condiciones de brindar soluciones y servicios complejos sobre infraestructuras y arquitectura de bases de datos SQL Server. Contamos con profesionales de trayectoria y reconocimiento internacional sobre base de datos que son líderes en lo que hacen. Actualmente, forman parte de distintos grupos de usuarios dedicados al SQL Server como SQL Gurus y el Grupo de Usuarios Microsoft donde presentan diversas tecnologías. También han sido convocados en la presentación y el lanzamiento del SQL Server 2005 por Microsoft en Argentina y en Uruguay luego de su participación en los programas de las betas de los productos. Como reconocimiento a su labor, Maximiliano Accotto ha sido premiado con la distinción Most Valuable Professional (MVP) por Microsoft. Sabemos que nuestros clientes, precisan tener proveedores y socios de negocio confiables que le aporten tanto soluciones como conocimiento para realizar sus tareas. SQL Total puede ofrecer servicios de mentoring y coaching para ayudar en las tareas realizadas por nuestros clientes y posibilitar que el conocimiento les quede como patrimonio dentro de un entorno de mejora continua, o puede ayudarlos mediante servicios profesionales de consultoría o de desarrollo de soluciones. Nuestros clientes en muchos casos son empresas de sistemas que precisan capacitación y mentoring de muy alto valor agregado, más allá de una capacitación formal con un instructor. Por ello, en ocasiones nuestros clientes de sistemas se han convertido en socios de negocio que se apoyan en el conocimiento y la experiencia de nuestros profesionales. Agenda Introducción Seguridad Novedades en T-SQL Sql Client HTTP endpoint SMO Introducción - Componentes Introducción Database Engine SQL Agent Reporting Service Analisis Service Integration Service Notification Service Full text Service Broker 1

Introducción - Componentes & integración Introducción - Ediciones Express Workgroup Standard Enterprise Fastest way for developers to learn, build & deploy simple data driven applications Easiest to use & most affordable database solution for smaller departments & growing businesses Complete data management & analysis platform for medium businesses and large departments Fully integrated data management and analysis platform for business critical enterprise applications Integration Services 1 CPU 1 GB RAM 4GB DB Size Simple Management Tool Report Wizard & Report Controls Replication & SSB Client 2 CPU 3 GB RAM Management Studio Import/Export Limited Replication Publishing Back-up Logshipping 4 CPU Unlimited RAM (64-bit) Database Mirroring OLAP Server Reporting Server New Integration Services Data Mining Full Replication & SSB Publishing Unlimited Scale + Partitioning Adv. DB mirroring, Complete online & parallel operations, DB snapshot Advanced Analysis Tools including full OLAP & Data Mining Report Builder + Customized & High Scale Reporting Adv SSIS Introducción Herramientas Management Studio SQLCMD SAC (Surface Area configurator) Profiler Server configuration Manager Introducción - Management Studio Nueva interfaz de usuario totalmente mejorada. Soporte de Scripting en cada pantalla. Trabaja de forma desconectada / conectada. Reportes online. Administra proyectos. SQLCMD mode. Filtros. Administra instancias de SQL2k Introducción - Management Studio Seguridad 2

Agenda Modelo de seguridad Tipos de usuarios Logins & Users Schemas Permisos Roles de aplicación Cifrado Tips Modelo de seguridad Petición de conexión Autentificación Autorización Modelo de seguridad Petición de conexión: Acción por la cual se solicita una conexión a un servidor SQL Server Autentificación: Proceso en el cual se debe obtener la identificación del usuario que desea realizar la conexión. Autorización: Proceso por el cual se definen las acciones a las cuales tiene permiso un usuario determinado dentro de SQLServer. Tipos de usuarios Windows: SQL: Se utilizan las credenciales del usuario de Windows y se validan contra el servidor SQLServer. Se aplican las políticas que disponga el dominio No se requiere introducir user y pass en la cadena de conexión. Solo funcionara en ambientes Windows. Es el método recomendado por Microsoft Son almacenados por SQL Server en lugar de un dominio. Requiere que la cadena de conexión contemple usuario y password. Tienen la posibilidad de utilizar las políticas de seguridad del domino Tipos de usuarios Cadenas de conexión Data Source=NOTEBOOK\YUKON;Initial Catalog=AdventureWorks;Integrated Security=True Data Source=NOTEBOOK\YUKON;Initial Catalog=AdventureWorks;User ID=SYSADM;Password=123 Logins & Users Logins: Representación de un usuario Windows o SQL Se definen a nivel de servidor Es necesario para tener acceso a SQL Users: Se definen por cada Base de datos. Da permiso de acceso a un login para una base de datos determinada Si no se especifica un Schema por Default se tomara a DBO 3

Logins & Users Logins & Users Comandos TSQL CREATE LOGIN: Crea nuevos Logins CREATE LOGIN [dom1\maxi] FROM WINDOWS DROP LOGIN: Elimina logins existentes ALTER LOGIN: Modifica propiedades de Logins CREATE USER: Crea nuevos Users CREATE LOGIN MA WITH PASSWORD = '3KHJ6dhx(0xVYsdf' DROP USER: Elimina un user existente ALTER USER: Modifica propiedades de users Schemas Schemas Son nuevos en SQL 2005 Se definen como contenedores de objetos Permiten que sea mas eficiente la administración de permisos. Los objetos no estarán relacionados a un usuario (por ej dbo) sino a un Schema. Son muy útiles para agrupar objetos, por ej: Compras.Oc, Compras.Oc_ln. Se definen por Base de datos Cada usuario de una base de datos puede pertenecer a uno o mas Schemas, pero solo tendrá uno por default SQL 2000: SQL 2005: Servidor.BaseDeDatos.Usuario.Objeto Servidor.BaseDeDatos.Schema.Objeto Schemas Permisos Comandos TSQL CREATE SCHEMA: Genera un nuevo Schema. DROP SCHEMA: Elimina un Schema. ALTER SCHEMA: Modifica un Schema. Son los que dan o no autorización a un login o usuario a realizar ciertas operaciones. Se definen a nivel de usuario de base de datos o a nivel Login. A nivel login se puede dar permiso de conectar o no a SQL. A nivel usuario se dan permisos para los objetos de una base de datos Se pueden aplicar a Schemas 4

Permisos Comandos TSQL GRANT: Otorga permisos DENY: Deniega Permisos REVOKE: Remueve GRANT o DENY Permisos Tipos mas comunes SELECT: Da permisos de Select sobre una tabla o vista. INSERT: Da permisos de Insert sobre una tabla o vista UPDATE: Da permisos de Update sobre una tabla o vista DELETE: Da permisos de Delete sobre una tabla o vista EXECUTE: Da permisos de ejecución sobre un Sp s Permisos Roles de aplicación GRANT SELECT ON PEDIDOS TO MAXI GRANT EXECUTE ON USP_PEDIDOS TO MAXI DENY INSERT ON PEDIDOS TO MAXI Se definen en cada Base de Datos. Se manejan como usuarios en la Base. Son útiles para mejorar la administración de seguridad. Mejoran la seguridad en nuestros sistemas. Roles de aplicación Proceso: Roles de aplicación Comandos TSQL Login X se Conecta Llama a ROL APP A Impersonifica como A CREATE APPLICATION ROLE: Crea un APP Rol DROP APPLICATION ROLE: Elimina un APP Rol ALTER APPLICATION ROLE: Modifica un APP Rol SP_SETAPPROLE: Utiliza un APP Rol Usamos Permisos de A 5

Cifrado Nuevo en SQL2005 Permite cifrar información en campos No tiene un fuerte impacto en la performance Se deben definir los campos a cifrar como Varbinary Trabaja con Estándares como: RSA_512 RSA_1024 RSA_2048 TRIPLE_DES RC4 - Etc Cifrado Tipos Passphrase: El método mas eficiente de todos pero a su vez el menos seguro Asymmetric Key: Proporciona una clave publica y otra privada. Es el método mas seguro de todos pero a su vez el menos eficiente. Symmetric Key: Utiliza una Key tanto para el cifrado como para el descifrado. Es un método eficiente Certificate Key: Utiliza el Standard X.509 Cifrado Comandos TSQL CREATE CERTIFICATE CREATE SYMMETRIC KEY CREATE ASYMMETRIC KEY EncryptByAsymKey / DecryptByAsymKey. EncryptByKey / DecryptByKey EncryptByCert / DecryptByCert EncryptByPassPhrase / DecryptByPassPhrase Backup Certificate Backup Master Key Tips Utilice un usuario para cada usuario real, evite el uso de un único usuario como por ej SA. Utilice Sp s en lugar de acceso directo a las tablas. No utilice FROM objeto solamente, recuerde siempre de poner el SCHEMA Se recomienda la seguridad Windows antes que la de SQL. Los roles de aplicación no usan el pool de conexiones. Si va a cifrar información se recomienda que lo haga con métodos de SQL y no de forma externa. Agenda Cambios en TSQL Nuevos tipos de datos Top @N Control de errores OutPut Funciones de Ranking Except & Intersect Sinonyms Pivot Cross y Outer Apply Random data Sampling CTE Nuevas DRI 6

TSQL Nuevos tipos de dato XML Varchar (max) Nvarchar (max) Varbinary (max) TSQL - Top @N Permite la inclusión de variables en la cláusula TOP. Se puede utilizar para las instrucciones Insert Update Delete y Select. DECLARE @N INT SET @N = 10 SELECT TOP @N * FROM TABLA TSQL - Control de errores Soporte para Try / Catch Se puede emitir un mensaje personalizado al cliente Inclusión de nuevas funciones como Error_number(), Error_State(), Error_message(), Error_procedure(). BEGIN TRY <code> END TRY BEGIN CATCH <code> END CATCH TSQL - OUTPUT Permite enviar la salida de una instrucción Insert Update o Delete a una variable tipo tabla. Utiliza las tablas virtuales INSERTED y DELETED No se debe utilizar para reemplazar Triggers UPDATE [TABLE] SET CAMPO = VALOR OUTPUT {CADENA DE TEXTO} INTO @TABLA TSQL - Funciones de Ranking TSQL - Funciones de Ranking Row_number: Retorna el numero de fila en un conjunto de resultados. RANK: Retorna el rango de la fila en la partición de un conjunto de resultados. DENSE_RANK: Es símil a RANK solo con la diferencia de ordenar los valores 1,2,3,3,4,4 en lugar de 1,2,2,4,4,6,6. NTILE: Distribuye las filas de una partición en números de grupos ROW_NUMBER() OVER (Partition By [campo] Order By [Campo]) RANK() OVER (Partition By [campo] Order By [campo]) DENSE_RANK() OVER (Partition By [campo] Order By [campo]) NTILE(numero de grupos) OVER (Partition By [campo] Order By [campo]) 7

TSQL - Except & Intersect TSQL - Sinónimos Except: Retorna los valores distintos de la consulta izquierda que no se encuentran en la derecha. Intersect: Retorna los valores distintos devueltos por las consultas situadas tanto del lado izquierdo como el derecho de operando. { <query_specification> ( <query_expression> ) } { EXCEPT INTERSECT } { <query_specification> ( <query_expression> ) } Proporcionan un nombre alternativo a los objetos. Nos permite desarrollar una capa de abstracción que nos salva de futuros cambios en el nombre o ubicación del objeto. CREATE SYNONYM [ schema_name_1. ] synonym_name FOR < object > < object > :: = { [ server_name.[ database_name ]. [ schema_name_2 ]. database_name. [ schema_name_2 ]. schema_name_2. ] object_name } TSQL - Pivot TSQL - Pivot Compatible con ANSI. Permite representar Filas en columnas. No soporta que las columnas sean tomadas desde un conjunto de resultados. Son útiles para resúmenes tipo Tablas Dinámica Es mas legible que utilizar CASE en muchos casos. Cliente Mes Monto MUG Enero 100 MUG Enero 200 Microsoft Enero 100 Microsoft Febrero 300 Enero 400 300 Febrero Marzo TSQL - Apply TSQL - Apply Son un nuevo tipo de JOIN Invoca a funciones de tabla para cada registro de la expresión de tabla externa. Fila 1 Fila 2 Fila 3 Fila 4 Table Valued Function Fila A1 Fila A2 Fila A3 Fila A4 Cross Apply: Retorna los registros de la clave externa que generan un conjunto de resultados de la función con valores de tabla. Outer Apply: Retorna las filas que producen o no valores en la función, las que no produzcan tendran el valor NULL Fila 1 Fila 2 Fila 3 Fila 4 Fila A1 Fila A2 Fila A3 Fila A4 Cross Apply 8

TSQL - Table Sample Permite retornar una muestra de datos randomizados. No se puede utilizar en vistas, tablas derivadas, servidores vinculados, funciones de conjuntos de fila y OpenXML No se recomienda para tablas de pocas paginas. Utilice Top si desea siempre retornar la misma cantidad de registros TSQL - Table Sample TABLESAMPLE [SYSTEM] (sample_number [ PERCENT ROWS ] ) [ REPEATABLE (repeat_seed) ] SELECT * FROM PEDIDOS TABLESAMPLE SYSTEM (500 ROWS) TSQL - CTE (Common Table Expressions) Conjunto de resultados temporales Se definen en el ambito de ejecución Se puede utilizar para: Select, Insert, Delete, Update y Create View Puede hacer referencia a si misma Se puede hacer referencia a ella varias veces en la misma consulta Mejora la legibilidad y el mantenimiento de consultas complejas. ANSI 99 Compatible TSQL - CTE (Common Table Expressions) Las CTE son muy útiles para: Crear consultas recursivas Hacer referencia a la tabla resultante varias veces dentro de la misma consulta WITH expression_name [ ( column_name [,...n] ) ] AS ( CTE_query_definition WITH Simple As (Select Hola as Col) SELECT Col FROM Simple TSQL - Nuevas DRI Soporte para SET DEFAULT Soporte para SET NULL Compatibles con ANSI Sql Native Client ADD CONSTRAINT FK_1 FOREIGN KEY (CLIENTE_ID) REFERENCES DBO.CLIENTES(ID) ON DELETE SET NULL ADD CONSTRAINT FK_1 FOREIGN KEY (CLIENTE_ID) REFERENCES DBO.CLIENTES(ID) ON DELETE SET DEFAULT 9

Agenda Introducción Múltiple Active Resultsets (MARS) Bulk Insert Password change API Ejecución Asincrónica Query Notification Otras características Sql Client - Introducción SNAC es un cliente separado de MDAC SNAC es un cliente dedicado para SQLServer. MDAC es parte del SO SQL 2005 usa MDAC 2.8 SNAC dispone de nuevos OLEDB y ODBC Drivers Sql Client - Introducción Dim con As New ADODB.Connection con.connectionstring = "Provider=SQLNCLI;" _ & "Server=(local);" _ & "Database=AdventureWorks;" _ & "Integrated Security=SSPI;" _ & "DataTypeCompatibility=80;" _ & "MARS Connection=True;" con.open Sql Client - MARS Antes a SQL2005 no se permitía disponer de múltiples conexiones por datareader. MARS permite la reutilización del Database Connection Beneficios Múltiples SqlDatareaders por conexión Múltiples Updates sobre la misma transacción (System.Transactions.TransactionScope) Sql Client MARS 2 Sql Client MARS 2 (El problema) SqlConnection conn = new SqlConnection( "server=.;integrated security=sspi;database=pubs"); SqlCommand cmd = new SqlCommand( "select * from authors",conn); conn.open(); SqlDataReader rdr = cmd.executereader(); Console.WriteLine("got first reader"); // second reader, same connection This will not work cmd.commandtext = "select * from jobs"; SqlDataReader rdr2 = cmd.executereader(); // attempt to use both readers, but never get to here rdr.read(); rdr2.read(); Console.WriteLine(rdr2[0]); 10

Sql Client MARS 2 (La solución) Sql Client - Bulk Insert // MARS is the default with SQL Server 2005 DB SqlConnection conn = new SqlConnection( "server=zmv43;integrated security=sspi;database=pubs"); SqlCommand cmd = new SqlCommand("select * from authors",conn); // must use a separate SqlCommand instance SqlCommand cmd2 = new SqlCommand("select * from jobs",conn); conn.open(); SqlDataReader rdr = cmd.executereader(); // second reader, same connection - THIS DOES WORK SqlDataReader rdr2 = cmd2.executereader(); rdr2.read(); rdr.read(); // both readers on same connection Console.WriteLine(rdr[0]); Console.WriteLine(rdr2[0]); Clase encapsulada con similares funcionalidades que BCP Puede escribir desde un DataTable o IDataReader No soporta la exportación de archivos Es tan rápido o mas que un DTS // bulk copy from a DataReader void DoBulkCopy(IDataReader reader) { SqlBulkCopy bcp = new SqlBulkCopy(connectString); bcp.destinationtablename = "Customers"; bcp.writetoserver(reader); } Sql Client - Bulk Insert Sql Client - Bulk Insert Ejemplo: Loading 104,225 records into SQL2005 3000 2500 2000 1500 1000 500 2460 Método Export Data Imports data into a table or non-partitioned view BULK INSERT statement No Yes INSERT... SELECT * FROM OPENROWSET(BULK...) No Yes bcp command Yes Yes Integration Services (SSIS) Yes Yes XML Bulk Load No Yes 0 DTS 21 Batch Update (100) 23 Bulk Copy Sql Client PassWord Change Soporte desde el cliente OLEDB para el cambio de password en logins SQL Captura los errores de expiraciones o necesidad de cambio de password. SqlConnection.ChangePassword Necesita el viejo y el nuevo Password Sql Client Ejecución Asincrónica Es una capa TDS adicional Disponible en SQLCliente con el uso de delegados Variedad de operaciones de comando asincrónicas Command.BeginExecuteReader Command.BeginExecuteNonQuery Command.BeginExecuteXmlReader 11

Sql Client Ejecución Asincrónica Sql Client Query Notification // "busywait" example SqlConnection conn = new SqlConnection( "server=mysvr;integrated security=sspi;database=pubs"); conn.connectionstring += ";async=true"; conn.open(); SqlCommand cmd = new SqlCommand("select * from authors", conn); // execute the command asynchronously IAsyncResult ar = cmd.beginexecutereader(); // check every 250 ms for result while (!ar.iscompleted) { Console.Write("."); Thread.Sleep(250); } // harvest results SqlDataReader rdr = cmd.endexecutereader(ar); Notificación cuando se cambia un ResultSet Útil para invalidar cache o vistas Requiere Service Broker SqlNotificationRequest Recibe un objeto comando y un servicio Envía un mensaje al servicio cuando cambia el resultset SqlDependency Abstrae el Service Broker Evento OnChanged Sql Client Query Notification Sql Client Otras características Notification Flag Query from Client Listener SQL Server Data SQL Server Service Broker Services Message Queue Change Detection for rowset DML Soporte para mirror Soporte de los nuevos tipos de datos (XML, Varchar(max), etc) Integración con CLR dentro de SQLServer Soporte para Snapshot Isolation Level Estadísticas en el cliente Application SQL Server 2005 Sql Client Features Vs Versión Feature SQL 7.0 SQL 2000 SQL 2005 SqlClient X X X MARS X SqlNotificationRequest X SqlDependency X IsolationLevel.Snapshot X Async X X X Bulk Import X X X Password Update X Statistics X X X Tracing X X X HTTP ENDPOINT 12

Agenda Vision Arquitectura Escenarios de aplicación Modelo de programación Seguridad Comparación con SQLXML Mejores prácticas La visión Proveer un mecanismo basado en estándares abiertos para acceder a SQL Server La meta Acceso ubicuo a datos Interoperabilidad Basado en estándares como HTTP, SOAP 1.1 y 1.2, XSD y WSDL 1.1 Cumplir con las últimas especificaciones de servicios de Web que resulten aplicables Protocolos de acceso a SQL Server Protocolos de acceso a SQL Server ODBC, OLE DB, ADO.NET TDS/ TCP Named Pipes SQL SERVER SQL XML IIS ODBC, OLE DB, ADO.NET TDS/ TCP Named Pipes SQL SERVER Protocolos de acceso a SQL Server SQL XML IIS ODBC, OLE DB, ADO.NET TDS/ TCP Named Pipes SQL SERVER Requerimientos de plataforma Windows Server 2003, Windows XP SP2 Soporte de Http.Sys en modo kernel No se requiere Internet Information Services (IIS) SOAP/ HTTP Unix Client 13

Diagrama de arquitectura Diagrama de arquitectura SQL SERVER Endpoint SQL SERVER Diagrama de arquitectura Diagrama de arquitectura Acceso RPC Procedimiento almacenado Procedimiento almacenado Endpoint SQL SERVER Endpoint SQL SERVER Diagrama de arquitectura Diagrama de arquitectura Acceso RPC Procedimiento almacenado Acceso RPC Procedimiento almacenado Endpoint SQL SERVER Endpoint SQL SERVER Solicitud WSDL Generador WSDL Acceso por lotes Acceso por lotes 14

Escenarios de aplicación Aprovechar la inversión en procedimientos almacenados Lógica de procedimientos almacenados muy asociada con los datos Servicios de búsqueda Catálogo de productos, directorio de empleados, servicios basados en la ubicación Servicios de reportes Permite también reportes ad-hoc Escenarios móviles Permite que nuevas clases de dispositivos de tamaño pequeño se conecten a SQL Server Conexiones no atadas a una sesión, la sesión permanece incluso si la conexión se cae. Permite tener dispositivos conectados esporádicamente. Escenarios de aplicación (cont.) Uso en ambientes heterogéneos Se puede conectar Perl a SQL Server Se puede usar como una alternativa a JDBC Permite Arquitectura Orientada a Servicios Aplicaciones desconectadas Expone servicios de Web en la capa de datos o en la capa intermedia Servicios asincrónicos son posibles con la integración con SQL Server Service Broker Ejemplo de Endpoint Un endpoint tiene un nombre 1 Un conjunto de opciones para el transporte (HTTP) el URL Un conjunto de 2 opciones para la carga (SOAP) métodos invocables en ese URL 3 create endpoint Demo 1 as HTTP ( authentication = ( integrated ), path = '/sql/demo', 2 ports = ( clear), state = started ) for soap ( webmethod ) 'http://logicstudio.net'. 'testproc1 (name = demodb.dbo.testproc1), batches = enabled, wsdl = default 3 Endpoints Modelo de seguridad No hay acceso anónimo Autenticación dos niveles Transporte HTTP: Basic, Digest, Integrated (NTLM, Kerberos) SQL Server: SQL Auth (WsSecurity Username token ) habilitado cuando LOGIN_TYPE=MIXED Prevención de envío de credenciales en claro Forzar SSL cuando se usa BASIC o LOGIN_TYPE = MIXED Filtrado de IPs WSDL - Soporte Generación dinámica WSDL Soporte de cajón Complejo Descripción de tipos rica para parámetros y resultados usando tipos complejos XSD Simple Descripción mínima Interoperabilidad incrementada http://myserver/sql/demo?wsdlsimple Extensible usa un procedimiento almacenado personalizado WSDL=sp_name Respuestas SOAP Las User Defined Functions son sencillas Por ejemplo, un valor de retorno de una nvarchar(100) se mapea a una string, con una longitud máxima de 100 Los procedimientos almacenados son más difíciles No hay un esquema fijo para lo que se devuelve. Se mapea para devolver un arreglo de valores. El retorno para un lote SQL es el mismo que para un procedimiento almacenado 15

Respuesta SOAP ResultStream de SqlRowSet resultado de SELECT SqlXml resultado de SELECT.. FOR XML SqlMessage Mensajes de Error, Warning y Print SqlRowCount Filas afectadas SqlResultCode Código de retorno del SP Errores/Fallas Soporte de sesiones Se debe habilitar sesiones en el endpoint Las sesiones pueden extender conexiones Las solicitudes para conectarse a sesiones son autenticadas Las sesiones se inician y terminan a través del header SOAP El timeout de la sesión se puede configurar en el endpoint y en el inicio de la solicitud Solicitud/Respuesta de sesión <SOAP-ENV:Header xmlns:soap- ENV= http://schemas.xmlsoap.org/soap/envelope/ xmlns:sqloptions= http://schemas.microsoft.com/sqlse rver/2001/12/soap/options > <!-- create a new session, with explicit timeout - -> <sqloptions:sqlsession initiate= true timeout= 12 /> </SOAP-ENV:Header> Solicitud/Respuesta de sesión <SOAP-ENV:Header xmlns:soap- ENV= http://schemas.xmlsoap.org/soap/envelope/ xmlns:sqloptions= http://schemas.microsoft.com/sqlse rver/2001/12/soap/options > <!-- create a new session, with explicit timeout - -> <sqloptions:sqlsession initiate= true timeout= 12 /> </SOAP-ENV:Header> <SOAP-ENV:Header xmlns:soap- ENV= http://schemas.xmlsoap.org/soap/envelope/ xmlns:sqloptions= http://schemas.microsoft.com/sqlse rver/2001/12/soap/options > <!-- response to creating a new session, or enlisting in an existing session --> <sqloptions:sqlsession sessionid= AAAAADreaLE= timeout= 12 /> </SOAP-ENV:Header> Soporte de WS-Security Soporte para token de header tipo WsSecurity Username. Usado para SQLAuth. No soporta Encryption y Signature de la especificación WS-Security. Características de seguridad Seguro por omisión Quién puede crear endpoints? Miembros del rol sysadmin Usuarios a los que se ha concedido el permiso CREATE ENDPOINT Quién se puede conectar a un endpoint? Miembros del rol sysadmin, dueño del endpoint, usuarios a los que se ha concedido el permiso CONNECT en el endpoint específico No hay soporte para que un Anónimo se conecte a los endpoints 16

Mejores prácticas - Seguridad Instalar detrás de firewall/proxy/dmz No abrir el puerto al Internet Preparar los endpoints para ser accedidos solo por principales que necesitan acceso SQLXML vs. SOAP nativo Tecnologías complementarias SQLXML ofrece Plantillas (provee vistas actualizables) Updategrams, Bulkload, Query strings en el URL El acceso SOAP ofrece No depende de IIS ~%40 mejora de rendimiento sobre SQLXML Soporte total a la ejecución de lotes parametrizados WSDL dinámico Mejores Prácticas Cuando usar / Cuando no usar Usar en ambientes heterogéneos Se puede conectar a SQL usando Perl, PHP, Se puede usar como una alternativa a Java Database Connectivity (JDBC) No usar para aplicaciones caracterizadas por acceso en tiempo real altamente concurrente, con transacciones de corta duración No usar para escalamiento estilo granja de Web. No es un reemplazo para IIS. SMO SMO SMO - Namespaces SQL Server Management Objects Reemplazo de SQL-DMO Conjunto de clases para poder interactuar con servidores SQLServer desde nuestras aplicaciones Requiere SQL Server Native Client Utiliza System.Data.SqlClient para conectar al servidor de SQL Class Microsoft.SqlServer.Management.Smo Microsoft.SqlServer.Management.Common Microsoft.SqlServer.Management.Smo.Agent Microsoft.SqlServer.Management.Smo.Wmi Microsoft.SqlServer.Management.Smo.RegisteredServers Microsoft.SqlServer.Management.Smo.Mail Microsoft.SqlServer.Management.Smo.Broker Microsoft.SqlServer.Management.Nmo Function Contains instance classes, utility classes, and enumerations that are used to programmatically manipulate Microsoft SQL Server. Contains the classes that are common to Replication Management Objects (RMO) and SMO, such as connection classes. Contains classes that represent the SQL Server Agent. Contains classes that represent the WMI Provider. Contains classes that represent Registered Server. Contains classes that represent Database Mail. Contains classes that represent the Service Broker. Contains classes that represent Notification Services. 17

SMO 'Connect to the local, default instance of SQL Server. Dim srv As Server srv = New Server Console.WriteLine(srv.Information.Version) SMO 'Connect to the local, default instance of SQL Server. Dim srv As Server srv = New Server 'Declare and define a Database object. Dim d As Database d = New Database(srv, "Test_Database") 'Create the database on the instance of SQL Server. d.create() Console.WriteLine(d.Name) 18