089

089

jueves, 10 de diciembre de 2015

Comandos-Sql-Server



COMANDOS PARA BASES DE DATOS SQL - SERVER 

Eliminar todas las tablas de la base de datos:

EXEC sp_MSforeachtable 'TRUNCATE TABLE ?'

Eliminar todos los datos de las tablas:

EXEC sp_MSForEachTable "DELETE FROM ?"

Deshabilitar todos los constraints de todas las tablas:

EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

Habilitar todos los constraints de todas las tablas:

EXEC sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"


Inhabilitar todos los triggers de todas las tablas:
EXEC sp_msforeachtable "ALTER TABLE ? DISABLE TRIGGER all"

Habilitar todos los triggers de todas las tablas:

EXEC sp_msforeachtable "ALTER TABLE ? ENABLE TRIGGER all"
Obtener toda la información de las columnas de una tabla

Select * from INFORMATION_SCHEMA.COLUMNS  where table_name='nombre de la tabla'

Obtener una lista de todos los procedimientos almacenados modificados en los últimos N días.

SELECT name

FROM sys.objects

WHERE type ='P'

AND DATEDIFF(D,modify_date,GETDATE())< N


Nota: reemplazar N con un número.

Obtener una lista de todos los procedimientos almacenados creados en los últimos N días.

SELECT name

FROM sys.objects

WHEREtype ='P'

AND DATEDIFF(D,create_date,GETDATE())< N


2- Ahora veremos como encriptar una dato ya sea por ejemplo  una contraseña en este caso
-- Creamos nuestra tabla: 
create table usuario
(
 nombre varchar(100),
 apellidos varchar(100),
 email varchar(100),
 contrasena  varbinary(8000),
 fecha datetime

)
2.1 Creamos una funcion para la encripctacion, hacemos uso de la Funcion  ENCRYPTBYPASSPHRASE ( )

create function fnColocaClave(@clave varchar(25))
returns varbinary(800)
as 
begin
declare @pass as varbinary(8000)
-- dbcurso es la llave que se usara para cifrar el campo y es la misma que se usa para descifrar
set  @pass=ENCRYPTBYPASSPHRASE('dbcurso',@clave)
return @pass
end 


2.2 insertamos un registro y usamos la funcion anterior
insert into dbo.usuario (nombre,apellidos,email,contrasena,fecha)

values ('cristhian','macalupu sandoval','cristhian_tony@hotmail.com',dbo.fnColocaClave('informatica'),GETDATE())

ejecutamos la consulta y veran que se inserto el registro y el campo contraseña se muestra encriptado

de la siguiente forma: 0x010000006E166E5D181D6A86D1FFC1FF818212ECB1768C9FE418542E3ECB6A64DD543D44

2.3 Luego para ver el campo contraseña desencriptado en una consulta select, creamos una nueva funcion que utilizara la funcion de sql-server  DECRYPTBYPASSPHRASE( )

create function leeClave ( @clave varbinary(8000) )
returns varchar(25)
as
begin
declare @pass as varchar(25)
set @pass = DECRYPTBYPASSPHRASE('dbcurso',@clave)  -- se usa la misma llave
return @pass
end

luego Consultamos como es de costumbre : 

SELECT nombre, apellidos, email, dbo.leeClave(contrasena) as password

FROM dbo.usuario

y el resultado el registro pero con el campo contraseña desencriptado mostrando
contrseña: informatica












martes, 8 de diciembre de 2015

Cursores en Sql-Server

Para esta demostracion se usa la base de datos Nortwink.

Un cursor  es una estructua que se cargar a memoria RAM con el resultado de una consulta permitiendolo recorrer fila por fila,pudiendo realizar operaciones en ellas

-- el nombre del cursor es cursor1

Ahora para mostrar otro producto solo es necesario navegar o avanzar en la estructura ya cargada
ejecutamos  o presionamos F5 y cargara el siguiente producto

Cargamos otro Producto presione F5 

--Ahora, una vez terminado el cursor es necesario cerrarlo y liberarlo de la memoria porque ya no lo ---utilizamos  lo cual es mediante el comando:
close  [nombre del cursor]
-- y lo eliminamos con
deallocate [nombre del cursor]

-- Podemos Recorrer toda estructura haciendo uso de a sentencia While


Ahora  Para trabajar con variables primero se declaran las variables como se muestra el resto del proceso es similar