Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad...

26
Acceso a Datos Acceso a Datos avanzado avanzado Daniel Seara Daniel Seara

Transcript of Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad...

Page 1: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

Acceso a Datos avanzadoAcceso a Datos avanzadoAcceso a Datos avanzadoAcceso a Datos avanzado

Daniel SearaDaniel Seara

Page 2: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

La cadena de conexiónLa cadena de conexión

La mejor seguridad, es la seguridad La mejor seguridad, es la seguridad integradaintegrada

Disminuye la posibilidad de acceso no Disminuye la posibilidad de acceso no autorizadoautorizado

Facilita el manejo de permisos de accesoFacilita el manejo de permisos de acceso

No requiere mayor mantenimiento del No requiere mayor mantenimiento del lado de la baselado de la base

Un nuevo usuario sólo debe agregarse al Un nuevo usuario sólo debe agregarse al dominio y al grupo adecuado en un solo dominio y al grupo adecuado en un solo punto administrativopunto administrativo

Page 3: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

La cadena de Conexión (2)La cadena de Conexión (2)

Cuando no podemos acceder a la Cuando no podemos acceder a la seguridad del dominio, entonces seguridad del dominio, entonces usamos seguridad de SQL Serverusamos seguridad de SQL Server

Proveedores externos de sitiosProveedores externos de sitios

Requiere mayor cuidado en la Requiere mayor cuidado en la configuración de la cadena de configuración de la cadena de conexiónconexión

EncriptaciónEncriptación

Almacenamiento en ubicaciones no Almacenamiento en ubicaciones no comunescomunes

Page 4: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

Espacios de nombresEspacios de nombres

System.DataSystem.Data

System.Data.CommonSystem.Data.Common

System.Data.SqlClientSystem.Data.SqlClient

System.Data.OleDbSystem.Data.OleDb

……

Microsoft.SqlServer.ServerMicrosoft.SqlServer.Server

Page 5: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

System.DataSystem.Data

Fundamento de la infraestructura de Fundamento de la infraestructura de acceso a datosacceso a datos

Contiene clases de definición base de los Contiene clases de definición base de los objetos de datosobjetos de datos

DataColumnDataColumn

DataTypeDataType

DataRowDataRow

DataTableDataTable

DataSetDataSet

……

Page 6: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

System.Data.Common System.Data.Common

Clases base que determinan la Clases base que determinan la funcionalidad de otras clases en los funcionalidad de otras clases en los espacios de nombres específicosespacios de nombres específicos

DbDataAdapterDbDataAdapter

DbCommandDbCommand

DbConnectionDbConnection

DbDataReaderDbDataReader

……

Page 7: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

System.Data.SqlClientSystem.Data.SqlClient

Específica para acceder a bases de Específica para acceder a bases de datos SQL Server© datos SQL Server©

Optimizada en su comunicación con Optimizada en su comunicación con dicha basedicha base

Implementa formas específicas de los Implementa formas específicas de los mismos objetos existentes en Common mismos objetos existentes en Common por herenciapor herencia

SqlDataAdapterSqlDataAdapter

SqlCommandSqlCommand

SqlConnectionSqlConnection

……

Page 8: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

System.Data.OleDbSystem.Data.OleDb

Utiliza los proveedores OleDb para Utiliza los proveedores OleDb para acceder a cualquier base de datos acceder a cualquier base de datos compatible, heredando de Commoncompatible, heredando de Common

OleDbDataAdapterOleDbDataAdapter

OleDbCommandOleDbCommand

OleDbConnectionOleDbConnection

Page 9: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

Microsoft.SqlServer.SerMicrosoft.SqlServer.Serverver

Permite acceder a funcionalidad de Permite acceder a funcionalidad de SQL Server© que no es común a SQL Server© que no es común a otras bases de datosotras bases de datos

Incluye la funcionalidad de Incluye la funcionalidad de implementación de CLR dentro de SQL implementación de CLR dentro de SQL Server 2005Server 2005

SqlContextSqlContextEl contexto en el cual se está ejecutando un El contexto en el cual se está ejecutando un assembly dentro de un servidor SQL Serverassembly dentro de un servidor SQL Server

SqlPipeSqlPipeObjeto utilizado para hacer que un CLR PA retorne Objeto utilizado para hacer que un CLR PA retorne un conjunto de datosun conjunto de datos

Page 10: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

DataAdapterDataAdapter

