Presentation Title Here

musicincurableΔιαχείριση Δεδομένων

31 Ιαν 2013 (πριν από 4 χρόνια και 6 μήνες)

261 εμφανίσεις

Bases de Datos con SQL
Server 2005

David Salgado

MVP C#

david.salgado@muxu.net

Tarde para huir

¿Por qué no nos gustan las BBDD a los
desarrolladores?

Ejercicios 3FN

SQL = Simple Query Language

No optimizamos, no hacemos trucos,….

Eso es sólo académicamente

Que alguien detenga al profesor de BBDD,
que ahora me explico :$

Agenda

Motores de BBDD

SQL Server 2005

Acceso a datos desde las aplicaciones

Modelo Conectado

Modelo Desconectado

XML

Programación en el motor de BBDD

Caso de estudio: SkyServer


Agenda

Motores de BBDD

SQL Server 2005

Acceso a datos desde las aplicaciones

Modelo Conectado

Modelo Desconectado

XML

Programación en el motor de BBDD

Caso de estudio: SkyServer


Motores de Base de Datos

Orientados a archivo

La base de datos se encuentra en un
archivo

Implicaciones

Acceso desde el cliente

Ineficiente en accesos simultáneos

Para trabajar con aplicaciones distribuidas:

Replicarlos en los equipos

Directorios compartidos, FTPs…

Ejemplos:

Clipper, MS Access (.mdb)

Motores de Base de Datos

Orientados a servidor

Ya no trabajamos contra un archivo,
trabajamos contra un servicio

Preparado para accesos simultáneos

Cliente / Servidor

Ejemplos:

SQL Server, Oracle, Informix, DB2,
PostgreSQL…

Motores de Base de Datos

Mitos, Leyendas y el sexo de los ángeles

Bases de Datos Orientadas a Objetos

Motores de persistencia SI

ObjectSpaces, Hibernate, …

¿Qué debemos hacer?
( básico )

Transact
-
SQL (T
-
SQL)

Evitar select * from …;

Evitar búsquedas like ‘%tal’

Crear índices, pero no demasiados

Se obtienen buenas sugerencias desde el DTA (Database
Tuning Advisor )

Definir el esquema de BD en 3FN

Claves primarias, externas, etc.

Partir de un buen diseño y
desnormalizar

según
necesidades del desarrollo

Motores de Base de Datos

SQL Server 2000

Notification Services

Notificaciones & Alertas

Data Transformation Services

ETL

SQL Server Engine

Relational Database Engine

Reporting Services

Informes Empresariales

Herramientas de Gestión

Herramientas de desarrollo

Replication Services

Replicación de Datos

Analysis Services

OLAP & Data Mining

Motores de Base de Datos

Integración del CLR en el motor

Soporte HTTP (Servicios Web


endpoints)

Nuevo tipo de datos: XML

Mejoras en T
-
SQL

Service Broker

Nuevo modelo de seguridad

Mejoras en administración



.
NET Framework


Common Language Runtime Integration


User
-
defined Aggregates


User
-
defined Data Types


User
-
defined Functions


SQL Server .NET Data Provider


Extended Triggers


Data Types



Managed SQL Types



New XML Datatype


Varchar (MAX) Varbinary (MAX)


SQL Server Engine



New Message Service Broker


HTTP Support (Native HTTP)


Database Tuning Advisor


Multiple Active Result Sets


Persisted Computed Columns



Snapshot Isolation Level


Scale Up Partitioning



VIA support


NUMA support


Database Failure and Redundancy


Fail
-
over Clustering (up to 8 node)


Enhanced Multi
-
instance Support


Database Mirroring



Database Snapshots

XML




XQUERY Support


XML Data Manipulation Language



FOR XML Enhancements



XML Schema (XSD) Support


MSXML 6.0 (Native)



.Net XML Framework

Full
-
text Search


Indexing of XML Datatype


Database Maintenance



Backup and Restore Enhancements


Checksum Integrity Checks


Dedicated Administrator Connection


Dynamic AWE



Fast Recovery



Highly
-
available Upgrade



Online Index Operations



Online Restore



Parallel DBCC



Parallel Index Operations


Management Tools


New Management Studio


MDX Query Editor



Version Control Support



XML/A



SQLCMD Command Line Tool

Performance Tuning



Profiler Enhancements



Profiling Analysis Services


Exportable Showplan


Exportable Deadlock Traces

MDAC


SNAC


Microsoft Installer base setup


Support for Active Directory Deployment

SQL Client .NET Data Provider


Server Cursor Support


Asynch

Security



All Permissions Grantable


Fine Grain Administration Rights


Separation of Users and Schema


Data encryption primitives

Replication


Auto
-
tuning Replication Agents


Oracle Publication


Improved Blob Change Tracking



Replication Monitor

