Category / Base de Datos

T-SQL: Eliminar todas las tablas de una base de datos

By Juan Carlos Heredia Mayer 01/09/2013 Base de Datos

¿Habéis necesitado alguna vez borrar todas las tablas de una base de datos en SQL Server?. Parece una tarea sencilla, pero si las tablas tienen relaciones entre ellas, reglas de integridad referencial, desencadenadores, etc., la cosa se complica.

Aquí un script con el que se puede hacer:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

sp_MSforeachtable,  es un procedimiento almacenado oculto in SQL Server, el cuál se ejecuta por cada tabla que hay en la base de datos activa. Hay que tener en cuenta que esa operación no se puede deshacer, así que hay que estar seguro de lo que se quiere hacer.

Si hay problemas con el comando anterior es porque seguramente hay reglas de integridad entre las tablas y por eso no las puede borrar. En ese caso lo mejor es hacer mejor lo siguiente:

-- Primero desabilitar la integridad referencial 
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' 
GO

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

-- Ahora volver a habilitar la integridad referencial
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL' 
GO

Sql ServerAunque aparentemente volver a habilitar la integridad referencial no tiene sentido, porque la base de datos se queda sin tablas, es recomendable reactivarla para que su funcionamiento sea normal en adelante.

#SQL Server#Trucos

Máquina virtual de Visual Studio 2013

By Juan Carlos Heredia Mayer 29/08/2013 Base de Datos

Si sigues mi blog, sabrás que soy un gran fan de las máquinas virtuales de  Visual Studio y Team Foundation Server Brian Keller. Personalmente las uso para hacer pruebas y comprobar las novedades que traen las diferentes versiones, así como también aprender nuevas técnicas y metodologías. A principios de este mes Brian anunció la disponibilidad de la última máquina virtual: “Visual Studio 2013 Application Lifecycle Management Máquina Virtual y Hands-on-Labs / Scripts Demo”.

Puedes (y deberías) leer las instrucciones para descargar la máquina virtual aquí: http://bit.ly/18mYSrc

Visual Studio 2013

#ALM#Máquinas Virtuales#Visual Studio#VS2013

T-SQL: Obtener la clave primaria de una Tabla

By Juan Carlos Heredia Mayer 21/05/2013 Base de Datos

Imaginémonos el siguiente caso en el SQL Server. Sabemos el nombre de la tabla y queremos conseguir la columna o columnas que forman la clave primaria mediante T-SQL.

Esto es posible hacerlo utilizando las siguientes tablas del sistema:

  • sysobjects – para todos los objetos de la base de datos.
  • sysindexkeys – Para los índices y las claves.
  •  syscolumns – Para las columnas de las tablas.

La sentencia T-SQL sería así:

DECLARE @table_name nvarchar(20)
SET @table_name = 'aspnet_Membership'

SELECT [name]
FROM syscolumns 
WHERE [id] IN (
    SELECT [id] FROM sysobjects 
    WHERE [name] = @table_name )
    AND colid IN (
    SELECT SIK.colid 
    FROM sysindexkeys SIK JOIN sysobjects SO ON SIK.[id] = SO.[id]
    WHERE SIK.indid = 1 AND SO.[name] = @table_name )

Para probarlo basta con cambiar el nombre de la varia @table_name por el nombre de la tabla de la que queremos obtener la clave primaria.

#SQL Server#Trucos