miércoles, 28 de marzo de 2012

¿Cómo saber si existe una tabla en la BD?

¿Cómo saber si existe una tabla en nuestra BD? Podemos crear y usar la sig función.

Para mandar llamar la funcion

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION [dbo].[existeTabla]
(
    @cTableName VARCHAR(255)
)
RETURNS BIT
AS
BEGIN
    DECLARE @nReturn BIT
    SET @nReturn = 0

    IF (SELECT COUNT(*) FROM SYS.OBJECTS
        WHERE TYPE = 'U' AND UPPER(NAME) = UPPER(@cTableName)) > 0 BEGIN
        SET @nReturn = 1
    END
   
    RETURN @nReturn
END

Para mandar llamar la funcion podemos usar el siguiente query:
SELECT [dbo].[existeTabla] ('TABLA_A_BUSCAR')

Si el resultado es 1 la tabla existe, en caso contrario no existe.


viernes, 16 de marzo de 2012

Crear Indices en Tablas Temporales

Para crear indices en tablas temporales, se puede utilizar el siguiente código.

CREATE TABLE #t1 (a int, b int)
GO
CREATE CLUSTERED INDEX Idx1 ON #t1(b)
CREATE UNIQUE NONCLUSTERED INDEX Idx2 ON #t1(a)
GO
INSERT INTO #t1 VALUES ('1', '0')
GO
DROP TABLE #t1


Nota: En Variables Tabla no se pueden crear índices.

jueves, 8 de marzo de 2012

Buscar una Cadena de Texto en SPs y Funciones

Muchas veces pasa que cambiamos el nombre a alguna tabla, sp, función, etc. Y luego no sabemos en que códigos tenemos ese objeto que modificamos. Para poder sacar donde tenemos ese objeto modificado podemos ejecutar el siguiente query.

SELECT (SELECT TOP 1 NAME FROM sys.schemas WHERE schema_id = ALL_OBJECTS.schema_id) AS ESQUEMA, * 
FROM SYS.ALL_OBJECTS 
WHERE OBJECT_ID IN (SELECT ID FROM syscomments WHERE CTEXT LIKE '%Objeto_a_buscar%') 
ORDER BY SCHEMA_ID

Donde Objeto_a_buscar es la tabla, sp o funcion que deseamos buscar.

Salu2

lunes, 5 de marzo de 2012

Reindexar BD en SQL Server

Script para todas las tablas de una BD de SQL Server ...

DECLARE @cTableName VARCHAR(MAX)

SET NOCOUNT ON;

DECLARE Cur_Tablas CURSOR LOCAL FORWARD_ONLY FOR
SELECT ESQUEMAS.NAME + '.' + TABLAS.NAME AS TABLA
FROM SYS.OBJECTS TABLAS
,SYS.SCHEMAS ESQUEMAS
WHERE TABLAS.TYPE = 'U'
AND ESQUEMAS.SCHEMA_ID = TABLAS.SCHEMA_ID
ORDER BY ESQUEMAS.NAME, TABLAS.NAME

OPEN Cur_Tablas
FETCH Cur_Tablas INTO @cTableName

WHILE (@@FETCH_STATUS = 0)
BEGIN

BEGIN TRY
EXEC ('DBCC DBREINDEX ("' + @cTableName + '"," ", 70)')
PRINT @cTableName
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE()
END CATCH

FETCH Cur_Tablas INTO @cTableName

END -- Fin del bucle WHILE

CLOSE Cur_Tablas
DEALLOCATE Cur_Tablas

jueves, 1 de marzo de 2012

Respaldos en SQL Server

Sp para realizar respaldos.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_Backup]
AS
BEGIN
declare @cPrefijo varchar(10), @cRutaBak varchar(250)
select @cPrefijo ='BD_', @cRutaBak ='C:\Backups\'

declare @cNameBak varchar(80), @cNameResp varchar(80)
select @cNameBak = @cPrefijo+dbo.dtos(getdate())+'-'+replace(str(datepart(hh,getdate()),2)+str(datepart(mi,getdate()),2),' ','0')+'.BAK'
select @cNameResp = @cRutaBak + @cNameBak

BACKUP DATABASE [BD] TO DISK = @cNameResp
WITH COMPRESSION, NOFORMAT, NOINIT,
NAME = N'BD-Full Database Backup',
SKIP, NOREWIND, NOUNLOAD, STATS = 10
END

Para mandarlo llamar:

EXECUTE [dbo].[usp_Backup]

Liberar Memoria en SQL Server

Sp para Liberar Memoria sin necesidad de reiniciar el Servicio ...

GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[usp_LiberarMem]
AS
BEGIN
EXEC sp_configure 'show advanced options', 1;
--GO
EXEC sys.sp_configure N'max server memory (MB)', N'1024'
--GO
RECONFIGURE WITH OVERRIDE
--GO
CHECKPOINT
--GO

WAITFOR DELAY '00:00:30'
EXEC sp_configure 'show advanced options', 1;
--GO
EXEC sys.sp_configure N'max server memory (MB)', N'8192'
--GO
RECONFIGURE WITH OVERRIDE
--GO
END

Para ejecutarlo:

EXECUTE [dbo].[usp_LiberarMem]

lunes, 16 de enero de 2012

Un Mediodía Triste

“Un mediodía triste, viendo el lomo gris del metro
aplanando la banqueta,
mientras derrite el asfalto un sol blanco y voraz”.

“Pasan los delfines como almas en pena,
consortes de la muerte que se sube al mundo sin pagar boleto.
El viento aúlla canciones flacas.
Gente hay una peste, como esperando a Cristo.
Cristo está sentado seguramente
en la tercera fila de un burlesque”.

Hay un bar pequeño,
con la esquina verde,
afuera dormita un organillero.
Tiene espesas cejas
y babea alcohol:
lo cubre la sombra de un ángel bluesero.

Poco movimiento,
es temprana hora.
La ciudad no muestra su cara granosa,
supurante y roja,
sus pelos al pecho,
ni su carne floja.

“La tarde se sienta en el centro viejo,
se baja las medias corridas y sucias,
menea sus pestañas de mujer nocturna
y deja caer la noche al abrir las piernas”.

“Podrías morir de una enfermedad que usa placa y corriente eléctrica,
o sumergido en una plácida niebla de opio,
o montado en las cálidas carnes de una mujer fenicia.
Podrías morir un día cualquiera,
la hora poco importa,
¡son tiempos obscuros,
escucha atento a las sirenas!”.

De una madriguera
surge la pandilla,
por usar espuelas todos son buscados.
Como la marea
de un mar iracundo,
van cubriendo tramos de calles ajenas.
Embarran los muros
de pintura roja;
hay una emoción que fricciona el aire.
Aún no crecen flores en el pavimento.
La ciudad se ha vuelto una novia amarga.

Tengo tres preguntas,
responda el primero:
¿quién mató la noche?,
¿quién abrió la puerta?,
¿descifró este sueño
y se ocultó en el alba?

José Cruz Camargo