Mostrando entradas con la etiqueta Conceptos Aprendidos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Conceptos Aprendidos. Mostrar todas las entradas

viernes, 27 de septiembre de 2013

INVESTIGACION: Select de varias tablas

La instrucción select recupera filas de la base de datos y habilita la selección de una o varias filas o columnas de una o varias tablas. El poder y complejidad que tiene esta instrucción es de gran alcance, conocer todas las facilidades y clausulas que puede tener un insert nos facilitara la tarea a la hora de consultar datos o extraer datos de una base de datos.

En esta ocasión mostramos como usar un select para crear una tabla o una consulta, con la información de varias tablas. 


Como se puede observar estamos haciendo una consulta, donde queremos crear una tabla compuesta por información de otras tres tablas, donde cada tabla le ponemos un prefijo para ahorrarnos escribir mas, y comparamos elementos de las tablas, para tener lo que queremos.

Hay operadores como union, intersect y except entre otros que son importantes, y que en un futuro los aprenderemos.

INVESTIGACION: Reiniciando los datos en una base de datos

Muchas veces queremos reiniciar o volver los datos desde 0 en una base de datos, sin embargo muchas veces solo eliminamos los datos, y no reiniciamos la llave primaria, o bien en caso contrario reiniciamos la llave primaria pero no borramos los datos de la base datos, lo cual nos puede afectar nuestro trabajo ya que se crearía llaves repetidas.
Para volver una base de datos desde 0 se debe ejecutar los siguientes comandos:
   delete * from tabla
   DBCC CHECKIDENT (tabla, RESEED, 0) 

Mostramos un ejemplo, se tiene la tabla persona con los siguientes datos:


Se borran todos los datos de la tabla


Se reinicia llave primaria


A la hora de insertar un nuevo elemento podemos ver que el ID ha comenzado otra vez desde el número 1.



INVESTIGACION: Comparar Fechas SQL Server

Para el manejo y la comparación de fechas, SQL ofrece herramientas muy practicas, que cuando estamos usando una variable de tipo date debemos saber. A continuación veremos varios aspectos de las fechas en SQL:

  • Se ingresan en comillas simples
  • Se puede ingresa - , y . como separadores
  • La fecha actual del servidor se puede obtener con el comando getdate()
  • Los operadores relacionales se pueden utilizar en las fechas.
Por ejemplo se puede comprar fecha1 < fecha2, y de igual manera para los demás operadores relacionales.


  • Existe el comando YEAR(fecha) que retorna el año de una fecha
  • De igual forma existe el comando MONTH
  • Existe una función que retorna el numero de semana: DATEPART
Por ejemplo:
            MONTH(getdate()) obtiene el mes de la fecha actual
            DATEPART(week,V.Fecha)  obtiene el número de semana de la fecha


miércoles, 25 de septiembre de 2013

INVESTIGACION: Analisis Tipos de Conexion

Para poder conectarse a una base de datos, existen dos grandes modos de poder hacerlo, en cada uno presentamos sus ventajas como desventajas y un ejemplo de como se haria en C#.

Modo de Autentificación de Windows o Seguridad Integrada
Usa el protocolo de seguridad de Kerberos, proporciona la aplicación de directivas de contraseñas en cuanto a la validación de la complejidad de las contraseñas seguras, ofrece compatibilidad para el bloqueo de cuentas y admite la caducidad de las contraseñas. Usa una serie de mensajes cifrados para autenticar usuarios en SQL Server.
Ejemplo:
Data Source = ServidorSQL; Initial Catalog = BaseDatos; Integrated Security = True

Mode de Autentificacion de SQL Server – Conexión con credenciales explicitas
Ocupa un usuario y una contraseña, las cadenas de conexión de se pueden guardar ya sea en el archivo Web.config y en el catálogo COM+ Admin.
Ejemplo:
data source = ServidorSQL; initial catalog = BaseDatos; 
user id = Usuario; password = Contraseña

Desventajas:
Tener que proporcionar las credenciales de SQL Server cada vez que se conectan a la base de datos puede resultar molesto.
La autenticación de SQL Server no puede utilizar el protocolo de seguridad de Kerberos.
Los nombres y contraseñas de SQL Server se pasan a través de la red, lo que hace de este un método menos seguro.

Ventajas:
Permite a los usuarios conectarse desde dominios desconocidos o que no son de confianza
Permite que SQL Server admita entornos con sistemas operativos mixtos
Permite a SQL Server admitir las aplicaciones anteriores y las que proporcionan terceros y requieren la autenticación de SQL Server.

Autenticación de SQL Server por medio de SOAP : Es un modo de autenticación del pasado, que ya no es utilizado debido a las ineficiencias de seguridad que han sido encontradas

Referencias
http://msdn.microsoft.com/es-es/library/aa289855(v=vs.71).aspx
http://technet.microsoft.com/es-es/library/ms144284.aspx
http://msdn.microsoft.com/es-es/library/aa984237(v=vs.71).aspx

martes, 24 de septiembre de 2013

INVESTIGACION: Bloque Try / Catch SQL Server

Los errores de código en el SQL Server pueden tratarse de forma similar a lenguajes como C# o C++. Constan del bloque try y del bloque catch, donde el bloque catch controla la excepción que se puede producir en el bloque try. Deben de ir primero el bloque try, seguido inmediatamente del bloque catch.

