viernes, 30 de diciembre de 2016

Cambio de contraseña a inicio de sesion en SQL Server

Cambiar contraseña a inicio de sesión en SQL Server

        sp_password

Se utiliza para cambiar la contraseña a un inicio de sesión.

sp_password 'Contraseña Actual', 'Nueva Contraseña', 'Inicio de Sesión'

Ejemplo : Cambiar el password al inicio de sesión rhuarcaya


sp_password '123$2016', '2017$123', 'rhuarcaya'

Modificar tamaño de de base de datos en SQL Server

Para modificar el tamaño de una base de datos utilizamos Alter Database. Se tiene una BD con el nombre Tienda y se desea aumentar a 200 MB.

Alter Database Tienda

Modify file (Name='Tienda_datos', size=200 MB)

Tipos de archivos de Microsoft SQL Server

Una base de datos de SQL Server permite tres siguientes tipos de archivos: 
  • Archivos de datos primarios: Realiza el seguimiento de todos los demás archivos. Por  convenio su extensión es MDF.
  • Archivos de datos secundarios: Una base de datos puede tener cero o varios archivos de datos secundarios. Por  convenio su extensión NDF
  • Archivos de registro(LOG): Contiene información necesaria para recuperar todas las transacciones realizadas en la misma. Por convenio su extensión es LDF.  

Bases de datos de Microsoft SQL Server

Las bases de datos del servidor SQL Server son:

a.    Master.
Es la base de datos principal, contiene información de todos los objetos de la bases de datos, logins, espejo de bases de datos, configuraciones,  etc.
Realiza un seguimiento de todas las bases de datos, controla las asignaciones de archivos, los parámetros de configuración que afectan al sistema y las cuentas de inicio de sesión
b.    Model.
Funciona como modelo para todas las bases de datos que se crean en una instancia de SQL Server. Es utilizada como una plantilla para cada vez que creamos nuevas base de datos.
c.    Tempdb.
Almacena objetos temporales creados por procesos internos, por usuarios o aplicaciones (tablas, procedimientos almacenados, variables de tablas, cursores).
d.    Msdb.

Almacena principalmente la metadata de todas las tareas que programamos mediante SQL Server Agent. Guarda información respecto a tareas de automatización, como son las copias de seguridad y tareas de duplicación, etc.

lunes, 28 de noviembre de 2016

Comprimir tabla en SQL Server

Se crea una la tabla Documento y luego se le comprimeesto se utiliza en una tabla de alto movimiento de registros. 

Create table Documento
(cod_doc char(2) not null Primary key,
nom_doc varchar(30) not null,
cod_Sunat char(2) not null,
tipo_doc char(1) not null,
est_doc char(1) not null Default 'A')

Comprimir la tabla Documento, usando compresión page, 

Alter Table Documento
Rebuild With (Data_Compression = Page);

Go

domingo, 27 de noviembre de 2016

Creación de una tabla con una columna XML

Creación de una tabla con una columna XML.

USE Tienda
Go

Create Table Proyectos_XML (
Id_Proyecto Int not Null,
Det_Proyecto XML not Null, 
Constraint pk_proy  Primary Key (Id_Proyecto ))

 -- Ingreso de datos a la tabla Proyecto_XML.