Obteniendo datos (CLR)Obteniendo datos (CLR)ConnectionConnection CommandCommand DataReaderDataReader

GetByte(n)GetByte(n)GetString(n)GetString(n)GetInt32(n)GetInt32(n)

……

ConnectionConnection CommandCommand DataReaderDataReader

DataSetDataSet

Page 11: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

TableAdapterTableAdapter

ConnectionConnection CommandCommand DataReaderDataReader

DataTableDataTable

DataAdapterDataAdapter

ConnectionConnection CommandCommand DataReaderDataReader

DataSetDataSet

Obteniendo datos (CLR) Obteniendo datos (CLR) (2)(2)

ConnectionConnection CommandCommand DataReaderDataReader

GetByte(n)GetByte(n)GetString(n)GetString(n)GetInt32(n)GetInt32(n)

……

Page 12: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

Obteniendo Datos (SQL)Obteniendo Datos (SQL)

SELECT Id, EsInternacional, EsRegional, EsGenerico, EsINETAFROM Oradores

SELECT *FROM Oradores

Page 13: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

Obteniendo Datos (SQL)Obteniendo Datos (SQL)Sentencias SQLSentencias SQL

Excepto que sean muy similares con Excepto que sean muy similares con alguna anterior, requieren un análisis alguna anterior, requieren un análisis completo cada vez que se ejecutancompleto cada vez que se ejecutan

Si sólo varía el valor de los argumentos Si sólo varía el valor de los argumentos utilizados, SQL Server es capaz de mantener utilizados, SQL Server es capaz de mantener en caché las sentencias en caché las sentencias

Procedimientos AlmacenadosProcedimientos AlmacenadosSólo consumen el tiempo de la obtención Sólo consumen el tiempo de la obtención de datosde datosPermiten implementar mejores Permiten implementar mejores mecanismos de autorización de accesomecanismos de autorización de acceso

Page 14: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

DataAdapter DataAdapter

TableAdapter TableAdapter

Actualizando datos (CLR)Actualizando datos (CLR)ConnectionConnection CommandCommand

ExecuteNonQueryExecuteNonQuery

ConnectionConnection CommandACommandA

CommandECommandE

CommandICommandI

UpdateUpdate

Page 15: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

Actualizando datos (SQL)Actualizando datos (SQL)ActualizarActualizar

InsertarInsertar

EliminarEliminar

UPDATE OradoresSET Nombre = 'Nombre', Apellido = 'Apellido', EsInternacional = 1where Id=3

INSERT INTO Oradores(Nombre, Apellido, EsInternacional)VALUES (N'Nombre', N'Apellido', 1)where Id=3

DELETE FROM Oradores WHERE (Id = 3)

Page 16: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

Actualizando datos (SQL) Actualizando datos (SQL) (2)(2)Procedimientos AlmacenadosProcedimientos Almacenados

Más rápidosMás rápidos

Más segurosMás segurosCREATE/ALTER Procedure [Oradores_Update]@Id int = null, @Nombre nvarchar(100) = null, @Apellido nvarchar(100) = null, @EsInternacional bit = null, @EsRegional bit = null, @Descripcion varchar(8000) = null, @UrlFoto nvarchar(100) = null, @EsGenerico bit = null, @EsINETA bit = null, @Passport nvarchar(200) = null, @EsAcademico bit = nulllAS Update [Oradores]SET

[Id]=@Id, [Nombre]=@Nombre, [Apellido]=@Apellido, [EsInternacional]=@EsInternacional, [EsRegional]=@EsRegional,[Descripcion]=@Descripcion, [UrlFoto]=@UrlFoto, [EsGenerico]=@EsGenerico, [EsINETA]=@EsINETA, [Passport]=@Passport, [EsAcademico]=@EsAcademico

where Id=@Id

Page 17: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

Utilizando procedimientos Utilizando procedimientos almacenadosalmacenados

Ejecutar cualquier sentencia SQL Ejecutar cualquier sentencia SQL significasignifica

Control de sintaxisControl de sintaxis

Control de validez de los objetos Control de validez de los objetos implicadosimplicados

CompilaciónCompilación

Cálculo del plan de ejecución (Query Cálculo del plan de ejecución (Query Plan)Plan)

Ejecución y obtención de resultadosEjecución y obtención de resultados

Ejecutar cualquier procedimiento Ejecutar cualquier procedimiento almacenado significaalmacenado significa