El SQL Server presenta varios tipos de errores, que los mostramos a continuacin:
  • ERROR_NUMBER() devuelve el número de error.
  • ERROR_MESSAGE() devuelve el texto completo del mensaje de error. El texto incluye los valores suministrados para los parámetros sustituibles, como longitudes, nombres de objeto u horas.
  • ERROR_SEVERITY() devuelve la gravedad del error.
  • ERROR_STATE() devuelve el número de estado del error.
  • ERROR_LINE() devuelve el número de línea dentro de la rutina en que se produjo el error.
  • ERROR_PROCEDURE() devuelve el nombre del procedimiento almacenado o desencadenador en que se produjo el error.

    Algo que cabe mencionar son las dos situaciones donde el bloque try/catch no los puede controlar como lo son:
    - Errores de Compilación
    - Errores que se producen durante la recompilación de instrucciones

    Instrucción rollback : Revierte una transacción explícita o implícita hasta el inicio de la transacción o hasta un punto de retorno dentro de la transacción y de igual manera libera los recursos que mantiene la transacción. 

    Instrucción commit: Hace que todas las modificaciones efectuadas sobre los datos desde el inicio de la transacción sean parte permanente de la base de datos, libera los recursos mantenidos por la transacción

    En el siguiente ejemplo se muestra el machote que seguimos en cada uno de nuestros procedimientos, para hacer uso de un manejo efectivo de errores y excepciones.

    create procedure insertarHistoricoDocumento
    @Documento int,
    @Administrador int,
    @Descripcion varchar (50),
    @Contenido text
    as
    begin
    begin try
    begin transaction
    insert                               HistoricoModDocumento(FKDocumento,FKAdministrador,DescripcionCambio,Contenido)
    values(@Documento,@Administrador,@Descripcion,@Contenido)
    commit transaction
    end try
    begin catch
    select ERROR_NUMBER() as ErrorNumber;
    return -1;
    rollback transaction
    end catch
    end


    Para mas información se puede consultar los siguientes enlaces :
    http://technet.microsoft.com/es-es/library/ms179296(v=sql.105).aspx
    http://technet.microsoft.com/es-es/library/ms181299.aspx

    Cristian Araya
    David Vargas

    Horas Invertidas: 2 horas

martes, 17 de septiembre de 2013

Conceptos Aprendidos: Seguridad

Para realizar una aplicación y una base de datos con una seguridad estable, se recomiendan las siguientes cosas:
- Conexion a la base de datos desde otro lenguaje de programación: Se debe encriptar la cadena de conexión, para que estos no sean visibles desde el código y por tanto que nadie ajeno a los desarrolladores los pueda ver. En resumen estar en la capa de acceso a datos y no debe estar en la capa lógica.

-Usar try/catch en las operaciones de store procedure: Se recomienda encerrar las operaciones de un store procedure, en un try/catch para evitar errores.

-Verificar parámetros en los store procedure: Se debe verificar que los parámetros sean correctos a la hora de entrada, como por ejemplo que no sean nulos.

-Llamar store procedure desde otros lenguajes: Cuando se llama un store procedure desde otros lenguajes, se debe de hacer esta llamana desde un bloque try/catch para prevenir errores y liberar recursos. En nuestro caso el C# también permite hacerlo con la instrucción using.

-Parámetros privados: Hay ciertos parámetros que se recomiendan encriptar, como es el caso de las contraseñas, que requieren una seguridad mayor.

-Para encriptar parámetros se pueden usar algoritmos y tecnicas que ya han sido investigadas antes, como por ejemplo usar el Algoritmo de Hash Seguro (SHA). Sin embargo como sabemos toda encriptacion requiere mas espacio y memoria, por lo cual las operaciones se realizaran más lentas y tendran una complejidad mayor.

viernes, 30 de agosto de 2013

Conceptos Aprendidos: C#

Using : Se usa para liberar obligatoriamente recursos de memoria al finalizar un bloque de código. Para el uso de bases de datos reemplaza el try catch.

Conceptos Aprendidos: Bases de Datos

Primary key: Define la clave principal de la tabla

Llave Foránea o externa:  Es una clave que se encuentra en una tabla para hacer referencia a otra tabla

Store procedure: Serie de secuencias almacenado en una base de datos  
Ventajas:
- Compilación : Una vez compilado, se sigue usando esa compilación, hasta ser modificado o haya una nueva conexión

- Automatización: Conjunto de instrucciones y ejecutarlas en orden

- Administración: Se pueden editar, eliminar fácilmente

- Seguridad:Cambios de código sin necesidad de afectar la aplicación, usuarios solo pueden usar funciones de acuerdo a sus privilegios

- Programibilidad
- Tráfico de una red: minimizar el tráfico en la red, ejecuta el nombre del store procedure y no una linea.
Para realizar un store procedure seguro, se recomienda validar los parámetros y realizar la operación en un try/catch.


Instrucción rollback : Revierte una transacción explícita o implícita hasta el inicio de la transacción o hasta un punto de retorno dentro de la transacción y de igual manera libera los recursos que mantiene la transacción. 


Instrucción commit: Hace que todas las modificaciones efectuadas sobre los datos desde el inicio de la transacción sean parte permanente de la base de datos, libera los recursos mantenidos por la transacción