OLAP and Data Mining


Analysis Management Objects


Windows Integrated Backup and Restore


Web Service/XML for Analysis


DTS and DM Integration


New Data Mining Algorithms


Auto Packaging and Deployment

Data Transformation Services


New Architecture (DTR + DTP)


Complex Control Flows



Control Flow Debugging



For Each Enumerations



Property Mappings


Full Data Flow Designer



Full DTS Control Flow Designer


Graphical Presentation of Pkg Execution


Immediate Mode and Project Mode


Package (Advanced) Deployment Tools


Custom Tasks and Transformations

Reporting Services


Multiple Output Formats


Parameters (Static, Dynamic, Hierarchical)


Bulk Delivery of Personalized Content


Support Multiple Data Sources


STS (Web Parts, Doc Libraries)


Visual Design Tool


Charting, Sorting, Filtering, Drill
-
Through


Scheduling, Caching


Complete Scripting Engine


Scale Out architecture


Open XML Report Definition

Notification Services & SQL Server CE

Agenda

Motores de BBDD

Acceso a datos desde las aplicaciones

Modelo Conectado

Modelo Desconectado

XML

Programación en el motor de BBDD

Caso de estudio: SkyServer


Acceso a los datos desde las
aplicaciones

Evolución:

ODBC
-
> OLEDB
-
> ADO
-
> ADO.NET

ADO.NET

Clases, interfaces, estructuras y tipos que
gestionan el acceso a los datos desde .NET

System.Data

System.Data.Odbc

System.Data.OleDb

System.Data.SqlClient

SqlConnection

ODBCConnection

OleDbConnection

……

Capa de acceso a BBDD

Capa de negocio

Clientes

( windows, web,
smartclient … )

Acceso a los datos desde las
aplicaciones
( alternativas )

Capa de Acceso a BBDD

DataReader

Connection

Command

DataAdapter

DataSet

Acceso a datos desde las
aplicaciones
(alternativas)

El acceso conectado es más rápido

Que exista el modelo desconectado no quiere
decir que lo usemos para todo

Navegación en una aplicación Windows

Entornos móviles



Cómo decidir

Arquitectura

http://
msdn.microsoft.com/architecture

“Patterns & Practices”

http://www.microsoft.com/resources/practices

Building Blocks

Acceso a Bases de Datos

Acceso a datos desde las
aplicaciones
(xml)

XML como almacén de información

Asociación con el DataSet


DataSet ds = new DataSet();


ds.ReadXml(“archivo.xml”);


ds.Tables[0].Rows…..


ds.WriteXml(“archivo.xml”);

APIs de trabajo con XML

DOM, SAX, XPath

Vendrán: XPath2, XQuery

Capa de Datos

ADO.NET: Modelo desconectado

Capa Negocio

Capa

Datos

Capa Presentación

Web forms

Negocio a Negocio

DataSet

DataSet

Internet

Intranet

DataAdapter

DataAdapter

Xml

Aplicación.Exe

IE

DataSet

Windows forms

Agenda

Motores de BBDD

Acceso a datos desde las aplicaciones

Modelo Conectado

Modelo Desconectado

XML

Programación en el motor de BBDD

Caso de estudio: SkyServer


Programación en el motor

¿Qué se puede programar en el motor?

Consultas y modificaciones sobre los datos

Disparadores (triggers)

Agrupar funcionalidad en procedimientos
almacenados

Funciones definidas de usuario

….

Es más,
debe

programarse el servidor


XQuery


consulta sobre tipo de datos XML

T
-
SQL


extensión a SQL

NET integrado en el motor
-

lenguajes

Cada cosa es para lo que es


Programación en el Motor

Ejemplos T
-
SQL

CREATE PROCEDURE CustOrdersOrders
@CustomerID nchar(5)

AS

SELECT OrderID,


OrderDate,


RequiredDate,


ShippedDate

FROM Orders

WHERE CustomerID = @CustomerID

ORDER BY OrderID

--

Exec CustOrdersOrders ‘ander’

Programación en el



Motor

Ejemplos T
-
SQL

create proc dbo.dt_isundersourcecontrol


@vchLoginName varchar(255) = '',


@vchPassword varchar(255) = '',


@iWhoToo int = 0 /* 0 => Just check project; 1 => get list of objs */

as


set nocount on


declare @iReturn int


declare @iObjectId int


select @iObjectId = 0


declare @VSSGUID varchar(100)


select @VSSGUID = 'SQLVersionControl.VCS_SQL'


declare @iReturnValue int


select @iReturnValue = 0


declare @iStreamObjectId int


select @iStreamObjectId = 0


declare @vchTempText varchar(255)


declare @iPropertyObjectId int


select @iPropertyObjectId = (select objectid from dbo.dtproperties where property =
'VCSProjectID')


declare @vchProjectName varchar(255)


