Con este script se pueden habilitar o deshabilitar todos los triggers de la Base de Datos que se encuentre seleccionada.
DECLARE @cTgName VARCHAR(50)
DECLARE @cTableName VARCHAR(50)
SET NOCOUNT ON;
DECLARE Cur_TG CURSOR LOCAL FORWARD_ONLY FOR
SELECT (SCH.NAME + '.' + STG.NAME) AS TG_NAME, (SCH.NAME + '.' + SAO.NAME) AS TABLE_NAME
FROM SYS.TRIGGERS STG,
SYS.ALL_OBJECTS AS SAO,
SYS.SCHEMAS AS SCH
WHERE STG.PARENT_ID = SAO.OBJECT_ID
AND SAO.SCHEMA_ID = SCH.SCHEMA_ID
OPEN Cur_TG
FETCH Cur_TG INTO @cTgName, @cTableName
WHILE (@@FETCH_STATUS = 0)
BEGIN
BEGIN TRY
-- Para Habilitar
EXEC ('ENABLE TRIGGER ' + @cTgName + ' ON ' + @cTableName)
-- Para Deshabilitar
EXEC ('DISABLE TRIGGER ' + @cTgName + ' ON ' + @cTableName)
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE()
END CATCH
FETCH Cur_TG INTO @cTgName, @cTableName
END -- Fin del bucle WHILE
CLOSE Cur_TG
DEALLOCATE Cur_TG
miércoles, 16 de mayo de 2012
Habilitar o Deshabilitar Llaves Foráneas en SQL Server
Con este script se habilitan o deshabilitan todos los foreing keys de la Base de Datos que se tenga seleccionada.
DECLARE @cFKName VARCHAR(50)
DECLARE @cTableName VARCHAR(50)
SET NOCOUNT ON;
DECLARE Cur_FK CURSOR LOCAL FORWARD_ONLY FOR
SELECT SFK.NAME AS FK_NAME, (SCH.NAME + '.' + SAO1.NAME) AS TABLE_NAME
FROM SYS.FOREIGN_KEYS AS SFK,
SYS.SCHEMAS AS SCH,
SYS.ALL_OBJECTS AS SAO1
WHERE SFK.SCHEMA_ID = SCH.SCHEMA_ID
AND SFK.PARENT_OBJECT_ID = SAO1.OBJECT_ID
OPEN Cur_FK
FETCH Cur_FK INTO @cFKName, @cTableName
WHILE (@@FETCH_STATUS = 0)
BEGIN
BEGIN TRY
-- Para Habilitar
EXEC ('ALTER TABLE ' + @cTableName + ' CHECK CONSTRAINT ' + @cFKName)
-- Para Deshabilitar
EXEC ('ALTER TABLE ' + @cTableName + ' NOCHECK CONSTRAINT ' + @cFKName)
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE()
END CATCH
FETCH Cur_FK INTO @cFKName, @cTableName
END -- Fin del bucle WHILE
CLOSE Cur_FK
DEALLOCATE Cur_FK
DECLARE @cFKName VARCHAR(50)
DECLARE @cTableName VARCHAR(50)
SET NOCOUNT ON;
DECLARE Cur_FK CURSOR LOCAL FORWARD_ONLY FOR
SELECT SFK.NAME AS FK_NAME, (SCH.NAME + '.' + SAO1.NAME) AS TABLE_NAME
FROM SYS.FOREIGN_KEYS AS SFK,
SYS.SCHEMAS AS SCH,
SYS.ALL_OBJECTS AS SAO1
WHERE SFK.SCHEMA_ID = SCH.SCHEMA_ID
AND SFK.PARENT_OBJECT_ID = SAO1.OBJECT_ID
OPEN Cur_FK
FETCH Cur_FK INTO @cFKName, @cTableName
WHILE (@@FETCH_STATUS = 0)
BEGIN
BEGIN TRY
-- Para Habilitar
EXEC ('ALTER TABLE ' + @cTableName + ' CHECK CONSTRAINT ' + @cFKName)
-- Para Deshabilitar
EXEC ('ALTER TABLE ' + @cTableName + ' NOCHECK CONSTRAINT ' + @cFKName)
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE()
END CATCH
FETCH Cur_FK INTO @cFKName, @cTableName
END -- Fin del bucle WHILE
CLOSE Cur_FK
DEALLOCATE Cur_FK
lunes, 9 de abril de 2012
Generar Archivos CSV con Progress
Para generar archivos CSV con Progress, se utiliza la instruccion EXPORT. Enseguida un ejemplo:
OUTPUT TO C:\REPORTES\PREDIO.CSV.
FOR EACH PREDIO NO-LOCK WHERE NUM-RUTA > 0 AND NUM-RUTA < 999:
EXPORT DELIMITER "," NUM-CUENTA DIRECC-ORIGINAL GIRO-USUARIO TIPO-USUARIO.
END.
OUTPUT CLOSE.
OUTPUT TO C:\REPORTES\PREDIO.CSV.
FOR EACH PREDIO NO-LOCK WHERE NUM-RUTA > 0 AND NUM-RUTA < 999:
EXPORT DELIMITER "," NUM-CUENTA DIRECC-ORIGINAL GIRO-USUARIO TIPO-USUARIO.
END.
OUTPUT CLOSE.
lunes, 2 de abril de 2012
Conectando Progress con ODBC
Para conectarnos a Progress mediante ODBC tenemos que instalar el driver primeramente, éste viene incluido en la suite de Progress DB y tambien tenemos que tener el servicio de BD escuchando en algun puerto conocido.
Despues ejecutaremos en Administrador de Conexiones ODBC, con el comando odbcad32 y configuraremos nuestra conexión de la siguiente manera:
Es importante usar el usuario sysprogress que originalmente no tiene password. Ahora para conectarnos a la BD lo podemos hacer desde cualquier cliente odbc; yo particularmente uso uno que se llama SQLDBX (http://www.sqldbx.com/).
Ahora ya teniendo la conexión podemos ver los usuarios de la BD con el siguiente query:
select "_userid", "_password", "_user-name" from pub."_user"
Para ver las tablas que contiene la BD podemos ejecutar el siguiente query:
SELECT * FROM sysprogress.SYSTABLES WHERE TBLTYPE = 'T'
Para ver el contenido de alguna tabla podemos ejecutar un query de la siguiente manera:
SELECT * FROM PUB.BENEFITS
Es importante siempre utilizar el esquema PUB, ya que de no hacerlo los queries no funcionarán.
Para crear un usuario nuevo podemos ejecutar la siguiente secuencia de queries:
create user 'sa','password';
grant dba to 'sa';
Una vez que creamos el usuario, automáticamente el usuario sysprogress ya no funciona para la conexión ODBC.
Despues ejecutaremos en Administrador de Conexiones ODBC, con el comando odbcad32 y configuraremos nuestra conexión de la siguiente manera:
Es importante usar el usuario sysprogress que originalmente no tiene password. Ahora para conectarnos a la BD lo podemos hacer desde cualquier cliente odbc; yo particularmente uso uno que se llama SQLDBX (http://www.sqldbx.com/).
Ahora ya teniendo la conexión podemos ver los usuarios de la BD con el siguiente query:
select "_userid", "_password", "_user-name" from pub."_user"
Para ver las tablas que contiene la BD podemos ejecutar el siguiente query:
SELECT * FROM sysprogress.SYSTABLES WHERE TBLTYPE = 'T'
Para ver el contenido de alguna tabla podemos ejecutar un query de la siguiente manera:
SELECT * FROM PUB.BENEFITS
Es importante siempre utilizar el esquema PUB, ya que de no hacerlo los queries no funcionarán.
Para crear un usuario nuevo podemos ejecutar la siguiente secuencia de queries:
create user 'sa','password';
grant dba to 'sa';
Una vez que creamos el usuario, automáticamente el usuario sysprogress ya no funciona para la conexión ODBC.
Arrancar y Detener Servicio de BD de Progress
Para arrancar el servicio de Progress DB ejecutaremos el siguiente comando, de preferencia debemos hacerlo con permisos de Administrador.
SET WRKDIR=C:\Progress\WRK
cd C:\Progress\dlc91c\bin
proserve.bat C:/DATA/sports2000/sports2000.db -S 2525 -N TCP -L 300000
Donde 2525 es el puerto en que escuchar el servidor de BD.
Para detener el servicio podemos ejecutar el siguiente comando.
cd C:\Progress\dlc91c\bin
proshut.bat C:/DATA/sports2000/sports2000.db
SET WRKDIR=C:\Progress\WRK
cd C:\Progress\dlc91c\bin
proserve.bat C:/DATA/sports2000/sports2000.db -S 2525 -N TCP -L 300000
Donde 2525 es el puerto en que escuchar el servidor de BD.
Para detener el servicio podemos ejecutar el siguiente comando.
cd C:\Progress\dlc91c\bin
proshut.bat C:/DATA/sports2000/sports2000.db
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.
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.
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.
Suscribirse a:
Entradas (Atom)
