61
SQL Server 2005 SQL Server 2005 Jordi Rambla Jordi Rambla Certia Certia Microsoft MVP Microsoft MVP [email protected] [email protected]

Sql server 2005_envio

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Sql server 2005_envio

SQL Server 2005SQL Server 2005

Jordi RamblaJordi RamblaCertiaCertiaMicrosoft MVPMicrosoft [email protected]@ramblainf.com

Page 2: Sql server 2005_envio

Yo (Jordi Rambla – [email protected])Yo (Jordi Rambla – [email protected])Director técnico de CertiaDirector técnico de Certia

Consultor y profesor de Reporting y BIConsultor y profesor de Reporting y BIMentor Asociado de Solid Quality Learning Mentor Asociado de Solid Quality Learning IberoamericanaIberoamericanaMVP SQL Server MVP SQL Server Regional Director de Microsoft Regional Director de Microsoft circacirca1997-20041997-2004

Consultor de P&P,XML, ES y WS en Ciclo .NET Consultor de P&P,XML, ES y WS en Ciclo .NET UOCUOC

Certia (http://certia.ramblainf.com)Certia (http://certia.ramblainf.com)Es la marca de servicios de rambla Es la marca de servicios de rambla informàticainformàtica

Consultoría, formación y aplicaciones en BI y .NETConsultoría, formación y aplicaciones en BI y .NET

Trabajando en informática empresarial desde 1985Trabajando en informática empresarial desde 1985

Page 3: Sql server 2005_envio

More than just trainingMore than just training

Mentores Principales:Mentores Principales:Itzik Ben-Gan, Kalen Delaney, Fernando G. Itzik Ben-Gan, Kalen Delaney, Fernando G. Guerrero, Michael Hotek, Brian Moran , Ron Guerrero, Michael Hotek, Brian Moran , Ron Talmage Talmage

Iberoamericana:Iberoamericana:Miguel Egea, Alejandro Leguízamo, Jesús López, Miguel Egea, Alejandro Leguízamo, Jesús López, Pablo Pelaez, Jordi Rambla, Eladio Rincón, Daniel Pablo Pelaez, Jordi Rambla, Eladio Rincón, Daniel Seara, Guillermo Som, Antonio Soto, Adolfo Seara, Guillermo Som, Antonio Soto, Adolfo WiernikWiernik

Ayudando a obtener lo mejor de SQLServer y Ayudando a obtener lo mejor de SQLServer y .Net con.Net con

FormaciónFormación

Consultoría Consultoría

MentoringMentoring

Page 4: Sql server 2005_envio

Solid Quality Learning University SummitsSolid Quality Learning University Summits

¿Qué son los SQL University Summits?¿Qué son los SQL University Summits?Intensos, avanzados, esencialmente útilesIntensos, avanzados, esencialmente útiles

Temarios aplicados a sistemas empresarialesTemarios aplicados a sistemas empresariales

Eventos formativos, no de marketingEventos formativos, no de marketing

2 grupos de sesiones simultáneas2 grupos de sesiones simultáneas

4 seminarios de día completo4 seminarios de día completo

9 mentores presentando 28 sesiones9 mentores presentando 28 sesiones

En castellanoEn castellano

¿Dónde?¿Dónde?Madrid (del 25 al 29 de Abril del 2005)Madrid (del 25 al 29 de Abril del 2005)

Barcelona (¿2005?); tBarcelona (¿2005?); también en:ambién en:Milán, Washington DC, Los Angeles, Chicago, Dallas, Monterrey, San Milán, Washington DC, Los Angeles, Chicago, Dallas, Monterrey, San Salvador, Singapore, Hong KongSalvador, Singapore, Hong Kong

Page 5: Sql server 2005_envio

AgendaAgenda

¿Qué hay de nuevo?¿Qué hay de nuevo?

Integración con .NETIntegración con .NET

XML y SQL Server 2005XML y SQL Server 2005

Service BrokerService Broker

Mejoras en T-SQLMejoras en T-SQL

Mejoras en ADO.NETMejoras en ADO.NET

Page 6: Sql server 2005_envio

¿Qué hay de ¿Qué hay de nuevo?nuevo?

Page 7: Sql server 2005_envio

¿Qué hay de nuevo?¿Qué hay de nuevo?.NET Framework.NET Framework

Common Language Runtime IntegrationCommon Language Runtime IntegrationUser-defined AggregatesUser-defined AggregatesUser-defined Data TypesUser-defined Data TypesUser-defined FunctionsUser-defined FunctionsSQL Server .NET Data ProviderSQL Server .NET Data ProviderExtended TriggersExtended Triggers

Data TypesData TypesFileStream Storage AttributeFileStream Storage AttributeManaged SQL TypesManaged SQL TypesNew XML DatatypeNew XML Datatype

SQL Server EngineSQL Server EngineNew Message Service BrokerNew Message Service BrokerHTTP Support (Native HTTP)HTTP Support (Native HTTP)Database Tuning Advisor Database Tuning Advisor Enhanced Read ahead & scanEnhanced Read ahead & scanExtended IndexesExtended IndexesMultiple Active Result Sets Multiple Active Result Sets Persisted Computed ColumnsPersisted Computed ColumnsQueuing SupportQueuing SupportSnapshot Isolation Level Snapshot Isolation Level Scale Up PartitioningScale Up PartitioningVIA support VIA support NUMA supportNUMA support

Database Failure and RedundancyDatabase Failure and RedundancyFail-over Clustering (up to 8 node)Fail-over Clustering (up to 8 node)Enhanced Multi-instance SupportEnhanced Multi-instance SupportDatabase MirroringDatabase MirroringDatabase ViewpointsDatabase Viewpoints

XMLXMLXQUERY Support (Server & Mid Tier)XQUERY Support (Server & Mid Tier)XML Data Manipulation Language XML Data Manipulation Language FOR XML EnhancementsFOR XML EnhancementsXML Schema (XSD) Support XML Schema (XSD) Support MSXML 6.0 (Native)MSXML 6.0 (Native).Net XML Framework.Net XML Framework

Database MaintenanceDatabase MaintenanceBackup and Restore EnhancementsBackup and Restore EnhancementsChecksum Integrity ChecksChecksum Integrity ChecksDedicated Administrator ConnectionDedicated Administrator ConnectionDynamic AWEDynamic AWEFast RecoveryFast RecoveryHighly-available UpgradeHighly-available UpgradeOnline Index OperationsOnline Index OperationsOnline RestoreOnline RestoreParallel DBCCParallel DBCCParallel Index OperationsParallel Index Operations

Management ToolsManagement ToolsMDX Query EditorMDX Query EditorMDX IntellisenseMDX IntellisenseT-SQL IntellisenseT-SQL IntellisenseVersion Control SupportVersion Control SupportXML/AXML/ASQLCMD Command Line ToolSQLCMD Command Line Tool

Performance TuningPerformance Tuning Profiler EnhancementsProfiler EnhancementsProfiling Analysis ServicesProfiling Analysis ServicesExportable Showplan Exportable Showplan Exportable Deadlock TracesExportable Deadlock Traces

Full-text SearchFull-text SearchIndexing of XML DatatypeIndexing of XML Datatype

MDAC MDAC Side by Side installationSide by Side installationMicrosoft Installer base setupMicrosoft Installer base setupSupport for Active Directory DeploymentSupport for Active Directory Deployment

SQL Client .NET Data ProviderSQL Client .NET Data ProviderServer Cursor SupportServer Cursor SupportAsynchAsynch

SecuritySecurityAll Permissions GrantableAll Permissions GrantableFine Grain Administration RightsFine Grain Administration RightsSeparation of Users and SchemaSeparation of Users and Schema

ReplicationReplicationAuto-tuning Replication AgentsAuto-tuning Replication AgentsOracle PublicationOracle PublicationImproved Blob Change TrackingImproved Blob Change Tracking

OLAP and Data MiningOLAP and Data MiningAnalysis Management Objects Analysis Management Objects Windows Integrated Backup and RestoreWindows Integrated Backup and RestoreWeb Service/XML for AnalysisWeb Service/XML for AnalysisDTS and DM IntegrationDTS and DM IntegrationEight new DM algorithmsEight new DM algorithmsAuto Packaging and DeploymentAuto Packaging and Deployment

Data Transformation ServicesData Transformation ServicesNew Architecture (DTR + DTP)New Architecture (DTR + DTP)Complex Control FlowsComplex Control FlowsControl Flow DebuggingControl Flow DebuggingFor Each EnumerationsFor Each EnumerationsProperty MappingsProperty MappingsFull Data Flow DesignerFull Data Flow DesignerFull DTS Control Flow DesignerFull DTS Control Flow DesignerGraphical Presentation of Pkg ExecutionGraphical Presentation of Pkg ExecutionImmediate Mode and Project ModeImmediate Mode and Project ModePackage (Advanced) Deployment ToolsPackage (Advanced) Deployment ToolsCustom Tasks and TransformationsCustom Tasks and Transformations

Reporting ServicesReporting ServicesMultiple Output Formats Multiple Output Formats Parameters (Static, Dynamic, Hierarchical)Parameters (Static, Dynamic, Hierarchical)Bulk Delivery of Personalized ContentBulk Delivery of Personalized ContentSupport Multiple Data Sources Support Multiple Data Sources STS (Web Parts, Doc Libraries)STS (Web Parts, Doc Libraries)Visual Design ToolVisual Design ToolCharting, Sorting, Filtering, Drill-ThroughCharting, Sorting, Filtering, Drill-ThroughScheduling, CachingScheduling, CachingComplete Scripting EngineComplete Scripting EngineScale Out architectureScale Out architectureOpen XML Report DefinitionOpen XML Report Definition

Notification ServicesNotification Services

Page 8: Sql server 2005_envio

OtrosOtrosserviciosservicios

OtrosOtrosserviciosservicios

¿Qué hay de nuevo?¿Qué hay de nuevo?ContextoContexto

OS OS ServicesServices

BizBizTier LogicTier Logic

BizBizTier LogicTier Logic

Servicios SOServicios SOServicios SOServicios SO

XMLXML

XMLXML

XMLXML

HTMLHTML

XMLXML

XMLXML

BrowsersBrowsersestándarestándar

BrowsersBrowsersestándarestándar

DispositivosDispositivosmóvilesmóviles

DispositivosDispositivosmóvilesmóviles

ClientesClientesinteligentesinteligentes

ClientesClientesinteligentesinteligentes

Lógica aplicaciónLógica aplicaciónLógica aplicaciónLógica aplicación

Servicios Servicios WebWeb

Servicios Servicios WebWeb

OtrosOtrosserviciosservicios

OtrosOtrosserviciosservicios

ServiciosServiciosbuilding blocksbuilding blocks

ServiciosServiciosbuilding blocksbuilding blocks

Formularios Formularios WebWeb

Formularios Formularios WebWeb

Page 9: Sql server 2005_envio

ServiciosServiciosbuilding blocksbuilding blocks

ServiciosServiciosbuilding blocksbuilding blocks

OtrosOtrosserviciosservicios

OtrosOtrosserviciosservicios

OtrosOtrosserviciosservicios

OtrosOtrosserviciosservicios

¿Qué hay de nuevo?¿Qué hay de nuevo?ContextoContexto

OS OS ServicesServices

BizBizTier LogicTier Logic

BizBizTier LogicTier Logic

Servicios SOServicios SOServicios SOServicios SO

XMLXML

XMLXML

XMLXML

HTMLHTML

XMLXML

XMLXML

BrowsersBrowsersestándarestándar

BrowsersBrowsersestándarestándar

DispositivosDispositivosmóvilesmóviles

DispositivosDispositivosmóvilesmóviles

ClientesClientesinteligentesinteligentes

ClientesClientesinteligentesinteligentes

Lógica aplicaciónLógica aplicaciónLógica aplicaciónLógica aplicación

Servicios Servicios WebWeb

Servicios Servicios WebWeb

Formularios Formularios WebWeb

Formularios Formularios WebWeb

Page 10: Sql server 2005_envio

Integración con .NETIntegración con .NET

Page 11: Sql server 2005_envio

Integración con .NETIntegración con .NETAlternativa a T-SQLAlternativa a T-SQL

Funciones Funciones definidas por el definidas por el

usuariousuario

Procedimientos Procedimientos almacenadosalmacenados

TriggersTriggers

Tipos definidos Tipos definidos por el usuariopor el usuario

AggregatesAggregates

T-SQLT-SQL Lenguajes .NELenguajes .NETT

Page 12: Sql server 2005_envio

Integración con .NETIntegración con .NETCreaciónCreación

Registro de assembliesRegistro de assembliesAlmacenados en la base de datosAlmacenados en la base de datos

CREATE ASSEMBLY CREATE ASSEMBLY NombreAssemblyNombreAssembly FROM FROM c:\assembly.dllc:\assembly.dllCREATE ASSEMBLY CREATE ASSEMBLY NombreAssemblyNombreAssembly FROM FROM c:\assembly.dllc:\assembly.dll

ReferenciasReferenciasSe almacenan automáticamenteSe almacenan automáticamente

Sólo dependencias que no estén en la GACSólo dependencias que no estén en la GAC

Page 13: Sql server 2005_envio

Integración con .NETIntegración con .NETCreación (II)Creación (II)

Definición de:Definición de:UDFs, procedimientos almacenados, UDFs, procedimientos almacenados, triggerstriggers

Enlazando a función estática y públicaEnlazando a función estática y pública

UDTs, aggregatesUDTs, aggregatesEnlazando a claseEnlazando a clase

CREATE FUNCTION CREATE FUNCTION NombreFuncionNombreFuncion () RETURNS int () RETURNS int

AS EXTERNAL NAME AS EXTERNAL NAME NombreAssembly.[clase]:funcionNombreAssembly.[clase]:funcion

CREATE FUNCTION CREATE FUNCTION NombreFuncionNombreFuncion () RETURNS int () RETURNS int

AS EXTERNAL NAME AS EXTERNAL NAME NombreAssembly.[clase]:funcionNombreAssembly.[clase]:funcion

Page 14: Sql server 2005_envio

Integración con .NETIntegración con .NETSeguridadSeguridad

CAS deja de tener validezCAS deja de tener validez

Tres nuevos niveles gestionados por Tres nuevos niveles gestionados por SQLSQL

SafeSafe

ExternalExternal

UnsafeUnsafe

Validados al dar de alta el assemblyValidados al dar de alta el assemblyEj. Type safe, finalizers, mutable statics…Ej. Type safe, finalizers, mutable statics…

Llamadas al BCL restringidasLlamadas al BCL restringidasNuevo atributo HostProtectionAttributeNuevo atributo HostProtectionAttribute

Page 15: Sql server 2005_envio

Integración con .NETIntegración con .NETAcceso a datosAcceso a datos

Comunicación mediante SqlAccess.dllComunicación mediante SqlAccess.dllSystem.Data.SqlSystem.Data.Sql

Proveedor ADO.NET Proveedor ADO.NET inprocessinprocessAcceso al contexto de la conexiónAcceso al contexto de la conexión

PipePipe

Estado servidorEstado servidor

Tablas triggersTablas triggers

PeticiónPetición

Cursores de servidorCursores de servidor

Page 16: Sql server 2005_envio

Procedimiento almacenado Procedimiento almacenado en .NETen .NET

Page 17: Sql server 2005_envio

Documentación disponibleDocumentación disponible

Using CLR Integration in SQL Server Using CLR Integration in SQL Server 2005 2005

Balaji RathakrishnanBalaji RathakrishnanChristian KleinermanChristian KleinermanBrad RichardsBrad RichardsRamachandran VenkateshRamachandran VenkateshVineet Rao Vineet Rao

Microsoft – Noviembre 2004 – 41 páginasMicrosoft – Noviembre 2004 – 41 páginas

http://msdn.microsoft.com/SQL/2005/2005Articles/http://msdn.microsoft.com/SQL/2005/2005Articles/default.aspx?pull=/library/en-us/dnsql90/html/default.aspx?pull=/library/en-us/dnsql90/html/sqlclrguidance.aspsqlclrguidance.aspManaged Data Access Inside SQL Server Managed Data Access Inside SQL Server

with ADO.NET and SQLCLRwith ADO.NET and SQLCLRPablo CastroPablo Castro - - MicrosoftMicrosoft – – AbrilAbril 200 20055 – – 2626 páginas páginas

http://msdn.microsoft.com/library/default.asp?url=/library/http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql90/html/mandataaccess.aspen-us/dnsql90/html/mandataaccess.asp

Page 18: Sql server 2005_envio

XML y SQL Server 2005XML y SQL Server 2005

Page 19: Sql server 2005_envio

XML y SQL Server 2005XML y SQL Server 2005NovedadesNovedades

Tipo de dato XMLTipo de dato XMLÍndices sobre campos XMLÍndices sobre campos XML

Gestión de esquemas XSDGestión de esquemas XSD

Consulta XQueryConsulta XQuery

Vistas XML (SQLXML)Vistas XML (SQLXML)

Mejoras en FOR XML y OPENXMLMejoras en FOR XML y OPENXML

Page 20: Sql server 2005_envio

XML y SQL Server 2005XML y SQL Server 2005Nuevo tipo XMLNuevo tipo XML

Almacena documentos XMLAlmacena documentos XMLPuede utilizarse como cualquier otro tipoPuede utilizarse como cualquier otro tipo

Columnas, parámetros, retorno de funciones …Columnas, parámetros, retorno de funciones …

Validación well-formed y XSDValidación well-formed y XSD

Se guarda como un BLOB (b1)Se guarda como un BLOB (b1)

EscenariosEscenariosInformación complejaInformación compleja

Datos semiestructuradosDatos semiestructurados

Gestión documental (ej. e-mail), mensajería Gestión documental (ej. e-mail), mensajería (SOAP)(SOAP)

Intercambio de documentos (B2B, B2C…)Intercambio de documentos (B2B, B2C…)

Page 21: Sql server 2005_envio

XML y SQL Server 2005XML y SQL Server 2005EsquemasEsquemas

Los campos XML pueden asociarse con Los campos XML pueden asociarse con esquemasesquemas

CREATE TABLE Invoices(CREATE TABLE Invoices(

id INT PRIMARY KEY,id INT PRIMARY KEY,

factura XML(EsquemaFactura)factura XML(EsquemaFactura)

......

CREATE TABLE Invoices(CREATE TABLE Invoices(

id INT PRIMARY KEY,id INT PRIMARY KEY,

factura XML(EsquemaFactura)factura XML(EsquemaFactura)

......

Esquemas almacenados en la base de Esquemas almacenados en la base de datosdatosCREATE XML SCHEMA COLLECTION geocollCREATE XML SCHEMA COLLECTION geocoll

'<xs:schema ...'<xs:schema ...

targetNamespace=urn:geo>targetNamespace=urn:geo>

......

</xs:schema>'</xs:schema>'

CREATE XML SCHEMA COLLECTION geocollCREATE XML SCHEMA COLLECTION geocoll

'<xs:schema ...'<xs:schema ...

targetNamespace=urn:geo>targetNamespace=urn:geo>

......

</xs:schema>'</xs:schema>'

Page 22: Sql server 2005_envio

XML y SQL Server 2005XML y SQL Server 2005Acceso a campos XMLAcceso a campos XML

XQUERYXQUERYStandard W3C (Last Call Working Draft Standard W3C (Last Call Working Draft 4/4/2005)4/4/2005)

Con extensiones para la actualizaciónCon extensiones para la actualización

Basado en XPathBasado en XPathMucha mayor riqueza para búsquedas complejasMucha mayor riqueza para búsquedas complejas

for $s in /doc[@id = 123]//sec[@num >= 3]for $s in /doc[@id = 123]//sec[@num >= 3]

return <topic>{data($s/heading)}</topic>return <topic>{data($s/heading)}</topic>

for $s in /doc[@id = 123]//sec[@num >= 3]for $s in /doc[@id = 123]//sec[@num >= 3]

return <topic>{data($s/heading)}</topic>return <topic>{data($s/heading)}</topic>

Page 23: Sql server 2005_envio

XML y SQL Server 2005XML y SQL Server 2005XQuery desde T-SQLXQuery desde T-SQL

xml.query: devuelve un tipo XMLxml.query: devuelve un tipo XML

xml.exist: devuelve un booleano si hay xml.exist: devuelve un booleano si hay resultadoresultado

xml.value: devuelve un valor simple (escalar)xml.value: devuelve un valor simple (escalar)

xml.nodes: devuelve una tabla con una xml.nodes: devuelve una tabla con una columnacolumna

xml.modifyxml.modify: : modifica el XMLmodifica el XMLSELECT id, xDoc.query(SELECT id, xDoc.query(

'for $s in /doc[@id = 123]//sec[@num >= 3]'for $s in /doc[@id = 123]//sec[@num >= 3]

return <topic>{data($s/heading)}</topic>') return <topic>{data($s/heading)}</topic>')

FROM docsFROM docs

SELECT id, xDoc.query(SELECT id, xDoc.query(

'for $s in /doc[@id = 123]//sec[@num >= 3]'for $s in /doc[@id = 123]//sec[@num >= 3]

return <topic>{data($s/heading)}</topic>') return <topic>{data($s/heading)}</topic>')

FROM docsFROM docs

Page 24: Sql server 2005_envio

XML y SQL Server 2005XML y SQL Server 2005T-SQL desde XQueryT-SQL desde XQuery

sql:variablesql:variableAcceso a variables T-SQL desde XqueryAcceso a variables T-SQL desde Xquery

sql:columnsql:columnAcceso a la columna a la que pertenece el Acceso a la columna a la que pertenece el XMLXMLselect CV.query(select CV.query(

'for $elem in /CV/DatosPersonales'for $elem in /CV/DatosPersonales

returnreturn

<Nombre><Nombre>

{ sql:column("Nombre") }{ sql:column("Nombre") }

</Nombre> '</Nombre> '

) from DatosPersonales) from DatosPersonales

select CV.query(select CV.query(

'for $elem in /CV/DatosPersonales'for $elem in /CV/DatosPersonales

returnreturn

<Nombre><Nombre>

{ sql:column("Nombre") }{ sql:column("Nombre") }

</Nombre> '</Nombre> '

) from DatosPersonales) from DatosPersonales

Page 25: Sql server 2005_envio

XML y SQL Server 2005XML y SQL Server 2005ÍndicesÍndices

Pueden definirse índices en columnas Pueden definirse índices en columnas XMLXML

Aceleran las sentencias XQueryAceleran las sentencias XQuery

Cuatro tiposCuatro tiposPRIMARY: Indexa los nodosPRIMARY: Indexa los nodos

PATH: Indexa por path de nodoPATH: Indexa por path de nodo

VALUE: Indexa por contenido de nodosVALUE: Indexa por contenido de nodos

PROPERTY: Indexa por nodos comunesPROPERTY: Indexa por nodos comunes

Page 26: Sql server 2005_envio

XML y SQL Server 2005XML y SQL Server 2005

Page 27: Sql server 2005_envio

Documentación disponibleDocumentación disponible

XML Options in Microsoft SQL XML Options in Microsoft SQL Server 2005Server 2005

Microsoft – Enero 2005 – 34 páginasMicrosoft – Enero 2005 – 34 páginas

http://msdn.microsoft.com/SQL/2005/2005Articles/http://msdn.microsoft.com/SQL/2005/2005Articles/default.aspx?pull=/library/en-us/dnsql90/html/default.aspx?pull=/library/en-us/dnsql90/html/sql2k5xmloptions.aspsql2k5xmloptions.aspXML Support in Microsoft SQL XML Support in Microsoft SQL

Server 2005Server 2005 Shankar Pal, Mark Fussell, Irwin DolobowskyShankar Pal, Mark Fussell, Irwin Dolobowsky

Microsoft Corporation – Mayo 2004 – 39 páginasMicrosoft Corporation – Mayo 2004 – 39 páginas

http://msdn.microsoft.com/SQL/2005/2005Articles/http://msdn.microsoft.com/SQL/2005/2005Articles/default.aspx?pull=/library/en-us/dnsql90/html/sql2k5xml.aspdefault.aspx?pull=/library/en-us/dnsql90/html/sql2k5xml.asp

Page 28: Sql server 2005_envio

Service BrokerService Broker

Page 29: Sql server 2005_envio

Service BrokerService Broker¿Qué es?¿Qué es?

Sistema de mensajería asíncronaSistema de mensajería asíncronaImplementado 100% en SQL ServerImplementado 100% en SQL Server

DestinatariosDestinatariosLa misma BBDDLa misma BBDDOtra BBDD en la misma instancia o en otra Otra BBDD en la misma instancia o en otra instanciainstanciaOtro servidor SQL Server remotoOtro servidor SQL Server remoto

IncluyeIncluyeNuevos objetosNuevos objetosNuevas sentencias T-SQLNuevas sentencias T-SQL

Utilizado internamente en SQL Server 2005Utilizado internamente en SQL Server 2005Query NotificationsQuery NotificationsEvent NotificationsEvent Notifications

Lo pueden usar otras aplicacionesLo pueden usar otras aplicaciones

Page 30: Sql server 2005_envio

Service BrokerService BrokerY con éste ya van 4…Y con éste ya van 4…

MSMQMSMQNecesita usar DTC para transacciones con Necesita usar DTC para transacciones con BDBD

No garantiza ordenamiento de mensajesNo garantiza ordenamiento de mensajes

Biztalk messagingBiztalk messagingIncorpora orquestaciónIncorpora orquestación

Automatiza procesoAutomatiza proceso

Indigo messagingIndigo messagingEs interoperableEs interoperable

Page 31: Sql server 2005_envio

Mensajería asíncrona Mensajería asíncrona (¿Cómo dice?)(¿Cómo dice?)

Usamos una cola para:Usamos una cola para:Que el proceso deje un Que el proceso deje un mensajemensaje en la cola en la cola y recupere inmediatamente el control del y recupere inmediatamente el control del proceso (proceso (asincroníaasincronía))

El software de gestión de colas se encarga El software de gestión de colas se encarga de gestionar la entrega de ese mensaje en de gestionar la entrega de ese mensaje en su destinosu destino

Con todos los matices adicionales (persistencia, Con todos los matices adicionales (persistencia, garantía, secuencia, entrega única, transacción, garantía, secuencia, entrega única, transacción, trazabilidad…)trazabilidad…)

Esas son las diferencias con un socket TCPEsas son las diferencias con un socket TCP

El receptor puede procesar los mensajes a El receptor puede procesar los mensajes a su conveniencia (con/sin prioridad, p.e.)su conveniencia (con/sin prioridad, p.e.)

Page 32: Sql server 2005_envio

Mensajería asíncrona Mensajería asíncrona (¿Dónde está el truco?)(¿Dónde está el truco?)

Es necesario disponer del software Es necesario disponer del software cliente de la cola y de un servidorcliente de la cola y de un servidorEs necesario “diseñar/definir” una serie Es necesario “diseñar/definir” una serie de mensajes y de diálogos entre de mensajes y de diálogos entre emisores y receptoresemisores y receptoresSi se utiliza en muchas aplicacionesSi se utiliza en muchas aplicaciones

Definimos un “canal” para cada cola Definimos un “canal” para cada cola (muchas)(muchas)Mezclamos varias comunicaciones en una Mezclamos varias comunicaciones en una misma cola (control)misma cola (control)

En algunos aspectos es similar a una En algunos aspectos es similar a una conexión a la BBDD (abrir/cerrar, coste, conexión a la BBDD (abrir/cerrar, coste, estado, …)estado, …)

Page 33: Sql server 2005_envio

Service BrokerService BrokerMensajesMensajes

Unidad de comunicaciónUnidad de comunicación

Tres tiposTres tiposBinariosBinarios

CabeceraCabecera

XML (tipados o sin tipar)XML (tipados o sin tipar)

CREATE MESSAGE TYPE CREATE MESSAGE TYPE [http://www.company.com/messages/Invoice][http://www.company.com/messages/Invoice]

VALIDATION = VALID_XML VALIDATION = VALID_XML

WITH SCHEMA COLLECTION invoice_xsdWITH SCHEMA COLLECTION invoice_xsd

CREATE MESSAGE TYPE CREATE MESSAGE TYPE [http://www.company.com/messages/Invoice][http://www.company.com/messages/Invoice]

VALIDATION = VALID_XML VALIDATION = VALID_XML

WITH SCHEMA COLLECTION invoice_xsdWITH SCHEMA COLLECTION invoice_xsd

Page 34: Sql server 2005_envio

Service BrokerService BrokerContratosContratos

Define los mensajes que se pueden Define los mensajes que se pueden intercambiarintercambiar

CREATE CONTRACT CREATE CONTRACT

[//company.com/Expenses/ExpenseSubmission][//company.com/Expenses/ExpenseSubmission]

( (

[//company.com/Expenses/SubmitExpense][//company.com/Expenses/SubmitExpense]

SENT BY INITIATOR,SENT BY INITIATOR,

[//company.com/Expenses/ApprovedOrDenied][//company.com/Expenses/ApprovedOrDenied]

SENT BY TARGET,SENT BY TARGET,

[//company.com/Expenses/ExpenseReimbursed][//company.com/Expenses/ExpenseReimbursed]

SENT BY TARGETSENT BY TARGET

))

CREATE CONTRACT CREATE CONTRACT

[//company.com/Expenses/ExpenseSubmission][//company.com/Expenses/ExpenseSubmission]

( (

[//company.com/Expenses/SubmitExpense][//company.com/Expenses/SubmitExpense]

SENT BY INITIATOR,SENT BY INITIATOR,

[//company.com/Expenses/ApprovedOrDenied][//company.com/Expenses/ApprovedOrDenied]

SENT BY TARGET,SENT BY TARGET,

[//company.com/Expenses/ExpenseReimbursed][//company.com/Expenses/ExpenseReimbursed]

SENT BY TARGETSENT BY TARGET

))

Page 35: Sql server 2005_envio

Service BrokerService BrokerColasColas

Puntos de entrada a los serviciosPuntos de entrada a los serviciosPueden leerse desde T-SQLPueden leerse desde T-SQL

Pueden llamar a un procedimientoPueden llamar a un procedimiento

CREATE QUEUE ExpenseQueueCCREATE QUEUE ExpenseQueueC

WITH STATUS = ONWITH STATUS = ON

ACTIVATION (ACTIVATION (

PROCEDURE_NAME = expense_activation,PROCEDURE_NAME = expense_activation,

MAX_QUEUE_READERS = 5,MAX_QUEUE_READERS = 5,

EXECUTE_AS USER = 'sa')EXECUTE_AS USER = 'sa')

CREATE QUEUE ExpenseQueueCCREATE QUEUE ExpenseQueueC

WITH STATUS = ONWITH STATUS = ON

ACTIVATION (ACTIVATION (

PROCEDURE_NAME = expense_activation,PROCEDURE_NAME = expense_activation,

MAX_QUEUE_READERS = 5,MAX_QUEUE_READERS = 5,

EXECUTE_AS USER = 'sa')EXECUTE_AS USER = 'sa')

Page 36: Sql server 2005_envio

Service BrokerService BrokerServiciosServicios

Funcionalidad expuesta en las colasFuncionalidad expuesta en las colas

Compuesto porCompuesto porUna colaUna cola

Varios contratosVarios contratos

CREATE SERVICE [//company.com/Expenses] CREATE SERVICE [//company.com/Expenses]

ON ExpenseQueueON ExpenseQueue

([//company.com/Expenses/ExpenseSubmission],([//company.com/Expenses/ExpenseSubmission],

[//company.com/Expenses/ExpenseProcessing])[//company.com/Expenses/ExpenseProcessing])

CREATE SERVICE [//company.com/Expenses] CREATE SERVICE [//company.com/Expenses]

ON ExpenseQueueON ExpenseQueue

([//company.com/Expenses/ExpenseSubmission],([//company.com/Expenses/ExpenseSubmission],

[//company.com/Expenses/ExpenseProcessing])[//company.com/Expenses/ExpenseProcessing])

Page 37: Sql server 2005_envio

Service BrokerService BrokerEnvío de mensajesEnvío de mensajes

1.- Creación del diálogo1.- Creación del diálogoUn diálogo ordena y correlaciona los Un diálogo ordena y correlaciona los mensajesmensajes

2.- Envío del mensaje2.- Envío del mensajeMediante comando SENDMediante comando SENDSET @ExpenseReport = “<report>…</report>”;SET @ExpenseReport = “<report>…</report>”;

BEGIN DIALOG @dialog_handleBEGIN DIALOG @dialog_handle

FROM SERVICE [//Adventure-Works.com/Expenses/ExpenseClient]FROM SERVICE [//Adventure-Works.com/Expenses/ExpenseClient]

TO SERVICE '//Adventure-Works.com/Expenses'TO SERVICE '//Adventure-Works.com/Expenses'

ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseProcessing] ;ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseProcessing] ;

SEND ON CONVERSATION @dialog_handleSEND ON CONVERSATION @dialog_handle

MESSAGE TYPE [//Adventure-Works.com/Expenses/SubmitExpense]MESSAGE TYPE [//Adventure-Works.com/Expenses/SubmitExpense]

(@ExpenseReport) ;(@ExpenseReport) ;

SET @ExpenseReport = “<report>…</report>”;SET @ExpenseReport = “<report>…</report>”;

BEGIN DIALOG @dialog_handleBEGIN DIALOG @dialog_handle

FROM SERVICE [//Adventure-Works.com/Expenses/ExpenseClient]FROM SERVICE [//Adventure-Works.com/Expenses/ExpenseClient]

TO SERVICE '//Adventure-Works.com/Expenses'TO SERVICE '//Adventure-Works.com/Expenses'

ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseProcessing] ;ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseProcessing] ;

SEND ON CONVERSATION @dialog_handleSEND ON CONVERSATION @dialog_handle

MESSAGE TYPE [//Adventure-Works.com/Expenses/SubmitExpense]MESSAGE TYPE [//Adventure-Works.com/Expenses/SubmitExpense]

(@ExpenseReport) ;(@ExpenseReport) ;

Page 38: Sql server 2005_envio

Service BrokerService BrokerRecepción de mensajesRecepción de mensajes

Comando RECEIVEComando RECEIVEEspecifica la cola y el diálogoEspecifica la cola y el diálogo

Es posible quedar a la espera con WAITFOREs posible quedar a la espera con WAITFOR

WAITFOR ( WAITFOR (

RECEIVE * RECEIVE *

FROM ExpenseQueue), FROM ExpenseQueue),

TIMEOUT 60000 TIMEOUT 60000

WAITFOR ( WAITFOR (

RECEIVE * RECEIVE *

FROM ExpenseQueue), FROM ExpenseQueue),

TIMEOUT 60000 TIMEOUT 60000

Page 39: Sql server 2005_envio

Colas simplesColas simples

Page 40: Sql server 2005_envio

Documentación disponibleDocumentación disponible

An Introduction to SQL Server An Introduction to SQL Server Service BrokerService Broker

Roger Wolter – Julio 2004 – Roger Wolter – Julio 2004 – 110 páginas0 páginas

Kit de Recursos SQL Server 2005 Beta 2Kit de Recursos SQL Server 2005 Beta 2

Conceptos básicosConceptos básicosA First Look at SQL Server 2005 A First Look at SQL Server 2005 Service BrokerService Broker

Roger Wolter – Julio 2004 – 20 páginasRoger Wolter – Julio 2004 – 20 páginas

http://msdn.microsoft.com/SQL/2005/2005Articles/default.ashttp://msdn.microsoft.com/SQL/2005/2005Articles/default.aspx?pull=/library/en-us/dnsql90/html/sqlsvcbroker.asppx?pull=/library/en-us/dnsql90/html/sqlsvcbroker.asp

Conceptos y ejemplos de códigoConceptos y ejemplos de código

Page 41: Sql server 2005_envio

Mejoras en T-SQLMejoras en T-SQL

Page 42: Sql server 2005_envio

Mejoras en T-SQLMejoras en T-SQLControl de excepcionesControl de excepciones

Se acabó el acceso a @@ERRORSe acabó el acceso a @@ERROR

Bloques TRY…CATCHBloques TRY…CATCHAnidablesAnidables

Nuevas funciones disponibles en el CATCHNuevas funciones disponibles en el CATCHERROR_NUMBER, ERROR_MESSAGE…ERROR_NUMBER, ERROR_MESSAGE…

BEGIN TRY BEGIN TRY

SELECT * FROM authorsSELECT * FROM authors

END TRYEND TRY

BEGIN CATCHBEGIN CATCH

SELECT ERROR_NUMBER()SELECT ERROR_NUMBER()

END CATCHEND CATCH

BEGIN TRY BEGIN TRY

SELECT * FROM authorsSELECT * FROM authors

END TRYEND TRY

BEGIN CATCHBEGIN CATCH

SELECT ERROR_NUMBER()SELECT ERROR_NUMBER()

END CATCHEND CATCH

Page 43: Sql server 2005_envio

Mejoras en T-SQLMejoras en T-SQLCommon Table ExpressionsCommon Table Expressions

Resultset temporalResultset temporalSólo vive en la sentencia actualSólo vive en la sentencia actual

WITH mid ASWITH mid AS

((

SELECT (MAX(ListPrice) + MIN(ListPrice))/2 as midval SELECT (MAX(ListPrice) + MIN(ListPrice))/2 as midval from production.productfrom production.product

))

SELECT * FROM Production.Product, midSELECT * FROM Production.Product, mid

WHERE ListPrice > midval WHERE ListPrice > midval

WITH mid ASWITH mid AS

((

SELECT (MAX(ListPrice) + MIN(ListPrice))/2 as midval SELECT (MAX(ListPrice) + MIN(ListPrice))/2 as midval from production.productfrom production.product

))

SELECT * FROM Production.Product, midSELECT * FROM Production.Product, mid

WHERE ListPrice > midval WHERE ListPrice > midval

Mejor que las subqueries si hay varias Mejor que las subqueries si hay varias igualesiguales

Admite recursividadAdmite recursividad

Page 44: Sql server 2005_envio

Mejoras en T-SQLMejoras en T-SQLRankingRanking

Añade una columna basada en rankingsAñade una columna basada en rankingsROW_NUMBERROW_NUMBER

RANKRANK

DENSE_RANKDENSE_RANK

NTILE (n)NTILE (n)

Pueden agruparse en particionesPueden agruparse en particionesPARTITION BYPARTITION BY

Page 45: Sql server 2005_envio

Mejoras en T-SQLMejoras en T-SQLRanking (2)Ranking (2)

SELECT orderid, customerid, SELECT orderid, customerid,

ROW_NUMBER() OVER(ORDER BY customerid) AS num,ROW_NUMBER() OVER(ORDER BY customerid) AS num,

RANK() OVER(ORDER BY customerid) AS [rank],RANK() OVER(ORDER BY customerid) AS [rank],

DENSE_RANK() OVER(ORDER BY customerid) AS [denserank],DENSE_RANK() OVER(ORDER BY customerid) AS [denserank],

NTILE(5) OVER(ORDER BY customerid) AS ntile5NTILE(5) OVER(ORDER BY customerid) AS ntile5

FROM ordersFROM orders

SELECT orderid, customerid, SELECT orderid, customerid,

ROW_NUMBER() OVER(ORDER BY customerid) AS num,ROW_NUMBER() OVER(ORDER BY customerid) AS num,

RANK() OVER(ORDER BY customerid) AS [rank],RANK() OVER(ORDER BY customerid) AS [rank],

DENSE_RANK() OVER(ORDER BY customerid) AS [denserank],DENSE_RANK() OVER(ORDER BY customerid) AS [denserank],

NTILE(5) OVER(ORDER BY customerid) AS ntile5NTILE(5) OVER(ORDER BY customerid) AS ntile5

FROM ordersFROM orders

orderid customerid num rank denserank tile5orderid customerid num rank denserank tile5

----------- ---------- ------ ------ --------- ----------------- ---------- ------ ------ --------- ------

10308 ANATR 1 1 1 110308 ANATR 1 1 1 1

10365 ANTON 2 2 2 110365 ANTON 2 2 2 1

10355 AROUT 3 3 3 210355 AROUT 3 3 3 2

10383 AROUT 4 3 3 210383 AROUT 4 3 3 2

10278 BERGS 5 5 4 310278 BERGS 5 5 4 3

10280 BERGS 6 5 4 310280 BERGS 6 5 4 3

10384 BERGS 7 5 4 410384 BERGS 7 5 4 4

10265 BLONP 8 8 5 410265 BLONP 8 8 5 4

10297 BLONP 9 8 5 510297 BLONP 9 8 5 5

10360 BLONP 10 8 5 510360 BLONP 10 8 5 5

orderid customerid num rank denserank tile5orderid customerid num rank denserank tile5

----------- ---------- ------ ------ --------- ----------------- ---------- ------ ------ --------- ------

10308 ANATR 1 1 1 110308 ANATR 1 1 1 1

10365 ANTON 2 2 2 110365 ANTON 2 2 2 1

10355 AROUT 3 3 3 210355 AROUT 3 3 3 2

10383 AROUT 4 3 3 210383 AROUT 4 3 3 2

10278 BERGS 5 5 4 310278 BERGS 5 5 4 3

10280 BERGS 6 5 4 310280 BERGS 6 5 4 3

10384 BERGS 7 5 4 410384 BERGS 7 5 4 4

10265 BLONP 8 8 5 410265 BLONP 8 8 5 4

10297 BLONP 9 8 5 510297 BLONP 9 8 5 5

10360 BLONP 10 8 5 510360 BLONP 10 8 5 5

Page 46: Sql server 2005_envio

Mejoras en T-SQLMejoras en T-SQLOtrasOtras

PivotPivotConvierte filas a columnasConvierte filas a columnas

OUTPUTOUTPUTPermite especificar una salida a sentencias Permite especificar una salida a sentencias de actualización distinta al número de filasde actualización distinta al número de filas

Ej. Registros borrados, identities, etc.Ej. Registros borrados, identities, etc.

Aislamiento snapshotAislamiento snapshotEscritores no bloquean a lectoresEscritores no bloquean a lectores

Page 47: Sql server 2005_envio

Mejoras en T-SQLMejoras en T-SQLRanking (2)Ranking (2)

DECLARE @DeletedOrders TABLEDECLARE @DeletedOrders TABLE

(( orderid INT,orderid INT,

orderdate DATETIME,orderdate DATETIME,

empid INT,empid INT,

custid VARCHAR(5),custid VARCHAR(5),

qty INTqty INT ))

WHILE 1=1WHILE 1=1

BEGINBEGIN

BEGIN TRANBEGIN TRAN

DELETE TOP(5000) FROM OrdersDELETE TOP(5000) FROM Orders

OUTPUT deleted.* INTO @DeletedOrdersOUTPUT deleted.* INTO @DeletedOrders

WHERE orderdate < '20030101'WHERE orderdate < '20030101'

INSERT INTO OrdersArchiveINSERT INTO OrdersArchive

SELECT * FROM @DeletedOrdersSELECT * FROM @DeletedOrders

COMMIT TRANCOMMIT TRAN

DELETE FROM @DeletedOrdersDELETE FROM @DeletedOrders

IF @@rowcount < 5000IF @@rowcount < 5000

BREAKBREAK

ENDEND

DECLARE @DeletedOrders TABLEDECLARE @DeletedOrders TABLE

(( orderid INT,orderid INT,

orderdate DATETIME,orderdate DATETIME,

empid INT,empid INT,

custid VARCHAR(5),custid VARCHAR(5),

qty INTqty INT ))

WHILE 1=1WHILE 1=1

BEGINBEGIN

BEGIN TRANBEGIN TRAN

DELETE TOP(5000) FROM OrdersDELETE TOP(5000) FROM Orders

OUTPUT deleted.* INTO @DeletedOrdersOUTPUT deleted.* INTO @DeletedOrders

WHERE orderdate < '20030101'WHERE orderdate < '20030101'

INSERT INTO OrdersArchiveINSERT INTO OrdersArchive

SELECT * FROM @DeletedOrdersSELECT * FROM @DeletedOrders

COMMIT TRANCOMMIT TRAN

DELETE FROM @DeletedOrdersDELETE FROM @DeletedOrders

IF @@rowcount < 5000IF @@rowcount < 5000

BREAKBREAK

ENDEND

Page 48: Sql server 2005_envio

Mejoras en T-SQLMejoras en T-SQLOtras (2)Otras (2)

DRIDRISET NULL y SET DEFAULTSET NULL y SET DEFAULT

(…)(…)

CONSTRAINT FK_Orders_CustomersCONSTRAINT FK_Orders_Customers

FOREIGN KEY(customerid)FOREIGN KEY(customerid)

REFERENCES Customers(customerid)REFERENCES Customers(customerid)

ON DELETE SET NULLON DELETE SET NULL

ON UPDATE SET DEFAULTON UPDATE SET DEFAULT

(…)(…)

CONSTRAINT FK_Orders_CustomersCONSTRAINT FK_Orders_Customers

FOREIGN KEY(customerid)FOREIGN KEY(customerid)

REFERENCES Customers(customerid)REFERENCES Customers(customerid)

ON DELETE SET NULLON DELETE SET NULL

ON UPDATE SET DEFAULTON UPDATE SET DEFAULT

TOPTOPPermite expresionesPermite expresiones

También para actualizacionesTambién para actualizaciones

Page 49: Sql server 2005_envio

T-SQLT-SQL

Page 50: Sql server 2005_envio

Documentación disponibleDocumentación disponible

SQL Server 2005 Beta 2 Transact-SQL Server 2005 Beta 2 Transact-SQL EnhancementsSQL Enhancements

Itzik Ben-GanItzik Ben-Gan – S– Solid Quality Learningolid Quality Learning

DiciembreDiciembre 200 20044 – – 4949 páginas páginas

http://msdn.microsoft.com/library/en-us/dnsql90/html/http://msdn.microsoft.com/library/en-us/dnsql90/html/sql_05TSQLEnhance.aspsql_05TSQLEnhance.asp

SQL Server 2005 Beta 2 Snapshot SQL Server 2005 Beta 2 Snapshot IsolationIsolation

Kimberly L. Tripp - SQLSkills.com – Febrero 2005 – 59 Kimberly L. Tripp - SQLSkills.com – Febrero 2005 – 59 páginaspáginas

http://msdn.microsoft.com/SQL/2005/2005Articles/http://msdn.microsoft.com/SQL/2005/2005Articles/default.aspx?pull=/library/en-us/dnsql90/html/default.aspx?pull=/library/en-us/dnsql90/html/sql2k5snapshotisol.aspsql2k5snapshotisol.asp

Hands On Lab 115Hands On Lab 115 MicrosoftMicrosoft - - 1818 páginas páginas

Kit de recursos Beta 2 Kit de recursos Beta 2

Page 51: Sql server 2005_envio

Mejoras en ADO.NETMejoras en ADO.NET

para SQL Server 2005para SQL Server 2005

Page 52: Sql server 2005_envio

Mejoras en ADO.NETMejoras en ADO.NETMARSMARS

Múltiples resultsets y transacciones Múltiples resultsets y transacciones simultáneas por conexiónsimultáneas por conexión

SqlCommand cmd = new SqlCommand("select * from SqlCommand cmd = new SqlCommand("select * from authors",conn);authors",conn);

SqlCommand cmd2 = new SqlCommand("select * from SqlCommand cmd2 = new SqlCommand("select * from jobs",conn);jobs",conn);

conn.Open();conn.Open();

SqlDataReader rdr = cmd.ExecuteReader();SqlDataReader rdr = cmd.ExecuteReader();

SqlDataReader rdr2 = cmd2.ExecuteReader();SqlDataReader rdr2 = cmd2.ExecuteReader();

rdr2.Read();rdr2.Read();

rdr.Read(); rdr.Read();

SqlCommand cmd = new SqlCommand("select * from SqlCommand cmd = new SqlCommand("select * from authors",conn);authors",conn);

SqlCommand cmd2 = new SqlCommand("select * from SqlCommand cmd2 = new SqlCommand("select * from jobs",conn);jobs",conn);

conn.Open();conn.Open();

SqlDataReader rdr = cmd.ExecuteReader();SqlDataReader rdr = cmd.ExecuteReader();

SqlDataReader rdr2 = cmd2.ExecuteReader();SqlDataReader rdr2 = cmd2.ExecuteReader();

rdr2.Read();rdr2.Read();

rdr.Read(); rdr.Read();

Page 53: Sql server 2005_envio

Mejoras en ADO.NETMejoras en ADO.NETDependencias SQLDependencias SQL

Notificación cuando cambia un Notificación cuando cambia un resultsetresultsetÚtil para invalidar caché o vistasÚtil para invalidar caché o vistas

Basado en Service BrokerBasado en Service BrokerSqlNotificationRequestSqlNotificationRequest

Recibe un objeto comando y un servicioRecibe un objeto comando y un servicio

Envía un mensaje al servicio cuando cambia el Envía un mensaje al servicio cuando cambia el resultsetresultset

SqlDependencySqlDependencyAbstrae el Service BrokerAbstrae el Service Broker

Evento OnChangedEvento OnChanged

Page 54: Sql server 2005_envio

NotificacionesNotificaciones

Page 55: Sql server 2005_envio

Documentación disponibleDocumentación disponible

Multiple Active Result Sets (MARS) in Multiple Active Result Sets (MARS) in SQL Server 2005SQL Server 2005

Christian KleinermanChristian Kleinerman - - MicrosoftMicrosoft – – OctubreOctubre 200 20044 – – 119 páginas9 páginas

http://msdn.microsoft.com/library/default.asp?url=/library/http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql90/html/MARSinSQL05.aspen-us/dnsql90/html/MARSinSQL05.asp

ADO.NET and System.Xml v.2.0--The ADO.NET and System.Xml v.2.0--The Beta Version 2ªedBeta Version 2ªed

Alex Homer, David Sussman, Mark FussellAlex Homer, David Sussman, Mark Fussell

Addison WesleyAddison Wesley – – Marzo Marzo 20020055 – – 560 560 páginaspáginas (cap.muestra – (cap.muestra – 38 págs.)38 págs.)

http://www.awprofessional.com/content/images/0321247124/http://www.awprofessional.com/content/images/0321247124/samplechapter/homer_ch05.pdfsamplechapter/homer_ch05.pdf

http://www.daveandal.net/books/7124/http://www.daveandal.net/books/7124/ (código) (código)

Page 56: Sql server 2005_envio

Mejoras en ADO.NETMejoras en ADO.NETTransaccionesTransacciones

System.TransactionsSystem.TransactionsAPI manejada para definir transaccionesAPI manejada para definir transacciones

Sin EnterpriseServices (COM+)Sin EnterpriseServices (COM+)

PromotablePromotableComienza como local (10 ms)Comienza como local (10 ms)

Sigue local en accesos a SQL Server 2005Sigue local en accesos a SQL Server 2005

Sólo se promueve a DTC siSólo se promueve a DTC siSe accede a SQL Server 2000, MSMQ, Oracle…Se accede a SQL Server 2000, MSMQ, Oracle…

Se acceden a dos SQL Server 2005Se acceden a dos SQL Server 2005

Page 57: Sql server 2005_envio

Mejoras en ADO.NETMejoras en ADO.NETTransacciones (2)Transacciones (2)

using (TransactionScope ts = new TransactionScope())using (TransactionScope ts = new TransactionScope())

{{

SqlConnection conn1 = new SqlConnection(SqlConnection conn1 = new SqlConnection(

"server=.;integrated security=sspi;database=pubs"))"server=.;integrated security=sspi;database=pubs"))

// Local tx si SQL 2005, si no distribuida// Local tx si SQL 2005, si no distribuida

conn1.Open();conn1.Open();

SqlCommand cmd1 = new SqlCommand(SqlCommand cmd1 = new SqlCommand(

"INSERT jobs 'job1', 10, 10", conn1);"INSERT jobs 'job1', 10, 10", conn1);

cmd1.ExecuteNonQuery();cmd1.ExecuteNonQuery();

SqlConnection conn2 = new SqlConnection(SqlConnection conn2 = new SqlConnection(

"server=other;integrated security=sspi;database=pubs"))"server=other;integrated security=sspi;database=pubs"))

// pr// proomueve a distribuidamueve a distribuida

conn2.Open();conn2.Open();

SqlCommand cmd2 = new SqlCommand(SqlCommand cmd2 = new SqlCommand(

"INSERT jobs 'job2', 10, 10", conn2);"INSERT jobs 'job2', 10, 10", conn2);

cmd2.ExecuteNonQuery();cmd2.ExecuteNonQuery();

ts.Cots.Complete()mplete(); // commit transaction ; // commit transaction

}}

using (TransactionScope ts = new TransactionScope())using (TransactionScope ts = new TransactionScope())

{{

SqlConnection conn1 = new SqlConnection(SqlConnection conn1 = new SqlConnection(

"server=.;integrated security=sspi;database=pubs"))"server=.;integrated security=sspi;database=pubs"))

// Local tx si SQL 2005, si no distribuida// Local tx si SQL 2005, si no distribuida

conn1.Open();conn1.Open();

SqlCommand cmd1 = new SqlCommand(SqlCommand cmd1 = new SqlCommand(

"INSERT jobs 'job1', 10, 10", conn1);"INSERT jobs 'job1', 10, 10", conn1);

cmd1.ExecuteNonQuery();cmd1.ExecuteNonQuery();

SqlConnection conn2 = new SqlConnection(SqlConnection conn2 = new SqlConnection(

"server=other;integrated security=sspi;database=pubs"))"server=other;integrated security=sspi;database=pubs"))

// pr// proomueve a distribuidamueve a distribuida

conn2.Open();conn2.Open();

SqlCommand cmd2 = new SqlCommand(SqlCommand cmd2 = new SqlCommand(

"INSERT jobs 'job2', 10, 10", conn2);"INSERT jobs 'job2', 10, 10", conn2);

cmd2.ExecuteNonQuery();cmd2.ExecuteNonQuery();

ts.Cots.Complete()mplete(); // commit transaction ; // commit transaction

}}

Page 58: Sql server 2005_envio

TransaccionesTransacciones

Page 59: Sql server 2005_envio

Documentación disponibleDocumentación disponible

ADO.NET and System.TransactionsADO.NET and System.Transactions John Papa John Papa - - MicrosoftMicrosoft – – MSDN Magazine FebreroMSDN Magazine Febrero 200 20055 – – 55 páginaspáginas

http://msdn.microsoft.com/msdnmag/issues/05/02/http://msdn.microsoft.com/msdnmag/issues/05/02/DataPoints/default.aspxDataPoints/default.aspx

Page 60: Sql server 2005_envio

BI Operaciones diversasBI Operaciones diversasSSISSSISUDMUDMSSAS (OLAP) SSAS (OLAP) SSRSSSRS

Page 61: Sql server 2005_envio

[email protected]@ramblainf.com