Mostrando entradas con la etiqueta SQL. Mostrar todas las entradas
Mostrando entradas con la etiqueta SQL. Mostrar todas las entradas

sábado, 20 de noviembre de 2010

Obtener el tamaño de todas las tablas de una base de datos en SQL Server

DECLARE @TableName VARCHAR(100)    --For storing values in the cursor

--Cursor to get the name of all user tables from the sysobjects listing
DECLARE tableCursor CURSOR
FOR
select [name]
from dbo.sysobjects
where  OBJECTPROPERTY(id, N'IsUserTable') = 1
FOR READ ONLY

--A procedure level temp table to store the results
CREATE TABLE #TempTable
(
    tableName varchar(100),
    numberofRows varchar(100),
    reservedSize varchar(50),
    dataSize varchar(50),
    indexSize varchar(50),
    unusedSize varchar(50)
)

--Open the cursor
OPEN tableCursor

--Get the first table name from the cursor
FETCH NEXT FROM tableCursor INTO @TableName

--Loop until the cursor was not able to fetch
WHILE (@@Fetch_Status >= 0)
BEGIN
    --Dump the results of the sp_spaceused query to the temp table
    INSERT  #TempTable
        EXEC sp_spaceused @TableName

    --Get the next table name
    FETCH NEXT FROM tableCursor INTO @TableName
END

--Get rid of the cursor
CLOSE tableCursor
DEALLOCATE tableCursor

--Select all records so we can use the reults
SELECT *
FROM #TempTable
ORDER BY tableName ASC
--Final cleanup!
DROP TABLE #TempTable

GO

viernes, 19 de noviembre de 2010

Buscar en el contenido de un stored procedure

SELECT Name,OBJECT_DEFINITION(OBJECT_ID) AS Code
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%cadena_de_busqueda%'

miércoles, 17 de noviembre de 2010

Obtener stored procedures modificados en los ultimos n dias.

Ejemplo para 7 dias:
SELECT name,modify_date
FROM sys.objects
WHERE type = 'P'
AND DATEDIFF(D,modify_date, GETDATE()) < 7
ORDER BY modify_date DESC

sábado, 23 de octubre de 2010

Creando o modificando datos con SQLite

SQLite posee un comando que permite en una sola sentencia crear o modificar datos de una tabla, con la condición que posea una clave primaria o indice único (esto ultimo lo tengo que verificar)
Ejemplo:

var parameters = new List<sqliteparameter>
    {
    new SQLiteParameter("campo1", "valorCampo1"),
    new SQLiteParameter("campo2", "valorCampo2"),
    new SQLiteParameter("campo3", "valorCampo3"),
    new SQLiteParameter("campo4", "valorCampo4"),
    new SQLiteParameter("campo5", "valorCampo5"),
    new SQLiteParameter("Fecha", DateTime.Now)
    };
var query = new StringBuilder();
query.AppendLine("INSERT OR REPLACE INTO ");
query.AppendLine("Tabla(campo1,campo2,campo3,campo4,campo5,Fecha) ");
query.AppendLine("VALUES(@campo1,@campo2,@campo3,@campo4,@campo5,@Fecha)");
return query.ToString();

viernes, 2 de octubre de 2009

Desactivando constraints SQL Server

Desactivar todas las Constraints
exec sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'

Desactivar todos los Triggers
exec sp_MSforeachtable 'ALTER TABLE ? DISABLE TRIGGER ALL'

Activar todas las Constraints soo
exec sp_MSforeachtable 'ALTER TABLE ? CHECK CONSTRAINT ALL'

Activar todos los Triggers
exec sp_MSforeachtable 'ALTER TABLE ? ENABLE TRIGGER ALL'

Esto es util para limpiar el contenido una base de datos, evitando que sql server valide las claves foraneas, ejecute triggers al eliminar registros, etc. Ideal para entornos de desarrollo o migracion, no recomendado para entornos en produccion.

Fuente: Foro SQL Server Magazine

viernes, 29 de mayo de 2009

Como poner en cero la parte de hora de una variable o columna en SQL Server

DATEADD(dd, 0, DATEDIFF(dd, 0, **FECHA**))
Da como resultado:
SELECT GETDATE()
2009-05-29 16:07:18.373
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
2009-05-29 00:00:00.000
Probado en SQL Server 2005