Estoy usando sql-server 2005. Inicialmente, con fines de aprendizaje, creé muchas tablas ahora quiero eliminar todas esas tablas, excepto una que es actualmente estoy trabajando en. ¿Hay algún código o consulta con el que pueda eliminar todas las tablas de esa base de datos, excepto esa tabla útil? Una forma de hacerlo es copiar esa tabla en una nueva base de datos usando la cláusula SELECT INTO...
y soltar esa base de datos, pero no sé si esta es una buena manera de resolver este problema.Cómo colocar todas las tablas de una base de datos en SQL Server 2005 en una declaración, excepto una tabla
Respuesta
Si las tablas no son muy grandes, probablemente las haya seleccionado todas en la ventana "Detalles del explorador de objetos" en SSMS y luego pulse eliminar.
Para una solución de programación se puede utilizar
EXEC sys.sp_MSforeachtable
N'IF OBJECT_ID(''?'') <> OBJECT_ID(''dbo.YourTableToKeep'')
DROP TABLE ?
'
Ambos métodos pueden necesitar distintas ejecuciones con el fin de eliminar todas las tablas implicadas en las relaciones FK (una tabla no se puede eliminar si otra mesa tiene una FK referencia a ella).
Para elaborar un poco sobre la solución de la interfaz de usuario: F7 es el método abreviado de teclado Detalles del explorador de objetos. No puede seleccionar objetos múltiples en la vista de árbol del explorador de objetos, pero puede seleccionar el nodo Tablas en la vista de árbol y presionar F7 para mostrar los detalles del Explorador de objetos. –
Puede usar sql para crear todas las estaciones de cambios que necesite. Por ejemplo, la siguiente consulta sql
USE [MyDatabase];
GO
SELECT
replace(
replace('DROP TABLE [{Schema}].[{TableName}];'
,'{Schema}',TABLE_SCHEMA)
,'{TableName}',TABLE_NAME)
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_NAME NOT IN ('TableNameOne','TableNameTwo')
y obtener el resultado al ejecutar la consulta.
Copie la primera columna de la consulta y péguelo en una nueva ventana de consulta.
Es fácil ver, que se obtiene una lista de staments de caída para todas las tablas excepto 'TableNameOne' y 'TableNameTwo', ...
Im piensan que es muy sencilla ...
/* Drop all Foreign Key constraints */
DECLARE @name VARCHAR(128)
DECLARE @constraint VARCHAR(254)
DECLARE @SQL VARCHAR(254)
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME)
WHILE @name is not null
BEGIN
SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
WHILE @constraint IS NOT NULL
BEGIN
SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint) +']'
EXEC (@SQL)
PRINT 'Dropped FK Constraint: ' + @constraint + ' on ' + @name
SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
END
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME)
END
GO
/* Drop all Primary Key constraints */
DECLARE @name VARCHAR(128)
DECLARE @constraint VARCHAR(254)
DECLARE @SQL VARCHAR(254)
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)
WHILE @name IS NOT NULL
BEGIN
SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
WHILE @constraint is not null
BEGIN
SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint)+']'
EXEC (@SQL)
PRINT 'Dropped PK Constraint: ' + @constraint + ' on ' + @name
SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
END
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)
END
GO
/* Drop all tables */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)
SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 ORDER BY [name])
WHILE @name IS NOT NULL
BEGIN
SELECT @SQL = 'DROP TABLE [dbo].[' + RTRIM(@name) +']'
EXEC (@SQL)
PRINT 'Dropped Table: ' + @name
SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 AND [name] > @name ORDER BY [name])
END
GO
esto lo sirve! Gracias – ben
- 1. Consulta SQL para mostrar todas las vistas en una base de datos de SQL Server 2005
- 2. Múltiples idiomas en una base de datos - SQL Server 2005
- 3. ¿Cómo contar cada registro en cada tabla en una base de datos de SQL Server 2005?
- 4. Listar todas las tablas en una base de datos
- 5. Buscar todas las columnas de un cierto tipo en todas las tablas en una base de datos SQL Server
- 6. Cambios de seguimiento en una base de datos de SQL Server 2005
- 7. ¿Cómo colocar todas las tablas en la base de datos sin soltar la base de datos?
- 8. Cómo colocar una lista de tablas de SQL Server, ignorando las restricciones?
- 9. crear tabla desde otra tabla en una base de datos diferente en el servidor sql 2005
- 10. cómo enumerar todos los objetos de una base de datos en particular en SQL Server 2005
- 11. Lista de todas las tablas en la base de datos
- 12. Cómo actualizar los datos en una tabla desde los datos correspondientes en otra tabla en SQL Server 2005
- 13. ¿Cómo puedo listar todas las tablas en una base de datos con Squirrel SQL?
- 14. Mover una tabla de una base de datos a otra base de datos SQL Server
- 15. Copiar datos de una tabla en una base de datos a otra base de datos separada
- 16. ¿Cómo creo una base de datos programáticamente en SQL Server?
- 17. Copie tablas de una base de datos a otra en SQL Server
- 18. ¿Es útil agregar una máscara de bits a todas las tablas en una base de datos?
- 19. Obtenga todas las tablas y todas las columnas de una base de datos odbc
- 20. SQL: cuente el número de columnas en todas las tablas, excepto las vistas
- 21. ¿Cómo puedo ver todas las concesiones para una base de datos SQL?
- 22. Cómo colocar todas las tablas de la base de datos con manage.py CLI en Django?
- 23. ¿Cómo restauro una sola tabla de una copia de seguridad de SQL Server 2005?
- 24. Exportar todas las tablas de SQL Server a archivos separados
- 25. Cómo generar DDL para todas las tablas en una base de datos en MySQL
- 26. ¿Cómo se puede saber qué tablas ocupan más espacio en una base de datos de SQL Server 2005?
- 27. ¿Está registrando TODAS las consultas en una base de datos de SQL Server 2008 Express?
- 28. ¿Cómo establecer el esquema predeterminado de una base de datos en SQL Server 2005?
- 29. Buscar una tabla en múltiples bases de datos SQL SERVER 2005
- 30. SQL Server copia todas las filas de una tabla a otra, es decir, una tabla duplicada
Si las tablas no son muy grandes, probablemente las seleccione todas en la ventana "Detalles del explorador de objetos" en SSMS y luego presione eliminar. –
Gracias @MartinSmith esta es una buena manera, pero ¿hay alguna manera con la que pueda hacer lo mismo usando sentencias? – Manish