Insert Into Proyectos_XML Values
(1'<Proyecto-2017>
<Registro>
<jefe>Remigio Huarcaya</jefe>
<area>Gerencia</area>
<inversion>25500</inversión>
</Registro>

<Registro>
<jefe>Alberto Troncos</jefe>
<area>Administración</area>
<inversión>30200</inversión>
</Registro>

</Proyecto-2017>'),

(2'<Proyecto-2017>
<Registro>
<jefe>María Troncos</jefe>
<area>Arquitectura</area>
<inversión>49500</inversión>
</Registro>

<Registro>
<jefe>Fabiola Guillen</jefe>
<area>Desarrollo de Producto</area>
<inversión>79300</inversión>
</Registro>


</Proyecto-2017>')


-- Seleccionar los registros con xml de la tabla Proyecto_XML
Select * From Proyectos_XML For Xml Raw

Crear una función en SQL Server

Se crea una función que devuelva un número de autogenerado del campo principal de una tabla.
Create table Area
(cod_area char(2) not null,
nom_area varchar(30) not null,
est_area char(1) not null,
Constraint pk_area Primary key (cod_area))
go

-- Ingresamos registros
Insert into Area values ('01','Gerencia','A'),
                                     ('02','Contabilidad','A'),
                                     ('03','Finanzas','A')
go

-- Creación de la función
Create function funcod()
returns char(2)
Begin
Declare @codactual char(2),@codautogenerado char(2)
set @codactual =(select max(cod_area) from Area)
set @codautogenerado=  right('0' + ltrim(str (@codactual + 1)),2)
return (@codautogenerado)
End

-- Prueba de la función

Select Tienda.dbo.funcod()

Adjuntar base de datos en Servidor SQL Server

Adjunta una base de datos al servidor, los archivos de la base de datos (mdf y ldf) se encuentran en la carpeta DemoBK.

EXEC sp_attach_db @dbname = N'Tienda',
   @filename1 = N'c:\DemoBK\Tienda_data.mdf',
             @filename2 = N'c:\DemoBK\Tienda_log.ldf'

Separa base de datos del Servidor SQL Server

Separa una base de datos del servidor SQL Server.

EXEC sp_detach_db 'Tienda', 'true'

sábado, 19 de noviembre de 2016

Creación de trigger en Microsoft SQL Server

Un trigger es un desencadenador que se ejecuta automáticamente cuando se produce un evento sobre una tabla. Se ejecutan cuando un usuario intenta modificar datos mediante un evento de lenguaje de manipulación de datos (DML).
Los eventos DML son instrucciones Insert, Update o Delete que se aplican a una tabla o vista. 


Ejemplo 1: Crear un trigger que no permita ingresar un precio negativo en la tabla Producto.

Create trigger TR_Inserta_Pro
            On Producto FOR Insert
As
-- La tabla (temporal) inserted contiene los datos que se van a ingresar
If (select pre_pro from inserted)<0
Begin
            Print 'Precio Negativo'
            Rollback --Anula la transacción Insert
End

Ejemplo 2: Crear un trigger que inserte un registro en la tabla auditoría en el caso que se cambie el valor del precio de un Producto.

Create table auditoria
(id_auditoria int identity(1,1) not null primary key,
fecha_auditoria date not null, 
id_pro int not null,
pre_nuevo decimal(7,2) not null,
usuario varchar(20) not null)
-- Creación de trigger TR_Actualiza_Pro.
Create trigger TR_Actualiza_Pro
                      On Producto FOR Update
As
Declare @id int
Declare @nuevopre decimal(7,2)
Select @nuevopre=pre_pro from Inserted
Insert into auditoria values (CONVERT (date, GETDATE()),5,@nuevopre, user)
--Probamos el trigger, modificamos el precio de un producto.

Update Producto set pre_pro =1.5 where id_pro=5

Minería de Datos

Minería de datos es el proceso de descubrir conocimiento en grandes volúmenes  de datos como en los DataWarehouse, para ello utiliza métodos matemáticos para encontrar tendencias y reglas en los datos almacenado.

Según Turban (2007), indican que las herramientas más usadas en Data Mining son:
  • Métodos estadísticos, 
  • Árboles de decisión,
  • Razonamiento en base a casos,
  • Redes neuronales,
  • Algoritmos genéticos.

Propiedad Identity en tabla de Microsoft SQL Server

Propiedad IDENTITY

En una tabla solo se permite una sola columna con la propiedad IDENTITY, se puede usar propiedad solo si la columna es de tipo Entero, se le utiliza mayormente en la clave principal.

IDENTITY [(inicialización, incremento)]

Inicialización:
Valor inicial de la columna.

Incremento:
Es el incremento de columna entre registros. Puede ser positivo o negativo.

Ejemplo :

Se considera id_dis es la clave principal y campo autonumérico de la tabla Distrito.

Create table Distrito
(id_dis int not null primary key identity(1,1), -- Inicia en 1 e incrementa en 1, es un campo autonumérico
nom_dis varchar(20) not null,
codPostal char(2) not null)
go

jueves, 17 de noviembre de 2016

Programación Orientada a objetos en C# - Control de usuario

Se tiene una aplicación SysDemo en 3 capas. En el cual se crea una carpeta CUsuario y se agrega un control de usuario cboDistrito y luego se agrega un objeto combobox.



En el Control de usuario, se ingresa el siguiente código.

public int xid;
public string Cnx = "Data Source=(local);Initial Catalog=SysMedic;Integrated Security=True;user id=sa; pwd=123";

        private void CboDistrito_Load(object sender, EventArgs e)
        {
            SqlConnection cn = new SqlConnection();
            cn.ConnectionString = Cnx;
            llenarDis();
        }

        public void llenarDis()
        {
            comboBox1.ValueMember = "id_dis";
            comboBox1.DisplayMember = "nom_dis";
            comboBox1.DataSource = CapaNegocio.CNMedico.MostrarReg("distrito");
        }

        public int iddis
        {
            get
            {
                return xid;
            }
         
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                xid = Convert.ToInt32(comboBox1.SelectedValue.ToString());
            }
            catch { }
        }

En la Capa Negocio de la aplicación.

public class CNMedico
    {
         public static DataTable MostrarReg(string xreg)
        {
            CDMedico obj = new CDMedico();
            return obj.MostrarReg(xreg);
        }

    }

En la Capa Data de  la aplicación

 public class CDMedico
    {
        public DataTable MostrarReg(string xreg)
        {
            DataTable DtResultado = new DataTable();
            SqlConnection SqlCon = new SqlConnection();
            try
            {
                SqlCon.ConnectionString = ClsConexion.Cnx;
                SqlCon.Open();

                SqlCommand SqlCmd = new SqlCommand();
                SqlCmd.Connection = SqlCon;
                SqlCmd.CommandText = "usp_ListaReg";
                SqlCmd.CommandType = CommandType.StoredProcedure;
                SqlParameter par1 = new SqlParameter();
                par1.ParameterName = "@tabla";
                par1.Value = xreg;
                SqlCmd.Parameters.Add(par1);
                SqlDataAdapter Da = new SqlDataAdapter(SqlCmd);
                Da.Fill(DtResultado);

            }
            catch (Exception ex)
            {

            }
            return DtResultado;

        }

El procedimiento almacenado en la base de datos SysMedic

Create Proc usp_ListaReg @tabla varchar(20)
as
Declare @sql varchar(50)
Set @sql ='Select * From ' + @tabla +' order by 2'
Exec (@sql)

Creación de tablas en SQL Server

------------------------------------------------
-- Base de datos : Tienda
-- Tema               : Creación de tablas
------------------------------------------------
Use tienda
go

Create table distrito
(id_dis int not null Constraint pk_dis primary key identity(1,1),
nom_dis varchar(20) not null,
codPostal char(2) not null)
go

-- Muestra la estructura de la tabla
-- sp_help es un procedimiento almacenado
sp_help distrito
go

--Lista las tablas de la base de datos Tienda
-- sysobjects es una tabla de sistema
Select * from sysobjects where type='U'
go
-- U -> User table


lunes, 14 de noviembre de 2016

Creación de procedimiento almacenado en Oracle

Para el ingreso de datos la tabla distritos de la base de datos Tienda (Oracle), se construye un procedimiento almacenado.

Create or replace Procedure usp_IngDis (nom varchar2,
                                                                  cod char)
Is
Begin
  Insert into Distrito (nom_dis, codPostal) values (nom, cod);
 Commit;
End;

Probar el procedimiento almacenado en sqldeveloper:

call usp_IngDis 'Villa María del Triunfo', '35';

También podemos organizar los procedimientos almacenados en paquetes asociados a la tabla distrito. Un paquete general y un paquete Body (Describe los procedimientos).

Create or replace Package pk_distrito
Is

    Procedure usp_IngDis (nom varchar2,
                                           cod char);
End pk_distrito;


Create or replace Package Body pk_distrito
Is
    Create or Replace Procedure usp_IngDis (nom varchar2,
                                                                        cod char)
    Is
    Begin
      Insert into Distrito (nom_dis, codPostal) values (nom, cod);
     Commit;
    End;

End pk_distrito;

Programación java con oracle - Estructura de proyecto Java

Crear un proyecto en Java Application (usando el IDE Netbeans) con el nombre SysTiendaSoft, luego 3 Package (CapaData, CapaEntidad, CapaNegocio o CapaLogica)

  • En la carpeta Bibliotecas, adicionar el archivo ojdbc7.jar.
  • Crear un JFrame Form en carpeta systiendasoft, con el nombre de FrmDistrito.

  • Crear la Java Class en el paquete CapaData.
package CapaData;

import java.sql.Connection;
import java.sql.DriverManager;
import javax.swing.JOptionPane;

public class ConectarDB {
    private Connection conexion;
    
    public Connection getConexion() {
        return conexion;
    }
    public void setConexion(Connection conexion) {
        this.conexion = conexion;
    } 
    public ConectarDB conectar() {

        try {

            Class.forName("oracle.jdbc.OracleDriver");
            String BaseDeDatos = "jdbc:oracle:thin:@localhost:1521:XE";

            conexion = DriverManager.getConnection(BaseDeDatos, "TIENDA","1234");

            if (conexion != null) {
                System.out.println("Conexión correcta !!");
            } else {
                System.out.println("Conexión errada !!");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }        
        return this;
    }

}

  • En el paquete CapaNegocio, crear un Java Class, con el nombre de Distrito.

package CapaNegocio;

import CapaData.ConectarDB;
import java.sql.CallableStatement;

public class Distrito {

     public void IngresaDis (CapaEntidad.Distrito oDis){

        //Conexión con la BD Tienda
        ConectarDB obj = new ConectarDB();       
        obj.conectar();        
        try{
            CallableStatement sentencia = obj.getConexion().prepareCall("{call usp_IngDis(?,?)}");            
            sentencia.setString(1,oDis.getNomDis());
            sentencia.setString(2,oDis.getCodPostal());            
            
            sentencia.executeUpdate();
            
        }catch (Exception e){
            System.out.print(e.getMessage());
        }
    }
}

  • En el botón Grabar del Jframe Distrito, ingrese el siguiente código.
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
               
        try {
            
            CapaEntidad.Distrito reg = new CapaEntidad.Distrito();        
            reg.setNomDis(txtNom.getText());
            reg.setCodPostal(txtCod.getText());
            
            CapaNegocio.Distrito objDistrito = new CapaNegocio.Distrito();
            objDistrito.IngresaDis(reg);
                        
        } catch (Exception ex) {
        ex.printStackTrace();
        }        
        
    }  

Remigio Huarcaya Almeyda


Enlace para iniciar Oracle Express

Puede iniciar Oracle Express con el siguiente link, considerando el ip 127.0.0.1, puerto 8080

        http://127.0.0.1:8080/apex/f?p=4950

Remigio Huarcaya Almeyda

viernes, 11 de noviembre de 2016

Creación de tablas en Oracle

A continuación se crea la tabla cliente, zona y vendedor y secuencia para las claves principales con sus triggers respectivos para el incremento automático de la clave principal.

Create table Distrito
(id_dis number not null Primary key,
nom_dis varchar2(25) not null,
codPostal char(2) not null);

Create table Vendedor
(id_ven number not null Primary key,
nom_ven varchar2(25) not null,
ape_ven varchar2(25) not null,
dni_ven char(8) not null,
id_dis number not null,
Constraint fk_vendis Foreign key (id_dis) references distrito (id_dis));

Create sequence sq_iddis;

Create or replace Trigger Tr_dis before Insert on distrito
for each row
begin
  select sq_iddis.NextVal Into :new.id_dis from dual;
end;

Create sequence sq_idven;

Create or replace Trigger Tr_ven before Insert on vendedor
for each row
begin
  select sq_idven.NextVal Into :new.id_ven from dual;
end;

/*Ingresamos datos*/
Insert into distrito (nom_dis, codpostal) values ('Comas','30');
Insert into distrito (nom_dis, codpostal) values ('Los Olivos','01');
Insert into distrito (nom_dis, codpostal) values ('Rimac','02');

Insert into vendedor (nom_ven, ape_ven, dni_ven,id_dis) values ('Alberto','Huarcaya','78965423',3);
Insert into vendedor (nom_ven, ape_ven, dni_ven,id_dis) values ('Nicolas','Almeida','32165896',1);
commit;

Remigio Huarcaya Almeyda

jueves, 10 de noviembre de 2016

Conexión con base de datos Oracle

Para realizar una conexión a una base de datos Oracle, utilizaremos el software sqldeveloper.

  • Haga doble clic en el programa sqldeveloper.

  • Haga clic derecho sobre Conexiones y seleccione Nueva Conexión.

  • Ingrese datos generales de la conexión que se indican y luego pulse Probar y Conectar.

  • Listar las tablas de la base datos Tienda, que se crean por defecto, con la siguiente instrucción.

  • Ya puede crear las tablas en la base de datos Tienda.
Remigio Huarcaya Almeyda