Tablas Virtuales o En Memoria

Algunas Veces necesitamos disponer de ciertas tablas temporales en nuestros sistemas, particularmente yo trato de no utilizarlas, lo que mayormente utilizo con las Tablas Virtuales o En Memoria que puedo crear en SQL Server.

En este articulo creare una tabla virtual llamada EMPLEADOS la cual tendra 3 campos principales IDEMPLEADO, NOMBRECOMPLETO, IDSUPERVISOR, en estos campos almacenare datos que extraere de un select para luego insertarlos en la tabla virtual de empleados y posteriormente consultarlos.

Aqui les dejo una Muestra de esto...



Estas Tablas no hay que eliminarlas de memoria luego de utilizarlas, ya que se eliminan automaticamente, luego de ser utilizada!....

Aqui el Codigo Utilizado de Ejemplo:


DECLARE @Empleados TABLE (IDEmpleado INT PRIMARY KEY, NombreCompleto VARCHAR(100), IDSupervisor INT)


INSERT INTO @Empleados
SELECT 1, 'Omar', 3
UNION ALL
SELECT 2, 'Mayreni', 3
UNION ALL
SELECT 3, 'Franklin', 3
UNION ALL
SELECT 4, 'Mendez', Null
UNION ALL
SELECT 5, 'Minaya',2
UNION ALL
SELECT 7, 'Ronny',2


SELECT * FROM @Empleados

Listar el Numero de Registros Que Contiene una Tabla en SQL

Creo que a todos los programadores alguna vez han necesitado en algun programa listar el numero de registros que contiene una tabla en especifico, a mi me toco hacer algo similar, y fue desarrollar una rutina que me contara el numero de filas o registros que tenia en cada tabla, para esto, utilice las vistas predeterminadas de SQL Server que nos brindan toda esta informacion rapidamente.

Aqui les dejo las Imagenes de como funcionaria el Query...




Aqui el Codigo que Utilice en mi Consulta:

SELECT 
sc.name + '.' + tbl.name AS 'NOMBRE DE LA TABLA',
SUM(par.rows) AS 'NUMERO DE REGISTROS'
FROM 
sys.tables tbl
INNER JOIN 
sys.partitions par
ON 
par.OBJECT_ID = tbl.OBJECT_ID
INNER JOIN 
sys.schemas sc
ON 
tbl.SCHEMA_ID = sc.SCHEMA_ID
WHERE 
tbl.is_ms_shipped = 0 
AND 
par.index_id IN (1,0)
GROUP BY 
sc.name, 
tbl.name
ORDER BY 
SUM(par.rows) DESC

Borrar Todos Los Objectos de una Base de Datos

Hace un tiempo estaba desarrollando unos proyectos utilizando Hosting de Terceros (Godaddy, Brinkster, Etc.) los cuales utilizaba sus Bases de Datos, y siempre tenia un problema, a la hora de subir un proyecto, pues tenia que eliminar todos los objetos de la base de datos utilizada, para volverlos a crear con los nuevos cambios, ya que ellos no te permiten restaurar un Backup directamente en sus servidores, esto es por medida de seguridad.

Con este problema, decidi crearme un metodo que me eliminara todos los Objectos que yo tenia creado en mi base de datos, aqui les dejo el codigo de ejemplo, con el cual solucione el problema!...


declare @n char(1)
set @n = char(10)

declare @stmt nvarchar(max)

-- procedimientos almacenados
select @stmt = isnull( @stmt + @n, '' ) +
    'drop procedure [' + name + ']'
from sys.procedures

-- constraints (Restricciones)
select @stmt = isnull( @stmt + @n, '' ) +
    'alter table [' + object_name( parent_object_id ) + '] drop constraint [' + name + ']'
from sys.check_constraints

-- funciones
select @stmt = isnull( @stmt + @n, '' ) +
    'drop function [' + name + ']'
from sys.objects
where type in ( 'FN', 'IF', 'TF' )

-- vistas
select @stmt = isnull( @stmt + @n, '' ) +
    'drop view [' + name + ']'
from sys.views

-- llaves primarias
select @stmt = isnull( @stmt + @n, '' ) +
    'alter table [' + object_name( parent_object_id ) + '] drop constraint [' + name + ']'
from sys.foreign_keys

-- tablas
select @stmt = isnull( @stmt + @n, '' ) +
    'drop table [' + name + ']'
from sys.tables

-- tipos definidos por el usuario
select @stmt = isnull( @stmt + @n, '' ) +
    'drop type [' + name + ']'
from sys.types
where is_user_defined = 1

exec sp_executesql @stmt

Bienvenidos!...

Despues de un buen tiempo retirado de lo que es la colaboracion que brindo en algunos foros de bastante transendencia a nivel internacional, he decidido sacar algo de tiempo para escribirle a todas las personas que de una manera u otra aprecian y le sacan tiempo para leer cada uno de los articulos que escribimos por cualquier medio electronico.

Quiero decirles que vengo más agresivo en cuanto a los temas de interes general, no tan solo en la parte de la programacion web, sino ahora a nivel general, ya que como saben, tengo un amplio dominio de la programacion orientada a objetos, y esto me ha permitido explotar otros medios de programacion.

Estaremos viendo todo lo concerniente a las tecnologias Microsoft principalmente, aunque tambien tocaremos topicos generales y brindaremos respuestas a las preguntas y comentarios realizados por nuestros visitantes, .NET & SQL Server seran nuestros topicos fuertes, por lo cual siempre esperen ricos articulos en los cuales podran disfrutar de todo lo nuevo en el mundo de la programacion y desarrollo.

Gracias Por Seguirnos,
Omar Frometa