Ejecución y obtención de resultadosEjecución y obtención de resultados

(el resto se realiza al guardar el PA en la (el resto se realiza al guardar el PA en la base de datos)base de datos)

Page 18: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

Utilizando procedimientos almacenados Utilizando procedimientos almacenados (2)(2)

Los PA no son el mejor lugar para Los PA no son el mejor lugar para implementar lógica de negociosimplementar lógica de negocios

… … pero manipular grandes volúmenes pero manipular grandes volúmenes suele ser mejor dentro de la misma basesuele ser mejor dentro de la misma base

Cursores y tablas transitoriasCursores y tablas transitoriasArmas de doble filoArmas de doble filo

Consumen mucho proceso por implicar a la Consumen mucho proceso por implicar a la base tempdbbase tempdb

No se optimizan adecuadamente en su No se optimizan adecuadamente en su ejecución, ya que se debe recalcular el Query ejecución, ya que se debe recalcular el Query Plan sobre ellas según se agregan datosPlan sobre ellas según se agregan datos

Page 19: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

Asegurando la base de Asegurando la base de datosdatosNUNCA usar saNUNCA usar sa

Cuidar los datosCuidar los datosPermitir acceso a las tablas significa Permitir acceso a las tablas significa provocar un punto de desastreprovocar un punto de desastre

Si se necesita autorizar el acceso directo Si se necesita autorizar el acceso directo a las tablas, considerar utilizar Vistasa las tablas, considerar utilizar Vistas

En la medida de lo posible, denegar el En la medida de lo posible, denegar el acceso a las tablas, y permitir la acceso a las tablas, y permitir la ejecución de procedimientos ejecución de procedimientos almacenadosalmacenados

Page 20: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

Asegurando la base de datos Asegurando la base de datos (2)(2)

Page 21: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

Asegurando la base de datos Asegurando la base de datos (3)(3)

Page 22: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

Asegurando la base de datos Asegurando la base de datos (4)(4)

Page 23: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

Buenas PrácticasBuenas PrácticasLas consultas deben ser específicas Las consultas deben ser específicas en cuanto a las columnas que deben en cuanto a las columnas que deben devolverdevolver

Select * from tabla Select * from tabla

Un error común: denominar los Un error común: denominar los procedimientos almacenados procedimientos almacenados comenzando con comenzando con sp_sp_

Sp_ significa “system procedure” no Sp_ significa “system procedure” no “Store procedure”“Store procedure”

Page 24: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

Capa de acceso a datosCapa de acceso a datosEncapsular la funcionalidad en un Encapsular la funcionalidad en un componente comúncomponente común

ReusableReusable

No vinculado a una base o aplicación en No vinculado a una base o aplicación en particularparticular

Definir en el mismo las Definir en el mismo las funcionalidades esenciales funcionalidades esenciales parametrizadasparametrizadas

Esto conlleva consumir más recursos de Esto conlleva consumir más recursos de conexión a la baseconexión a la base

Implementar caché de accionesImplementar caché de acciones

Page 25: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

Capa de acceso a datos Capa de acceso a datos (2)(2)DataServerClass

Properties

ComandoNombreConexionTransaccion

Methods

AbortarTransaccionEjecutarFinalizeIniciarTransaccionLlenar (+ 1 overload)New (+ 1 overload)PrepararComandoTerminarTransaccionTraerValores

Page 26: Acceso a Datos avanzado Daniel Seara. La cadena de conexión La mejor seguridad, es la seguridad integrada Disminuye la posibilidad de acceso no autorizado.

Otras ReferenciasOtras ReferenciasArquitecturaArquitectura

http://www.microsoft.com/spanish/http://www.microsoft.com/spanish/msdn/arquitectura/default.asp msdn/arquitectura/default.asp

Data Access Application Block Data Access Application Block http://msdn.microsoft.com/practices/http://msdn.microsoft.com/practices/guidetype/appblocks/default.aspx?pull=/guidetype/appblocks/default.aspx?pull=/library/en-us/dnpag2/html/daab.asplibrary/en-us/dnpag2/html/daab.asp

Community Enterpirse LibraryCommunity Enterpirse Libraryhttp://www.gotdotnet.com/codegallery/http://www.gotdotnet.com/codegallery/codegallery.aspx?id=295a464a-6072-4e25-codegallery.aspx?id=295a464a-6072-4e25-94e2-91be6352732794e2-91be63527327