declare @vchSourceSafeINI varchar(255)


declare @vchServerName varchar(255)


declare @vchDatabaseName varchar(255)


exec dbo.dt_getpropertiesbyid_vcs @iPropertyObjectId, 'VCSProject',
@vchProjectName OUT


exec dbo.dt_getpropertiesbyid_vcs @iPropertyObjectId, 'VCSSourceSafeINI',
@vchSourceSafeINI OUT


exec dbo.dt_getpropertiesbyid_vcs @iPropertyObjectId, 'VCSSQLServer',
@vchServerName OUT


exec dbo.dt_getpropertiesbyid_vcs @iPropertyObjectId, 'VCSSQLDatabase',
@vchDatabaseName OUT


if (@vchProjectName = '')

set @vchProjectName


= null


if (@vchSourceSafeINI = '') set @vchSourceSafeINI

= null


if (@vchServerName = '')

set @vchServerName


= null


if (@vchDatabaseName = '')

set @vchDatabaseName

= null


if (@vchProjectName is null) or (@vchSourceSafeINI is null) or (@vchServerName is null)
or (@vchDatabaseName is null)


begin


RAISERROR('Not Under Source Control',16,
-
1)


return


end


if @iWhoToo = 1


begin


/* Get List of Procs in the project */


exec @iReturn = master.dbo.sp_OACreate @VSSGUID, @iObjectId OUT


if @iReturn <> 0 GOTO E_OAError


exec @iReturn = master.dbo.sp_OAMethod @iObjectId,







'GetListOfObjects',NULL,@vchProjectName,





@vchSourceSafeINI,@vchServerName,






@vchDatabaseName,@vchLoginName,





@vchPassword


if @iReturn <> 0 GOTO E_OAError


exec @iReturn = master.dbo.sp_OAGetProperty @iObjectId, 'GetStreamObject',
@iStreamObjectId OUT


if @iReturn <> 0 GOTO E_OAError


create table #ObjectList (id int identity, vchObjectlist varchar(255))


select @vchTempText = 'STUB'


while @vchTempText is not null


begin


exec @iReturn = master.dbo.sp_OAMethod @iStreamObjectId, 'GetStream',
@iReturnValue OUT, @vchTempText OUT


if @iReturn <> 0 GOTO E_OAError


if (@vchTempText = '') set @vchTempText = null


if (@vchTempText is not null) insert into #ObjectList (vchObjectlist ) select
@vchTempText


end


select vchObjectlist from #ObjectList order by id


end

CleanUp:


return

E_OAError:


exec dbo.dt_displayoaerror @iObjectId, @iReturn


goto CleanUp

select @vchTempText = 'STUB'


while @vchTempText is not null


begin


exec @iReturn = ster.dbo.sp_OAMethod


@iStreamObjectId, 'GetStream',


@iReturnValue OUT, @vchTempText






OUT


if @iReturn <> 0 GOTO E_OAError




if (@vchTempText = '')



set @vchTempText = null




if (@vchTempText is not null)


insert into #ObjectList




(vchObjectlist )


select @vchTempText


end

Programación en el Motor

.NET

Se desarrolla con Visual Studio
2005

Depuración, puntos de
interrupción :O

Los ensamblados se
almacenan en SQL Server
2005

Permite extender el sistema

Funciones escalares

Tipos

Triggers

Agregados

Procedimientos

Acceso a datos

SQL Engine

Windows

SQL OS

CLR

Hosting

Layer

Procedimiento almacenado

Desarrollar, desplegar y depurar
con Visual Studio 2005

Programación en el Motor

¿
Cuándo

.NET
?

Procesos complejos

Impuestos, descuentos, cálculos matemáticos

Acceso a recursos externos

Ficheros, sockets, Servicios web, …

Proceso de imágenes

Aplicaciones científicas

Gestión de cadenas

Depuración

Localización


Webcast teórico


Talleres en ciudades


Aplicación MSDN Video


Webcast práctica 18 Octubre


Chat 28 Octubre


www.DesarrollaConMSDN.com


Código de MSDN Video


Calendario


Tutoriales


Seminarios


Foros


Descuento 40% libros

Sep

Oct

Nov

Dic

Ene

Feb

Mar

Abr

May

Jun

.NET y Servicios
Web

Desarrollo
web

Smart

Clients

Visual Studio 2005

SQL Server 2005

Recursos

www.siquelnet.com

www.portalsql.com

www.solidqualitylearning.com

www.sqljunkies.com

News de Microsoft


Publicación

www.dotnetmania.com



¿ Preguntas ?

Gracias


© 2004, 2005 Microsoft Corporation. Todos los derechos reservados.

Esta presentación tiene propósito informativo únicamente. Microsoft no ofrece ninguna garantía , expresa o implítica, en este

do
cumento.